From b121d712c3d591fbbf64c389d6e2087472932e66 Mon Sep 17 00:00:00 2001 From: Anna Antipina Date: Tue, 11 Oct 2022 12:56:30 +0300 Subject: [PATCH] Add test for accumulator after deoptimization Signed-off-by: Anna Antipina --- tests/checked/CMakeLists.txt | 4 ++++ tests/checked/acc_after_deopt.js | 31 +++++++++++++++++++++++++++++++ 2 files changed, 35 insertions(+) create mode 100644 tests/checked/acc_after_deopt.js diff --git a/tests/checked/CMakeLists.txt b/tests/checked/CMakeLists.txt index 73ab5a00d..63f9e3c5d 100644 --- a/tests/checked/CMakeLists.txt +++ b/tests/checked/CMakeLists.txt @@ -95,4 +95,8 @@ if (NOT PANDA_TARGET_ARM32) if (PANDA_ENABLE_BYTECODE_PROFILING) panda_add_checked_test_ecma(FILE ${CMAKE_CURRENT_SOURCE_DIR}/ecma_profiling.js SUPPORT_RELEASE true) endif() + # there is flaky bug when turning on TSAN + if (NOT PANDA_ENABLE_THREAD_SANITIZER) + panda_add_checked_test_ecma(FILE ${CMAKE_CURRENT_SOURCE_DIR}/acc_after_deopt.js SUPPORT_RELEASE true) + endif() endif() diff --git a/tests/checked/acc_after_deopt.js b/tests/checked/acc_after_deopt.js new file mode 100644 index 000000000..5e8d89821 --- /dev/null +++ b/tests/checked/acc_after_deopt.js @@ -0,0 +1,31 @@ +/* + * Copyright (c) 2021-2022 Huawei Device Co., Ltd. + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +//! CHECKER Test accumulator value after deoptimization +//! RUN options: "--interpreter-type=irtoc --compiler-profiling-threshold=100001 --compiler-regex='_GLOBAL::test_acc'", entry: "_GLOBAL::func_main_0" + +//! EVENT /Compilation,_GLOBAL::test_acc +//! EVENT /Deoptimization,_GLOBAL::func_test_acc_1 + +function test_acc() { + var a = new Number(42); + if (a != 42) { + throw "invalid value: " + a + } +} + +for (var i = 0; i < 100000; ++i) { + test_acc() +} -- Gitee