WebKit Bugzilla
Attachment 362036 Details for
Bug 194648
: [JSC] LLIntEntryPoint creates same DirectJITCode for all functions
Home
|
New
|
Browse
|
Search
|
[?]
|
Reports
|
Requests
|
Help
|
New Account
|
Log In
Remember
[x]
|
Forgot Password
Login:
[x]
[patch]
WIP - Patch
llint-entry-code.diff (text/plain), 2.26 KB, created by
Caio Lima
on 2019-02-14 10:44:23 PST
(
hide
)
Description:
WIP - Patch
Filename:
MIME Type:
Creator:
Caio Lima
Created:
2019-02-14 10:44:23 PST
Size:
2.26 KB
patch
obsolete
>diff --git a/Source/JavaScriptCore/llint/LLIntEntrypoint.cpp b/Source/JavaScriptCore/llint/LLIntEntrypoint.cpp >index f7ad74c5ae2..6e014487369 100644 >--- a/Source/JavaScriptCore/llint/LLIntEntrypoint.cpp >+++ b/Source/JavaScriptCore/llint/LLIntEntrypoint.cpp >@@ -38,6 +38,28 @@ > > namespace JSC { namespace LLInt { > >+static Ref<JITCode> getFunctionForCallJITCode(VM& vm) >+{ >+ static DirectJITCode* jitCode; >+ static std::once_flag onceKey; >+ std::call_once(onceKey, [&] { >+ jitCode = new DirectJITCode(vm.getCTIStub(functionForCallEntryThunkGenerator).retagged<JSEntryPtrTag>(), vm.getCTIStub(functionForCallArityCheckThunkGenerator).retaggedCode<JSEntryPtrTag>(), JITCode::InterpreterThunk); >+ }); >+ >+ return makeRef(*jitCode); >+} >+ >+static Ref<JITCode> getFunctionForConstructJITCode(VM& vm) >+{ >+ static DirectJITCode* jitCode; >+ static std::once_flag onceKey; >+ std::call_once(onceKey, [&] { >+ jitCode = new DirectJITCode(vm.getCTIStub(functionForConstructEntryThunkGenerator).retagged<JSEntryPtrTag>(), vm.getCTIStub(functionForConstructArityCheckThunkGenerator).retaggedCode<JSEntryPtrTag>(), JITCode::InterpreterThunk); >+ }); >+ >+ return makeRef(*jitCode); >+} >+ > static void setFunctionEntrypoint(VM& vm, CodeBlock* codeBlock) > { > CodeSpecializationKind kind = codeBlock->specializationKind(); >@@ -45,13 +67,11 @@ static void setFunctionEntrypoint(VM& vm, CodeBlock* codeBlock) > #if ENABLE(JIT) > if (VM::canUseJIT()) { > if (kind == CodeForCall) { >- codeBlock->setJITCode( >- adoptRef(*new DirectJITCode(vm.getCTIStub(functionForCallEntryThunkGenerator).retagged<JSEntryPtrTag>(), vm.getCTIStub(functionForCallArityCheckThunkGenerator).retaggedCode<JSEntryPtrTag>(), JITCode::InterpreterThunk))); >+ codeBlock->setJITCode(getFunctionForCallJITCode(vm)); > return; > } > ASSERT(kind == CodeForConstruct); >- codeBlock->setJITCode( >- adoptRef(*new DirectJITCode(vm.getCTIStub(functionForConstructEntryThunkGenerator).retagged<JSEntryPtrTag>(), vm.getCTIStub(functionForConstructArityCheckThunkGenerator).retaggedCode<JSEntryPtrTag>(), JITCode::InterpreterThunk))); >+ codeBlock->setJITCode(getFunctionForConstructJITCode(vm)); > return; > } > #endif // ENABLE(JIT)
You cannot view the attachment while viewing its details because your browser does not support IFRAMEs.
View the attachment on a separate page
.
View Attachment As Diff
View Attachment As Raw
Flags:
mark.lam
:
review-
Actions:
View
|
Formatted Diff
|
Diff
Attachments on
bug 194648
:
362008
|
362009
|
362010
|
362036
|
362129
|
362148
|
362306
|
362313
|
362326
|
362897
|
364555
|
364689