Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0125fc7994caa87c6daf0e16e279b61c113b2be1
      
https://github.com/WebKit/WebKit/commit/0125fc7994caa87c6daf0e16e279b61c113b2be1
  Author: Yusuke Suzuki <[email protected]>
  Date:   2023-11-13 (Mon, 13 Nov 2023)

  Changed paths:
    M Source/JavaScriptCore/interpreter/CachedCall.h
    M Source/JavaScriptCore/interpreter/CallFrame.h
    M Source/JavaScriptCore/interpreter/Interpreter.cpp
    M Source/JavaScriptCore/interpreter/Interpreter.h
    M Source/JavaScriptCore/llint/LLIntSlowPaths.cpp
    M Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm
    M Source/JavaScriptCore/llint/LowLevelInterpreter64.asm
    M Source/JavaScriptCore/runtime/VM.cpp
    M Source/JavaScriptCore/runtime/VM.h

  Log Message:
  -----------
  [JSC] Make CachedCall further faster
https://bugs.webkit.org/show_bug.cgi?id=264726
rdar://118320685

Reviewed by Michael Saboff.

1. We should not do vm.disallowVMEntryCount for every CachedCall calls, which 
is really slow.
   We should do it once. This patch moves vm.disallowVMEntryCount check to the 
same place to VMEntryScope.
2. Extract stack overflow check as 
_llint_throw_stack_overflow_error_from_vm_entry and jump to this label.
3. Move some of hot VM fields to the consolidated place.
4. Use paired load / store for VM frame initializations.

    cpp-to-js-cached-call       21.1540+-0.0364     ^     15.0915+-0.0090       
 ^ definitely 1.4017x faster

* Source/JavaScriptCore/interpreter/CachedCall.h:
(JSC::CachedCall::CachedCall):
* Source/JavaScriptCore/interpreter/CallFrame.h:
(JSC::CallFrame::noCaller):
* Source/JavaScriptCore/interpreter/Interpreter.cpp:
(JSC::Interpreter::checkVMEntryPermission):
(JSC::Interpreter::executeProgram):
(JSC::Interpreter::executeCallImpl):
(JSC::Interpreter::executeConstruct):
(JSC::Interpreter::executeEval):
(JSC::Interpreter::executeModuleProgram):
* Source/JavaScriptCore/interpreter/Interpreter.h:
* Source/JavaScriptCore/llint/LLIntSlowPaths.cpp:
(JSC::LLInt::llint_check_vm_entry_permission):
* Source/JavaScriptCore/llint/LowLevelInterpreter32_64.asm:
* Source/JavaScriptCore/llint/LowLevelInterpreter64.asm:
* Source/JavaScriptCore/runtime/VM.cpp:
(JSC::VM::VM):
* Source/JavaScriptCore/runtime/VM.h:

Canonical link: https://commits.webkit.org/270649@main


_______________________________________________
webkit-changes mailing list
[email protected]
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to