Ignore:
Timestamp:
Nov 10, 2014, 7:05:25 PM (11 years ago)
Author:
[email protected]
Message:

Add scope operand to op_create_lexical_environment
https://bugs.webkit.org/show_bug.cgi?id=138588

Reviewed by Geoffrey Garen.

Added a second operand to op_create_lexical_environment that contains the scope register
to update. Note that the DFG relies on operationCreateActivation() to update the
scope register since we can't issue a set() with a non-local, non-argument register.
This is temporary until the scope register is allocated as a local.

  • bytecode/BytecodeList.json:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode):
Added the scope register operand.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::BytecodeGenerator):
Filled in the scope register operand.

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_create_lexical_environment):

  • jit/JITOpcodes32_64.cpp:

(JSC::JIT::emit_op_create_lexical_environment):

  • llint/LLIntSlowPaths.cpp:

(JSC::LLInt::LLINT_SLOW_PATH_DECL):

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:

Set the scope register with the result of the appropriate create activation slow call.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/bytecode/CodeBlock.cpp

    r175508 r175845  
    746746        case op_create_lexical_environment: {
    747747            int r0 = (++it)->u.operand;
    748             printLocationOpAndRegisterOperand(out, exec, location, it, "create_lexical_environment", r0);
     748            int r1 = (++it)->u.operand;
     749            printLocationAndOp(out, exec, location, it, "create_lexical_environment");
     750            out.printf("%s %s", registerName(r0).data(), registerName(r1).data());
    749751            break;
    750752        }
Note: See TracChangeset for help on using the changeset viewer.