Ignore:
Timestamp:
Oct 6, 2020, 3:04:36 PM (5 years ago)
Author:
[email protected]
Message:

[JSC] More consistent PtrTagging for code types
https://bugs.webkit.org/show_bug.cgi?id=217362

Reviewed by Mark Lam.

  1. Avoid tagging JIT code with OperationPtrTag. OperationPtrTag should be used only for operations (C++ code).
  2. Avoid mixing JIT and C++ code for the same tagged pointers. For exception trampoline, in JIT mode, we should have JIT trampoline thunk which goes to LLInt bytecode handler code.
  • bytecode/BytecodeList.rb:
  • bytecode/CodeBlock.cpp:

(JSC::CodeBlock::finishCreation):
(JSC::CodeBlock::finalizeUnconditionally):

  • dfg/DFGCapabilities.cpp:

(JSC::DFG::capabilityLevel):

  • dfg/DFGJITCompiler.cpp:

(JSC::DFG::JITCompiler::compileExceptionHandlers):

  • dfg/DFGSpeculativeJIT.cpp:

(JSC::DFG::SpeculativeJIT::compileMathIC):

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

(JSC::JIT::compileWithoutLinking):
(JSC::JIT::link):
(JSC::JIT::privateCompileExceptionHandlers):

  • jit/JIT.h:

(JSC::CallRecord::CallRecord):

  • jit/JITCall.cpp:

(JSC::JIT::compileTailCall):
(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):

  • jit/JITCall32_64.cpp:

(JSC::JIT::compileOpCall):
(JSC::JIT::compileOpCallSlowCase):

  • jit/JITExceptions.cpp:

(JSC::genericUnwind):

  • jit/JITInlines.h:

(JSC::JIT::emitNakedNearCall):
(JSC::JIT::emitNakedNearTailCall):
(JSC::JIT::emitNakedCall): Deleted.
(JSC::JIT::emitNakedTailCall): Deleted.

  • jit/JITPropertyAccess.cpp:

(JSC::JIT::privateCompilePutByVal):
(JSC::JIT::privateCompilePutPrivateNameWithCachedId):
(JSC::JIT::privateCompilePutByValWithCachedId):

  • jit/SlowPathCall.h:

(JSC::JITSlowPathCall::call):

  • llint/LLIntData.h:

(JSC::LLInt::getWide16CodeRef):
(JSC::LLInt::getWide32CodeRef):
(JSC::LLInt::getCodeFunctionPtr):
(JSC::LLInt::getWide16CodeFunctionPtr):
(JSC::LLInt::getWide32CodeFunctionPtr):

  • llint/LLIntEntrypoint.cpp:

(JSC::LLInt::setFunctionEntrypoint):
(JSC::LLInt::setEvalEntrypoint):
(JSC::LLInt::setProgramEntrypoint):
(JSC::LLInt::setModuleProgramEntrypoint):

  • llint/LLIntExceptions.cpp:

(JSC::LLInt::callToThrow):
(JSC::LLInt::handleUncaughtException):
(JSC::LLInt::catcher):

  • llint/LLIntExceptions.h:
  • llint/LLIntSlowPaths.cpp:
  • llint/LLIntThunks.cpp:

(JSC::LLInt::generateThunkWithJumpTo):
(JSC::LLInt::functionForCallEntryThunk):
(JSC::LLInt::functionForConstructEntryThunk):
(JSC::LLInt::functionForCallArityCheckThunk):
(JSC::LLInt::functionForConstructArityCheckThunk):
(JSC::LLInt::evalEntryThunk):
(JSC::LLInt::programEntryThunk):
(JSC::LLInt::moduleProgramEntryThunk):
(JSC::LLInt::wasmFunctionEntryThunk):
(JSC::LLInt::callToThrowThunk):
(JSC::LLInt::handleUncaughtExceptionThunk):
(JSC::LLInt::catcherThunk):

  • llint/LLIntThunks.h:
  • llint/LowLevelInterpreter32_64.asm:
  • llint/LowLevelInterpreter64.asm:
  • runtime/SamplingProfiler.cpp:

(JSC::SamplingProfiler::processUnverifiedStackTraces):

  • wasm/WasmOperations.cpp:

