Bug 592199 - call js_PutArguments from trace always (r=dmandelin, a=blocking)

This commit is contained in:
Luke Wagner 2010-09-01 09:53:29 -07:00
Родитель 23283c5f29
Коммит 248f8c9906
2 изменённых файлов: 19 добавлений и 6 удалений

Просмотреть файл

@ -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);