Ignore:
Timestamp:
Aug 5, 2010, 3:22:49 PM (15 years ago)
Author:
[email protected]
Message:

2010-08-05 Nathan Lawrence <[email protected]>

Reviewed by Darin Adler.

https://bugs.webkit.org/show_bug.cgi?id=43464

Currently, the global object is being embedded in the JavaScriptCore
bytecode, however since the global object is the same for all opcodes
in a code block, we can have the global object just be a member of the
associated code block.

Additionally, I added an assert inside of emitOpcode that verifies
that the last generated opcode was of the correct length.

  • bytecode/CodeBlock.cpp: (JSC::CodeBlock::CodeBlock): (JSC::CodeBlock::derefStructures): (JSC::CodeBlock::markAggregate):
  • bytecode/CodeBlock.h: (JSC::CodeBlock::globalObject): (JSC::GlobalCodeBlock::GlobalCodeBlock): (JSC::ProgramCodeBlock::ProgramCodeBlock): (JSC::EvalCodeBlock::EvalCodeBlock): (JSC::FunctionCodeBlock::FunctionCodeBlock):
  • bytecode/Opcode.h: (JSC::opcodeLength):
  • bytecompiler/BytecodeGenerator.cpp: (JSC::BytecodeGenerator::BytecodeGenerator): (JSC::BytecodeGenerator::emitOpcode):

Added an assert to check that the last generated opcode is the
correct length.

(JSC::BytecodeGenerator::rewindBinaryOp):

Changed the last opcode to op_end since the length will no longer
be correct.

(JSC::BytecodeGenerator::rewindUnaryOp):

Changed the last opcode to op_end since the length will no longer
be correct.

(JSC::BytecodeGenerator::emitResolve):
(JSC::BytecodeGenerator::emitGetScopedVar):
(JSC::BytecodeGenerator::emitPutScopedVar):
(JSC::BytecodeGenerator::emitResolveWithBase):

  • bytecompiler/BytecodeGenerator.h:
  • interpreter/Interpreter.cpp: (JSC::Interpreter::resolveGlobal): (JSC::Interpreter::resolveGlobalDynamic): (JSC::Interpreter::privateExecute):
  • jit/JITOpcodes.cpp: (JSC::JIT::emit_op_get_global_var): (JSC::JIT::emit_op_put_global_var): (JSC::JIT::emit_op_resolve_global): (JSC::JIT::emitSlow_op_resolve_global): (JSC::JIT::emit_op_resolve_global_dynamic): (JSC::JIT::emitSlow_op_resolve_global_dynamic):
  • jit/JITOpcodes32_64.cpp: (JSC::JIT::emit_op_get_global_var): (JSC::JIT::emit_op_put_global_var): (JSC::JIT::emit_op_resolve_global): (JSC::JIT::emitSlow_op_resolve_global):
  • jit/JITStubs.cpp: (JSC::cti_op_resolve_global):
  • runtime/Executable.cpp: (JSC::FunctionExecutable::compileForCallInternal): (JSC::FunctionExecutable::compileForConstructInternal): (JSC::FunctionExecutable::reparseExceptionInfo):
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/JavaScriptCore/bytecode/Opcode.h

    r63056 r64790  
    9494        macro(op_resolve, 3) \
    9595        macro(op_resolve_skip, 4) \
    96         macro(op_resolve_global, 6) \
    97         macro(op_resolve_global_dynamic, 7) \
     96        macro(op_resolve_global, 5) \
     97        macro(op_resolve_global_dynamic, 6) \
    9898        macro(op_get_scoped_var, 4) \
    9999        macro(op_put_scoped_var, 4) \
    100         macro(op_get_global_var, 4) \
    101         macro(op_put_global_var, 4) \
     100        macro(op_get_global_var, 3) \
     101        macro(op_put_global_var, 3) \
    102102        macro(op_resolve_base, 3) \
    103103        macro(op_resolve_with_base, 4) \
     
    255255#endif
    256256
     257    inline size_t opcodeLength(OpcodeID opcode)
     258    {
     259        switch (opcode) {
     260#define OPCODE_ID_LENGTHS(id, length) case id: return OPCODE_LENGTH(id);
     261             FOR_EACH_OPCODE_ID(OPCODE_ID_LENGTHS)
     262#undef OPCODE_ID_LENGTHS
     263        }
     264        ASSERT_NOT_REACHED();
     265        return 0;
     266    }
     267
    257268} // namespace JSC
    258269
Note: See TracChangeset for help on using the changeset viewer.