Index: test/mjsunit/regress/regress-608630.js |
diff --git a/test/mjsunit/regress/regress-608630.js b/test/mjsunit/regress/regress-608630.js |
new file mode 100644 |
index 0000000000000000000000000000000000000000..a0f3c432f74b51eaf67f953baaf838e0236862b5 |
--- /dev/null |
+++ b/test/mjsunit/regress/regress-608630.js |
@@ -0,0 +1,69 @@ |
+// Copyright 2016 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: --expose-wasm |
+ |
+var __v_5 = {}; |
+var __v_35 = {}; |
+var __v_44 = {}; |
+var __v_43 = {}; |
+ |
+try { |
+__v_1 = 1; |
+__v_2 = { |
+ get: function() { return function() {} }, |
+ has() { return true }, |
+ getOwnPropertyDescriptor: function() { |
+ if (__v_1-- == 0) throw "please die"; |
+ return {value: function() {}, configurable: true}; |
+ } |
+}; |
+__v_3 = new Proxy({}, __v_2); |
+__v_30 = Object.create(__v_35); |
+with (__v_5) { f() } |
+} catch(e) { print("Caught: " + e); } |
+ |
+function __f_1(asmfunc, expect) { |
+ var __v_1 = asmfunc.toString(); |
+ var __v_2 = __v_1.replace(new RegExp("use asm"), ""); |
+ var __v_39 = {Math: Math}; |
+ var __v_4 = eval("(" + __v_2 + ")")(__v_3); |
+ print("Testing " + asmfunc.name + " (js)..."); |
+ __v_44.valueOf = __v_43; |
+ expect(__v_4); |
+ print("Testing " + asmfunc.name + " (asm.js)..."); |
+ var __v_5 = asmfunc(__v_3); |
+ expect(__v_5); |
+ print("Testing " + asmfunc.name + " (wasm)..."); |
+ var __v_6 = Wasm.instantiateModuleFromAsm(__v_1, __v_3); |
+ expect(__v_6); |
+} |
+function __f_2() { |
+ "use asm"; |
+ function __f_3() { return 0; } |
+ function __f_4() { return 1; } |
+ function __f_5() { return 4; } |
+ function __f_6() { return 64; } |
+ function __f_7() { return 137; } |
+ function __f_8() { return 128; } |
+ function __f_9() { return -1; } |
+ function __f_10() { return 1000; } |
+ function __f_11() { return 2000000; } |
+ function __f_12() { return 2147483647; } |
+ return {__f_3: __f_3, __f_4: __f_4, __f_5: __f_5, __f_6: __f_6, __f_7: __f_7, __f_8: __f_8, |
+ __f_9: __f_9, __f_10: __f_10, __f_11, __f_12: __f_12}; |
+} |
+try { |
+__f_1(__f_2, function(module) { |
+ assertEquals(0, module.__f_3()); |
+ assertEquals(1, module.__f_4()); |
+ assertEquals(4, module.__f_5()); |
+ assertEquals(64, module.__f_6()); |
+ assertEquals(128, module.__f_8()); |
+ assertEquals(-1, module.__f_9()); |
+ assertEquals(1000, module.__f_10()); |
+ assertEquals(2000000, module.__f_11()); |
+ assertEquals(2147483647, module.__f_12()); |
+}); |
+} catch(e) { print("Caught: " + e); } |