зеркало из https://github.com/mozilla/gecko-dev.git
Bug 592199 - call js_PutArguments from trace always (r=dmandelin, a=blocking)
This commit is contained in:
Родитель
23283c5f29
Коммит
248f8c9906
|
@ -10310,12 +10310,9 @@ TraceRecorder::putActivationObjects()
|
|||
{
|
||||
JSStackFrame *fp = cx->fp();
|
||||
|
||||
bool have_args = fp->hasArgsObj() &&
|
||||
!fp->getArgsObj()->isStrictArguments() &&
|
||||
fp->numActualArgs() > 0;
|
||||
bool have_call = fp->hasFunction() &&
|
||||
JSFUN_HEAVYWEIGHT_TEST(fp->getFunction()->flags) &&
|
||||
fp->getFunction()->countArgsAndVars();
|
||||
bool have_args = fp->hasArgsObj() && !fp->getArgsObj()->isStrictArguments();
|
||||
bool have_call = fp->hasCallObj();
|
||||
JS_ASSERT(have_call == (fp->hasFunction() && fp->getFunction()->isHeavyweight()));
|
||||
|
||||
if (!have_args && !have_call)
|
||||
return;
|
||||
|
|
|
@ -0,0 +1,16 @@
|
|||
var g;
|
||||
|
||||
function h() {
|
||||
return arguments.length;
|
||||
}
|
||||
|
||||
function f() {
|
||||
var args = arguments;
|
||||
g = function() { return h.apply(this, args); }
|
||||
}
|
||||
|
||||
for (var i = 0; i < 10; ++i) {
|
||||
f();
|
||||
}
|
||||
|
||||
assertEq(g(), 0);
|
Загрузка…
Ссылка в новой задаче