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


Ignore:
Timestamp:
Oct 3, 2014, 2:46:14 PM (11 years ago)
Author:
[email protected]
Message:

tearoff_arguments should always refer to the unmodified arguments register
https://bugs.webkit.org/show_bug.cgi?id=137406

Reviewed by Michael Saboff.

To simplify subsequent work, and remove unnecessary work from
actual execution this patch simply ensures that tear_off_arguments
refers to the actual unmodified arguments register.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitReturn):

  • dfg/DFGByteCodeParser.cpp:

(JSC::DFG::ByteCodeParser::parseBlock):

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_tear_off_arguments):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_tear_off_arguments):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
Location:
trunk/Source/JavaScriptCore/llint
Files:
3 edited

Legend:

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

    r174226 r174294  
    12501250    LLINT_BEGIN();
    12511251    ASSERT(exec->codeBlock()->usesArguments());
    1252     Arguments* arguments = jsCast<Arguments*>(exec->uncheckedR(unmodifiedArgumentsRegister(VirtualRegister(pc[1].u.operand)).offset()).jsValue());
     1252    Arguments* arguments = jsCast<Arguments*>(exec->uncheckedR(VirtualRegister(pc[1].u.operand).offset()).jsValue());
    12531253    if (JSValue activationValue = LLINT_OP_C(2).jsValue())
    12541254        arguments->didTearOffActivation(exec, jsCast<JSLexicalEnvironment*>(activationValue));
  • trunk/Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm

    r174226 r174294  
    19561956    traceExecution()
    19571957    loadi 4[PC], t0
    1958     addi 1, t0   # Get the unmodifiedArgumentsRegister
    19591958    bieq TagOffset[cfr, t0, 8], EmptyValueTag, .opTearOffArgumentsNotCreated
    19601959    callSlowPath(_llint_slow_path_tear_off_arguments)
  • trunk/Source/JavaScriptCore/llint/LowLevelInterpreter64.asm

    r174226 r174294  
    18141814    traceExecution()
    18151815    loadisFromInstruction(1, t0)
    1816     addq 1, t0   # Get the unmodifiedArgumentsRegister
    18171816    btqz [cfr, t0, 8], .opTearOffArgumentsNotCreated
    18181817    callSlowPath(_llint_slow_path_tear_off_arguments)
Note: See TracChangeset for help on using the changeset viewer.