summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/compiler/fast-api-helpers.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/compiler/fast-api-helpers.js')
-rw-r--r--deps/v8/test/mjsunit/compiler/fast-api-helpers.js36
1 files changed, 36 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/compiler/fast-api-helpers.js b/deps/v8/test/mjsunit/compiler/fast-api-helpers.js
new file mode 100644
index 0000000000..587cfbc539
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/fast-api-helpers.js
@@ -0,0 +1,36 @@
+// Copyright 2021 the V8 project authors. All rights reserved.
+// Use of this source code is governed by a BSD-style license that can be
+// found in the LICENSE file.
+
+// Flags: --turbo-fast-api-calls --allow-natives-syntax --opt
+
+// Helper for sequence tests.
+function optimize_and_check(func, fast_count, slow_count, expected) {
+ %PrepareFunctionForOptimization(func);
+ let result = func();
+ assertEqualsDelta(expected, result, 0.001);
+
+ fast_c_api.reset_counts();
+ %OptimizeFunctionOnNextCall(func);
+ result = func();
+ assertEqualsDelta(expected, result, 0.001);
+ assertOptimized(func);
+ assertEquals(fast_count, fast_c_api.fast_call_count());
+ assertEquals(slow_count, fast_c_api.slow_call_count());
+}
+
+function ExpectFastCall(func, expected) {
+ optimize_and_check(func, 1, 0, expected);
+}
+
+function ExpectSlowCall(func, expected) {
+ optimize_and_check(func, 0, 1, expected);
+}
+
+function assert_throws_and_optimized(func, arg) {
+ fast_c_api.reset_counts();
+ assertThrows(() => func(arg));
+ assertOptimized(func);
+ assertEquals(0, fast_c_api.fast_call_count());
+ assertEquals(1, fast_c_api.slow_call_count());
+}