author | Luke Wagner <lw@mozilla.com> |
Tue, 23 Nov 2010 18:20:56 -0800 | |
changeset 58124 | 64c4716a72dd8d53e09b25b99c3540c8b98caaeb |
parent 58123 | 9c3babe383e147c4ec8e1fb11462fd0425d49c42 |
child 58125 | 66d88ee2623736105f7da1add40adb871fb33208 |
push id | 17168 |
push user | lwagner@mozilla.com |
push date | Wed, 24 Nov 2010 04:52:29 +0000 |
treeherder | mozilla-central@64c4716a72dd [default view] [failures only] |
perfherder | [talos] [build metrics] [platform microbench] (compared to previous push) |
reviewers | dvander, b8 |
bugs | 613732 |
milestone | 2.0b8pre |
first release with | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
last release without | nightly linux32
nightly linux64
nightly mac
nightly win32
nightly win64
|
js/src/jit-test/tests/basic/testApplyAtJoinPoint.js | file | annotate | diff | comparison | revisions | |
js/src/methodjit/Compiler.cpp | file | annotate | diff | comparison | revisions |
new file mode 100644 --- /dev/null +++ b/js/src/jit-test/tests/basic/testApplyAtJoinPoint.js @@ -0,0 +1,12 @@ +var isTrue = true; + +function g(x) { + return x; +} + +function f() { + return g.apply(null, isTrue ? ["happy"] : arguments); +} + +for (var i = 0; i < HOTLOOP + 10; ++i) + assertEq(f("sad"), "happy");
--- a/js/src/methodjit/Compiler.cpp +++ b/js/src/methodjit/Compiler.cpp @@ -2469,16 +2469,17 @@ mjit::Compiler::checkCallApplySpeculatio /* This predicate must be called before the current op mutates the FrameState. */ bool mjit::Compiler::canUseApplyTricks() { JS_ASSERT(*PC == JSOP_ARGUMENTS); jsbytecode *nextpc = PC + JSOP_ARGUMENTS_LENGTH; return *nextpc == JSOP_FUNAPPLY && IsLowerableFunCallOrApply(nextpc) && + !analysis->jumpTarget(nextpc) && !debugMode(); } /* See MonoIC.cpp, CallCompiler for more information on call ICs. */ void mjit::Compiler::inlineCallHelper(uint32 callImmArgc, bool callingNew) { /* Check for interrupts on function call */