// 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: --validate-asm --allow-natives-syntax 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 module_func = eval(__v_1); var __v_6 = module_func({}, __v_3); assertTrue(%IsAsmWasmCode(module_func)); 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); }