[webkit-changes] [WebKit/WebKit] b41739: [JSC] Add emitGetVirtualRegisters which loads mult...
Yusuke Suzuki
noreply at github.com
Mon Sep 11 10:02:59 PDT 2023
Branch: refs/heads/main
Home: https://github.com/WebKit/WebKit
Commit: b41739f9f4a4234ddb07271bcf91a2ae0e4506c5
https://github.com/WebKit/WebKit/commit/b41739f9f4a4234ddb07271bcf91a2ae0e4506c5
Author: Yusuke Suzuki <ysuzuki at apple.com>
Date: 2023-09-11 (Mon, 11 Sep 2023)
Changed paths:
M Source/JavaScriptCore/assembler/LinkBuffer.h
M Source/JavaScriptCore/jit/JIT.cpp
M Source/JavaScriptCore/jit/JIT.h
M Source/JavaScriptCore/jit/JITArithmetic.cpp
M Source/JavaScriptCore/jit/JITCall.cpp
M Source/JavaScriptCore/jit/JITCode.cpp
M Source/JavaScriptCore/jit/JITInlines.h
M Source/JavaScriptCore/jit/JITOpcodes.cpp
M Source/JavaScriptCore/jit/JITOpcodes32_64.cpp
M Source/JavaScriptCore/jit/JITPropertyAccess.cpp
M Source/JavaScriptCore/runtime/Options.cpp
M Source/JavaScriptCore/runtime/OptionsList.h
Log Message:
-----------
[JSC] Add emitGetVirtualRegisters which loads multiple registers via ldp if possible
https://bugs.webkit.org/show_bug.cgi?id=261399
rdar://115274448
Reviewed by Keith Miller.
This patch adds emitGetVirtualRegisters, which optimizes multiple loads from stack in baseline JIT.
This uses ldp if possible in 64bit platform. We also add dumpBaselineDisassembly option to dump
disassembly only for Baseline for testing.
* Source/JavaScriptCore/assembler/LinkBuffer.h:
* Source/JavaScriptCore/jit/JIT.cpp:
(JSC::JIT::compileAndLinkWithoutFinalizing):
(JSC::JIT::link):
* Source/JavaScriptCore/jit/JIT.h:
* Source/JavaScriptCore/jit/JITArithmetic.cpp:
(JSC::JIT::emit_compareImpl):
(JSC::JIT::emit_compareSlowImpl):
(JSC::JIT::emit_op_mod):
(JSC::JIT::emit_op_pow):
(JSC::JIT::emitBitBinaryOpFastPath):
(JSC::JIT::emitRightShiftFastPath):
(JSC::JIT::emitMathICFast):
(JSC::JIT::emitMathICSlow):
(JSC::JIT::emit_op_div):
* Source/JavaScriptCore/jit/JITCall.cpp:
(JSC::JIT::compileCallDirectEval):
* Source/JavaScriptCore/jit/JITCode.cpp:
(JSC::JITCodeWithCodeRef::~JITCodeWithCodeRef):
* Source/JavaScriptCore/jit/JITInlines.h:
(JSC::JIT::emitGetVirtualRegisters):
* Source/JavaScriptCore/jit/JITOpcodes.cpp:
(JSC::JIT::emit_op_instanceof):
(JSC::JIT::emit_op_set_function_name):
(JSC::JIT::emit_op_eq):
(JSC::JIT::emit_op_jeq):
(JSC::JIT::emit_op_neq):
(JSC::JIT::emit_op_jneq):
(JSC::JIT::compileOpStrictEq):
(JSC::JIT::compileOpStrictEqJump):
(JSC::JIT::emit_op_log_shadow_chicken_tail):
* Source/JavaScriptCore/jit/JITOpcodes32_64.cpp:
(JSC::JIT::compileOpEqCommon):
(JSC::JIT::compileOpStrictEqCommon):
* Source/JavaScriptCore/jit/JITPropertyAccess.cpp:
(JSC::JIT::emit_op_get_by_val):
(JSC::JIT::emit_op_get_private_name):
(JSC::JIT::emit_op_set_private_brand):
(JSC::JIT::emit_op_check_private_brand):
(JSC::JIT::emit_op_put_by_val):
(JSC::JIT::emit_op_put_private_name):
(JSC::JIT::emit_op_put_getter_by_val):
(JSC::JIT::emit_op_put_setter_by_val):
(JSC::JIT::emit_op_del_by_val):
(JSC::JIT::emit_op_get_by_id_with_this):
(JSC::JIT::emit_op_put_by_id):
(JSC::JIT::emit_op_in_by_val):
(JSC::JIT::emitHasPrivate):
(JSC::JIT::emit_op_put_to_scope):
(JSC::JIT::emit_op_put_to_arguments):
(JSC::JIT::emit_op_put_internal_field):
(JSC::JIT::emit_op_get_by_val_with_this):
(JSC::JIT::emit_op_enumerator_next):
(JSC::JIT::emit_enumerator_has_propertyImpl):
(JSC::JIT::emit_op_enumerator_get_by_val):
(JSC::JIT::emit_op_enumerator_put_by_val):
* Source/JavaScriptCore/runtime/Options.cpp:
(JSC::disableAllJITOptions):
(JSC::Options::notifyOptionsChanged):
* Source/JavaScriptCore/runtime/OptionsList.h:
Canonical link: https://commits.webkit.org/267869@main
More information about the webkit-changes
mailing list