Ignore:
Timestamp:
Jan 29, 2015, 3:17:18 PM (10 years ago)
Author:
[email protected]
Message:

Removed op_ret_object_or_this
https://bugs.webkit.org/show_bug.cgi?id=141048

Reviewed by Michael Saboff.

op_ret_object_or_this was one opcode that would keep us out of the
optimizing compilers.

We don't need a special-purpose opcode; we can just use a branch.

  • bytecode/BytecodeBasicBlock.cpp:

(JSC::isTerminal): Removed.

  • bytecode/BytecodeList.json:
  • bytecode/BytecodeUseDef.h:

(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset): Removed.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::dumpBytecode): Removed.

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitReturn): Use an explicit branch to determine
if we need to substitute 'this' for the return value. Our engine no longer
benefits from fused opcodes that dispatch less in the interpreter.

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

  • jit/JIT.h:
  • jit/JITCall32_64.cpp:

(JSC::JIT::emit_op_ret_object_or_this): Deleted.

  • jit/JITOpcodes.cpp:

(JSC::JIT::emit_op_ret_object_or_this): Deleted.

  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm: Removed.
File:
1 edited

Legend:

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

    r179357 r179372  
    13311331            int r0 = (++it)->u.operand;
    13321332            printLocationOpAndRegisterOperand(out, exec, location, it, "ret", r0);
    1333             break;
    1334         }
    1335         case op_ret_object_or_this: {
    1336             int r0 = (++it)->u.operand;
    1337             int r1 = (++it)->u.operand;
    1338             printLocationAndOp(out, exec, location, it, "constructor_ret");
    1339             out.printf("%s %s", registerName(r0).data(), registerName(r1).data());
    13401333            break;
    13411334        }
Note: See TracChangeset for help on using the changeset viewer.