summaryrefslogtreecommitdiff
path: root/deps/v8/test/mjsunit/compiler/lazy-deopt-async-function-resolve.js
diff options
context:
space:
mode:
Diffstat (limited to 'deps/v8/test/mjsunit/compiler/lazy-deopt-async-function-resolve.js')
-rw-r--r--deps/v8/test/mjsunit/compiler/lazy-deopt-async-function-resolve.js27
1 files changed, 27 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/compiler/lazy-deopt-async-function-resolve.js b/deps/v8/test/mjsunit/compiler/lazy-deopt-async-function-resolve.js
new file mode 100644
index 0000000000..faa5e63239
--- /dev/null
+++ b/deps/v8/test/mjsunit/compiler/lazy-deopt-async-function-resolve.js
@@ -0,0 +1,27 @@
+// Copyright 2018 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: --allow-natives-syntax
+
+// Test that the lazy deoptimization point for JSAsyncFunctionResolve
+// works correctly, aka that we return the promise and not the result
+// of the JSResolvePromise operation.
+(function() {
+ async function foo(x) {
+ return x;
+ }
+
+ assertPromiseResult((async () => {
+ await foo(1);
+ await foo(2);
+ %OptimizeFunctionOnNextCall(foo);
+ const p = new Proxy({}, {
+ get(...args) {
+ %DeoptimizeFunction(foo);
+ return Reflect.get(...args);
+ }
+ });
+ assertEquals(p, await foo(p));
+ })());
+})();