Ignore:
Timestamp:
Mar 22, 2018, 8:40:57 AM (7 years ago)
Author:
Yusuke Suzuki
Message:

[JSC] Drop op_put_by_index
https://bugs.webkit.org/show_bug.cgi?id=183899

Reviewed by Mark Lam.

This patch drops op_put_by_index.

  1. This functionality can be just covered by direct put_by_val.
  2. put_by_index is not well optimized. It is just calling a C

function. And it does not have DFG handling.

  • bytecode/BytecodeDumper.cpp:

(JSC::BytecodeDumper<Block>::dumpBytecode):

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

(JSC::computeUsesForBytecodeOffset):
(JSC::computeDefsForBytecodeOffset):

  • bytecompiler/BytecodeGenerator.cpp:

(JSC::BytecodeGenerator::emitPutByIndex): Deleted.

  • bytecompiler/BytecodeGenerator.h:
  • bytecompiler/NodesCodegen.cpp:

(JSC::ArrayNode::emitBytecode):
(JSC::ArrayPatternNode::emitDirectBinding):

  • jit/JIT.cpp:

(JSC::JIT::privateCompileMainPass):

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

(JSC::JIT::emit_op_put_by_index): Deleted.

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::emit_op_put_by_index): Deleted.

  • llint/LLIntSlowPaths.cpp:
  • llint/LLIntSlowPaths.h:
  • llint/LowLevelInterpreter.asm:
File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/bytecompiler/NodesCodegen.cpp

    r229608 r229852  
    418418        if (n->value()->isSpreadExpression())
    419419            goto handleSpread;
    420         RegisterID* value = generator.emitNode(n->value());
     420        RefPtr<RegisterID> value = generator.emitNode(n->value());
    421421        length += n->elision();
    422         generator.emitPutByIndex(array.get(), length++, value);
     422
     423        RefPtr<RegisterID> index = generator.emitLoad(nullptr, jsNumber(length++));
     424        generator.emitDirectPutByVal(array.get(), index.get(), value.get());
    423425    }
    424426
     
    41424144        if (m_targetPatterns[i].defaultValue)
    41434145            assignDefaultValueIfUndefined(generator, registers.last().get(), m_targetPatterns[i].defaultValue);
    4144         if (resultRegister)
    4145             generator.emitPutByIndex(resultRegister.get(), i, registers.last().get());
     4146        if (resultRegister) {
     4147            RefPtr<RegisterID> index = generator.emitLoad(nullptr, jsNumber(i));
     4148            generator.emitDirectPutByVal(resultRegister.get(), index.get(), registers.last().get());
     4149        }
    41464150    }
    41474151   
Note: See TracChangeset for help on using the changeset viewer.