diff options
Diffstat (limited to 'deps/v8/test/mjsunit/compiler/regress-1094132.js')
-rw-r--r-- | deps/v8/test/mjsunit/compiler/regress-1094132.js | 78 |
1 files changed, 78 insertions, 0 deletions
diff --git a/deps/v8/test/mjsunit/compiler/regress-1094132.js b/deps/v8/test/mjsunit/compiler/regress-1094132.js new file mode 100644 index 00000000000..418637d86f8 --- /dev/null +++ b/deps/v8/test/mjsunit/compiler/regress-1094132.js @@ -0,0 +1,78 @@ +// Copyright 2020 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 + +function prettyPrinted() {} + +function formatFailureText() { + if (expectedText.length <= 40 && foundText.length <= 40) { + message += ": expected <" + expectedText + "> found <" + foundText + ">"; + message += ":\nexpected:\n" + expectedText + "\nfound:\n" + foundText; + } +} + +function fail(expectedText, found, name_opt) { + formatFailureText(expectedText, found, name_opt); + if (!a[aProps[i]][aProps[i]]) { } +} + +function deepEquals(a, b) { + if (a === 0) return 1 / a === 1 / b; + if (typeof a !== typeof a) return false; + if (typeof a !== "object" && typeof a !== "function") return false; + if (objectClass !== classOf()) return false; + if (objectClass === "RegExp") { } +} + +function assertEquals() { + if (!deepEquals()) { + fail(prettyPrinted(), undefined, undefined); + } +} + +({y: {}, x: 0.42}); + +function gaga() { + return {gx: bar.arguments[0], hx: baz.arguments[0]}; +} + +function baz() { + return gaga(); +} + +function bar(obj) { + return baz(obj.y); +} + +function foo() { + bar({y: {}, x: 42}); + try { assertEquals() } catch (e) {} + try { assertEquals() } catch (e) {} + assertEquals(); +} + +%PrepareFunctionForOptimization(prettyPrinted); +%PrepareFunctionForOptimization(formatFailureText); +%PrepareFunctionForOptimization(fail); +%PrepareFunctionForOptimization(deepEquals); +%PrepareFunctionForOptimization(assertEquals); +%PrepareFunctionForOptimization(gaga); +%PrepareFunctionForOptimization(baz); +%PrepareFunctionForOptimization(bar); +%PrepareFunctionForOptimization(foo); +try { foo() } catch (e) {} +%OptimizeFunctionOnNextCall(foo); +try { foo() } catch (e) {} +%PrepareFunctionForOptimization(prettyPrinted); +%PrepareFunctionForOptimization(formatFailureText); +%PrepareFunctionForOptimization(fail); +%PrepareFunctionForOptimization(deepEquals); +%PrepareFunctionForOptimization(assertEquals); +%PrepareFunctionForOptimization(gaga); +%PrepareFunctionForOptimization(baz); +%PrepareFunctionForOptimization(bar); +%PrepareFunctionForOptimization(foo); +%OptimizeFunctionOnNextCall(foo); +try { foo() } catch (e) {} |