Ignore:
Timestamp:
Oct 14, 2013, 11:39:45 AM (12 years ago)
Author:
[email protected]
Message:

Baseline JIT should use the DFG's PutById IC
https://bugs.webkit.org/show_bug.cgi?id=122704

Source/JavaScriptCore:

Reviewed by Mark Hahnenberg.

Mostly no big deal, just removing the old Baseline JIT's put_by_id IC support and forcing
that JIT to use the DFG's (i.e. JITOperations) PutById IC.

The only complicated part was that the PutById operations assumed that we first did a
cell speculation, which the baseline JIT obviously won't do. So I changed all of those
slow paths to deal with EncodedJSValue's.

  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::resetStubInternal):

  • bytecode/PutByIdStatus.cpp:

(JSC::PutByIdStatus::computeFor):

  • dfg/DFGSpeculativeJIT.h:

(JSC::DFG::SpeculativeJIT::callOperation):

  • dfg/DFGSpeculativeJIT32_64.cpp:

(JSC::DFG::SpeculativeJIT::cachedPutById):

  • dfg/DFGSpeculativeJIT64.cpp:

(JSC::DFG::SpeculativeJIT::cachedPutById):

  • jit/CCallHelpers.h:

(JSC::CCallHelpers::setupArgumentsWithExecState):

  • jit/JIT.cpp:

(JSC::PropertyStubCompilationInfo::copyToStubInfo):

  • jit/JIT.h:

(JSC::PropertyStubCompilationInfo::PropertyStubCompilationInfo):
(JSC::PropertyStubCompilationInfo::slowCaseInfo):

  • jit/JITInlines.h:

(JSC::JIT::callOperation):

  • jit/JITOperationWrappers.h:
  • jit/JITOperations.cpp:
  • jit/JITOperations.h:
  • jit/JITPropertyAccess.cpp:

(JSC::JIT::compileGetByIdHotPath):
(JSC::JIT::compileGetByIdSlowCase):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitSlow_op_put_by_id):

  • jit/JITPropertyAccess32_64.cpp:

(JSC::JIT::compileGetByIdSlowCase):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emitSlow_op_put_by_id):

  • jit/JITStubs.cpp:
  • jit/JITStubs.h:
  • jit/Repatch.cpp:

(JSC::appropriateGenericPutByIdFunction):
(JSC::appropriateListBuildingPutByIdFunction):
(JSC::resetPutByID):

LayoutTests:

Reviewed by Mark Hahnenberg.

  • js/regress/put-by-id-expected.txt: Added.
  • js/regress/put-by-id.html: Added.
  • js/regress/script-tests/put-by-id.js: Added.

(foo):
(bar):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r157409 r157411  
     12013-10-14  Filip Pizlo  <[email protected]>
     2
     3        Baseline JIT should use the DFG's PutById IC
     4        https://bugs.webkit.org/show_bug.cgi?id=122704
     5
     6        Reviewed by Mark Hahnenberg.
     7       
     8        Mostly no big deal, just removing the old Baseline JIT's put_by_id IC support and forcing
     9        that JIT to use the DFG's (i.e. JITOperations) PutById IC.
     10       
     11        The only complicated part was that the PutById operations assumed that we first did a
     12        cell speculation, which the baseline JIT obviously won't do. So I changed all of those
     13        slow paths to deal with EncodedJSValue's.
     14
     15        * bytecode/CodeBlock.cpp:
     16        (JSC::CodeBlock::resetStubInternal):
     17        * bytecode/PutByIdStatus.cpp:
     18        (JSC::PutByIdStatus::computeFor):
     19        * dfg/DFGSpeculativeJIT.h:
     20        (JSC::DFG::SpeculativeJIT::callOperation):
     21        * dfg/DFGSpeculativeJIT32_64.cpp:
     22        (JSC::DFG::SpeculativeJIT::cachedPutById):
     23        * dfg/DFGSpeculativeJIT64.cpp:
     24        (JSC::DFG::SpeculativeJIT::cachedPutById):
     25        * jit/CCallHelpers.h:
     26        (JSC::CCallHelpers::setupArgumentsWithExecState):
     27        * jit/JIT.cpp:
     28        (JSC::PropertyStubCompilationInfo::copyToStubInfo):
     29        * jit/JIT.h:
     30        (JSC::PropertyStubCompilationInfo::PropertyStubCompilationInfo):
     31        (JSC::PropertyStubCompilationInfo::slowCaseInfo):
     32        * jit/JITInlines.h:
     33        (JSC::JIT::callOperation):
     34        * jit/JITOperationWrappers.h:
     35        * jit/JITOperations.cpp:
     36        * jit/JITOperations.h:
     37        * jit/JITPropertyAccess.cpp:
     38        (JSC::JIT::compileGetByIdHotPath):
     39        (JSC::JIT::compileGetByIdSlowCase):
     40        (JSC::JIT::emit_op_put_by_id):
     41        (JSC::JIT::emitSlow_op_put_by_id):
     42        * jit/JITPropertyAccess32_64.cpp:
     43        (JSC::JIT::compileGetByIdSlowCase):
     44        (JSC::JIT::emit_op_put_by_id):
     45        (JSC::JIT::emitSlow_op_put_by_id):
     46        * jit/JITStubs.cpp:
     47        * jit/JITStubs.h:
     48        * jit/Repatch.cpp:
     49        (JSC::appropriateGenericPutByIdFunction):
     50        (JSC::appropriateListBuildingPutByIdFunction):
     51        (JSC::resetPutByID):
     52
    1532013-10-13  Filip Pizlo  <[email protected]>
    254
Note: See TracChangeset for help on using the changeset viewer.