(JSC::Wasm::JSC_DEFINE_JIT_OPERATION):

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/Source/JavaScriptCore/ChangeLog

    r268037 r268077  
     12020-10-05  Yusuke Suzuki  <[email protected]>
     2
     3        [JSC] More consistent PtrTagging for code types
     4        https://bugs.webkit.org/show_bug.cgi?id=217362
     5
     6        Reviewed by Mark Lam.
     7
     8        1. Avoid tagging JIT code with OperationPtrTag. OperationPtrTag should be used only for operations (C++ code).
     9        2. Avoid mixing JIT and C++ code for the same tagged pointers. For exception trampoline, in JIT mode, we should have
     10           JIT trampoline thunk which goes to LLInt bytecode handler code.
     11
     12        * bytecode/BytecodeList.rb:
     13        * bytecode/CodeBlock.cpp:
     14        (JSC::CodeBlock::finishCreation):
     15        (JSC::CodeBlock::finalizeUnconditionally):
     16        * dfg/DFGCapabilities.cpp:
     17        (JSC::DFG::capabilityLevel):
     18        * dfg/DFGJITCompiler.cpp:
     19        (JSC::DFG::JITCompiler::compileExceptionHandlers):
     20        * dfg/DFGSpeculativeJIT.cpp:
     21        (JSC::DFG::SpeculativeJIT::compileMathIC):
     22        * jit/ICStats.h:
     23        * jit/JIT.cpp:
     24        (JSC::JIT::compileWithoutLinking):
     25        (JSC::JIT::link):
     26        (JSC::JIT::privateCompileExceptionHandlers):
     27        * jit/JIT.h:
     28        (JSC::CallRecord::CallRecord):
     29        * jit/JITCall.cpp:
     30        (JSC::JIT::compileTailCall):
     31        (JSC::JIT::compileOpCall):
     32        (JSC::JIT::compileOpCallSlowCase):
     33        * jit/JITCall32_64.cpp:
     34        (JSC::JIT::compileOpCall):
     35        (JSC::JIT::compileOpCallSlowCase):
     36        * jit/JITExceptions.cpp:
     37        (JSC::genericUnwind):
     38        * jit/JITInlines.h:
     39        (JSC::JIT::emitNakedNearCall):
     40        (JSC::JIT::emitNakedNearTailCall):
     41        (JSC::JIT::emitNakedCall): Deleted.
     42        (JSC::JIT::emitNakedTailCall): Deleted.
     43        * jit/JITPropertyAccess.cpp:
     44        (JSC::JIT::privateCompilePutByVal):
     45        (JSC::JIT::privateCompilePutPrivateNameWithCachedId):
     46        (JSC::JIT::privateCompilePutByValWithCachedId):
     47        * jit/SlowPathCall.h:
     48        (JSC::JITSlowPathCall::call):
     49        * llint/LLIntData.h:
     50        (JSC::LLInt::getWide16CodeRef):
     51        (JSC::LLInt::getWide32CodeRef):
     52        (JSC::LLInt::getCodeFunctionPtr):
     53        (JSC::LLInt::getWide16CodeFunctionPtr):
     54        (JSC::LLInt::getWide32CodeFunctionPtr):
     55        * llint/LLIntEntrypoint.cpp:
     56        (JSC::LLInt::setFunctionEntrypoint):
     57        (JSC::LLInt::setEvalEntrypoint):
     58        (JSC::LLInt::setProgramEntrypoint):
     59        (JSC::LLInt::setModuleProgramEntrypoint):
     60        * llint/LLIntExceptions.cpp:
     61        (JSC::LLInt::callToThrow):
     62        (JSC::LLInt::handleUncaughtException):
     63        (JSC::LLInt::catcher):
     64        * llint/LLIntExceptions.h:
     65        * llint/LLIntSlowPaths.cpp:
     66        * llint/LLIntThunks.cpp:
     67        (JSC::LLInt::generateThunkWithJumpTo):
     68        (JSC::LLInt::functionForCallEntryThunk):
     69        (JSC::LLInt::functionForConstructEntryThunk):
     70        (JSC::LLInt::functionForCallArityCheckThunk):
     71        (JSC::LLInt::functionForConstructArityCheckThunk):
     72        (JSC::LLInt::evalEntryThunk):
     73        (JSC::LLInt::programEntryThunk):
     74        (JSC::LLInt::moduleProgramEntryThunk):
     75        (JSC::LLInt::wasmFunctionEntryThunk):
     76        (JSC::LLInt::callToThrowThunk):
     77        (JSC::LLInt::handleUncaughtExceptionThunk):
     78        (JSC::LLInt::catcherThunk):
     79        * llint/LLIntThunks.h:
     80        * llint/LowLevelInterpreter32_64.asm:
     81        * llint/LowLevelInterpreter64.asm:
     82        * runtime/SamplingProfiler.cpp:
     83        (JSC::SamplingProfiler::processUnverifiedStackTraces):
     84        * wasm/WasmOperations.cpp:
     85        (JSC::Wasm::JSC_DEFINE_JIT_OPERATION):
     86
    1872020-10-05  Ross Kirsling  <[email protected]>
    288
Note: See TracChangeset for help on using the changeset viewer.