From ecc6022e880cb4cc216b775f749413237d2baf27 Mon Sep 17 00:00:00 2001 From: Phil Ringnalda Date: Wed, 16 Oct 2013 09:43:19 -0700 Subject: [PATCH] Backed out changeset b158656d754e (bug 921035) for test bustage --- js/src/jit-test/tests/ion/bug921035.js | 12 ------------ js/src/jit/IonAnalysis.cpp | 15 +++------------ 2 files changed, 3 insertions(+), 24 deletions(-) delete mode 100644 js/src/jit-test/tests/ion/bug921035.js diff --git a/js/src/jit-test/tests/ion/bug921035.js b/js/src/jit-test/tests/ion/bug921035.js deleted file mode 100644 index 41dc8aa96708..000000000000 --- a/js/src/jit-test/tests/ion/bug921035.js +++ /dev/null @@ -1,12 +0,0 @@ -function $ERROR() {} -function testMultipleArgumentsObjects() { - var testargs = arguments; - var f = function (which) { - var args = [ testargs ]; - return args[which][0]; - }; - var arr = [0, 0, 0, 0, 1]; - for (var i = 0; i < arr.length; i++) - $ERROR[i] = f(arr[i]); -} -testMultipleArgumentsObjects() diff --git a/js/src/jit/IonAnalysis.cpp b/js/src/jit/IonAnalysis.cpp index c21bc213c772..a2c9f4a38f08 100644 --- a/js/src/jit/IonAnalysis.cpp +++ b/js/src/jit/IonAnalysis.cpp @@ -211,25 +211,16 @@ IsPhiObservable(MPhi *phi, Observability observe) break; } + // If the Phi is of the |this| value, it must always be observable. uint32_t slot = phi->slot(); CompileInfo &info = phi->block()->info(); - JSFunction *fun = info.fun(); - - // If the Phi is of the |this| value, it must always be observable. - if (fun && slot == info.thisSlot()) - return true; - - // If the function is heavyweight, and the Phi is of the |scopeChain| - // value, and the function may need an arguments object, then make sure - // to preserve the scope chain, because it may be needed to construct the - // arguments object during bailout. - if (fun && fun->isHeavyweight() && info.hasArguments() && slot == info.scopeChainSlot()) + if (info.fun() && slot == info.thisSlot()) return true; // If the Phi is one of the formal argument, and we are using an argument // object in the function. The phi might be observable after a bailout. // For inlined frames this is not needed, as they are captured in the inlineResumePoint. - if (fun && info.hasArguments()) { + if (info.fun() && info.hasArguments()) { uint32_t first = info.firstArgSlot(); if (first <= slot && slot - first < info.nargs()) { // If arguments obj aliases formals, then the arg slots will never be used.