Changeset 174359 in webkit for trunk/Source/JavaScriptCore/llint


Ignore:
Timestamp:
Oct 6, 2014, 12:29:27 PM (11 years ago)
Author:
[email protected]
Message:

REGRESSION(r174226): [JSC] Crash when running the perf test Speedometer/Full.html
https://bugs.webkit.org/show_bug.cgi?id=137404

Reviewed by Michael Saboff.

Update the Arguments object to recognise that it must always have an
environment record if the referenced callee has one, and if such is not
present it should not try to extract one from the callframe, as that
path leads to madness.

Happily this makes some of the other code more sensible, and removes a
bunch of unnecessary and icky logic.

  • interpreter/Interpreter.cpp:

(JSC::unwindCallFrame):

  • jit/JITOperations.cpp:
  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • runtime/Arguments.cpp:

(JSC::Arguments::tearOff):
(JSC::Arguments::didTearOffActivation): Deleted.

  • runtime/Arguments.h:

(JSC::Arguments::argument):
(JSC::Arguments::finishCreation):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/llint/LLIntSlowPaths.cpp

    r174294 r174359  
    12511251    ASSERT(exec->codeBlock()->usesArguments());
    12521252    Arguments* arguments = jsCast<Arguments*>(exec->uncheckedR(VirtualRegister(pc[1].u.operand).offset()).jsValue());
    1253     if (JSValue activationValue = LLINT_OP_C(2).jsValue())
    1254         arguments->didTearOffActivation(exec, jsCast<JSLexicalEnvironment*>(activationValue));
    1255     else
    1256         arguments->tearOff(exec);
     1253    arguments->tearOff(exec);
    12571254    LLINT_END();
    12581255}
Note: See TracChangeset for help on using the changeset viewer.