WebKit Bugzilla
New
Browse
Search+
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
[patch]
the patch
blah.patch (text/plain), 4.78 KB, created by
Filip Pizlo
on 2015-03-03 14:23:17 PST
(
hide
)
Description:
the patch
Filename:
MIME Type:
Creator:
Filip Pizlo
Created:
2015-03-03 14:23:17 PST
Size:
4.78 KB
patch
obsolete
>Index: Source/JavaScriptCore/ChangeLog >=================================================================== >--- Source/JavaScriptCore/ChangeLog (revision 180955) >+++ Source/JavaScriptCore/ChangeLog (working copy) >@@ -1,3 +1,30 @@ >+2015-03-03 Filip Pizlo <fpizlo@apple.com> >+ >+ JIT debugging features that selectively disable the JITs for code blocks need to stay out of the way of the critical path of JIT management >+ https://bugs.webkit.org/show_bug.cgi?id=142234 >+ >+ Reviewed by NOBODY (OOPS!). >+ >+ See bug description for complete analysis. This reduces the intrusiveness of debugging hacks >+ by making them use the very simple CompilationFailed mechanism rather than trying to >+ influence capability modes. Capability modes have very subtle effects on the whole engine, >+ while CompilationFailed just makes the engine pretend like the DFG compilation will happen >+ at timelike infinity. That makes these hacks much more likely to continue working as we make >+ other changes to the system. >+ >+ This brings back the ability to bisect down onto a function bar when bar inlines foo. Prior >+ to this change, we would crash in that case. >+ >+ * dfg/DFGCapabilities.cpp: >+ (JSC::DFG::isSupported): >+ (JSC::DFG::mightCompileEval): >+ (JSC::DFG::mightCompileProgram): >+ (JSC::DFG::mightCompileFunctionForCall): >+ (JSC::DFG::mightCompileFunctionForConstruct): >+ * dfg/DFGCapabilities.h: >+ * dfg/DFGDriver.cpp: >+ (JSC::DFG::compileImpl): >+ > 2015-03-03 peavo@outlook.com <peavo@outlook.com> > > [Win64] JSC compile error. >Index: Source/JavaScriptCore/dfg/DFGCapabilities.cpp >=================================================================== >--- Source/JavaScriptCore/dfg/DFGCapabilities.cpp (revision 180950) >+++ Source/JavaScriptCore/dfg/DFGCapabilities.cpp (working copy) >@@ -30,19 +30,16 @@ > > #include "CodeBlock.h" > #include "DFGCommon.h" >-#include "DFGFunctionWhitelist.h" > #include "Interpreter.h" > #include "JSCInlines.h" > #include "Options.h" > > namespace JSC { namespace DFG { > >-bool isSupported(CodeBlock* codeBlock) >+bool isSupported() > { > return Options::useDFGJIT() >- && MacroAssembler::supportsFloatingPoint() >- && Options::bytecodeRangeToDFGCompile().isInRange(codeBlock->instructionCount()) >- && FunctionWhitelist::ensureGlobalWhitelist().contains(codeBlock); >+ && MacroAssembler::supportsFloatingPoint(); > } > > bool isSupportedForInlining(CodeBlock* codeBlock) >@@ -53,22 +50,22 @@ bool isSupportedForInlining(CodeBlock* c > > bool mightCompileEval(CodeBlock* codeBlock) > { >- return isSupported(codeBlock) >+ return isSupported() > && codeBlock->instructionCount() <= Options::maximumOptimizationCandidateInstructionCount(); > } > bool mightCompileProgram(CodeBlock* codeBlock) > { >- return isSupported(codeBlock) >+ return isSupported() > && codeBlock->instructionCount() <= Options::maximumOptimizationCandidateInstructionCount(); > } > bool mightCompileFunctionForCall(CodeBlock* codeBlock) > { >- return isSupported(codeBlock) >+ return isSupported() > && codeBlock->instructionCount() <= Options::maximumOptimizationCandidateInstructionCount(); > } > bool mightCompileFunctionForConstruct(CodeBlock* codeBlock) > { >- return isSupported(codeBlock) >+ return isSupported() > && codeBlock->instructionCount() <= Options::maximumOptimizationCandidateInstructionCount(); > } > >Index: Source/JavaScriptCore/dfg/DFGCapabilities.h >=================================================================== >--- Source/JavaScriptCore/dfg/DFGCapabilities.h (revision 180950) >+++ Source/JavaScriptCore/dfg/DFGCapabilities.h (working copy) >@@ -38,7 +38,7 @@ namespace JSC { namespace DFG { > #if ENABLE(DFG_JIT) > // Fast check functions; if they return true it is still necessary to > // check opcodes. >-bool isSupported(CodeBlock*); >+bool isSupported(); > bool isSupportedForInlining(CodeBlock*); > bool mightCompileEval(CodeBlock*); > bool mightCompileProgram(CodeBlock*); >Index: Source/JavaScriptCore/dfg/DFGDriver.cpp >=================================================================== >--- Source/JavaScriptCore/dfg/DFGDriver.cpp (revision 180950) >+++ Source/JavaScriptCore/dfg/DFGDriver.cpp (working copy) >@@ -30,6 +30,7 @@ > #include "JSString.h" > > #include "CodeBlock.h" >+#include "DFGFunctionWhitelist.h" > #include "DFGJITCode.h" > #include "DFGPlan.h" > #include "DFGThunks.h" >@@ -62,6 +63,10 @@ static CompilationResult compileImpl( > { > SamplingRegion samplingRegion("DFG Compilation (Driver)"); > >+ if (!Options::bytecodeRangeToDFGCompile().isInRange(codeBlock->instructionCount()) >+ || !FunctionWhitelist::ensureGlobalWhitelist().contains(codeBlock)) >+ return CompilationFailed; >+ > numCompilations++; > > ASSERT(codeBlock);
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 142234
: 247794