Bug 112838

Summary: The DFG should be able to tier-up and OSR enter into the FTL
Product: WebKit Reporter: Filip Pizlo <fpizlo>
Component: JavaScriptCoreAssignee: Filip Pizlo <fpizlo>
Status: RESOLVED FIXED    
Severity: Normal CC: barraclough, buildbot, commit-queue, eflews.bot, ggaren, gtk-ews, gyuyoung.kim, mark.lam, mhahnenberg, msaboff, oliver, rakuco, rego+ews, rniwa, sam, webkit-ews, xan.lopez
Priority: P2    
Version: 528+ (Nightly build)   
Hardware: All   
OS: All   
Bug Depends on: 120326, 120453, 120486, 120489, 120567    
Bug Blocks: 112836    
Attachments:
Description Flags
it begins...
none
more things
webkit-ews: commit-queue-
I think I know what I'm doing now
none
it's sort of getting there
none
slowly but surely!
none
it's getting fun.
none
even more things
none
getting there
none
getting close
none
starting to compile
none
builds with !ENABLE(FTL_JIT)
none
it builds
none
JSC just did an OSR-entry hot loop transfer from the DFG to the FTL.
none
it makes imaging-gaussian-blur faster
none
the patch
webkit-ews: commit-queue-
the patch
none
the patch
none
the patch fpizlo: review+

Filip Pizlo
Reported 2013-03-20 13:42:55 PDT
This also means that DFG code block jettisoning logic, and the CodeBlock's ability to keep a linked list of alternate compilations of an executable, should all be aware of the fact that there are two kinds of DFG compilation - the lesser kind and the better kind (or whatever we end up calling it).
Attachments
it begins... (4.03 KB, patch)
2013-08-29 17:01 PDT, Filip Pizlo
no flags
more things (19.08 KB, patch)
2013-08-29 19:35 PDT, Filip Pizlo
webkit-ews: commit-queue-
I think I know what I'm doing now (32.08 KB, patch)
2013-08-30 12:36 PDT, Filip Pizlo
no flags
it's sort of getting there (37.50 KB, patch)
2013-08-30 13:23 PDT, Filip Pizlo
no flags
slowly but surely! (45.00 KB, patch)
2013-08-30 16:20 PDT, Filip Pizlo
no flags
it's getting fun. (55.78 KB, patch)
2013-08-30 19:39 PDT, Filip Pizlo
no flags
even more things (64.02 KB, patch)
2013-08-31 11:33 PDT, Filip Pizlo
no flags
getting there (84.73 KB, patch)
2013-08-31 14:44 PDT, Filip Pizlo
no flags
getting close (107.33 KB, patch)
2013-08-31 15:48 PDT, Filip Pizlo
no flags
starting to compile (179.75 KB, patch)
2013-09-02 12:53 PDT, Filip Pizlo
no flags
builds with !ENABLE(FTL_JIT) (179.79 KB, patch)
2013-09-02 13:03 PDT, Filip Pizlo
no flags
it builds (182.27 KB, patch)
2013-09-02 13:54 PDT, Filip Pizlo
no flags
JSC just did an OSR-entry hot loop transfer from the DFG to the FTL. (190.96 KB, patch)
2013-09-02 15:17 PDT, Filip Pizlo
no flags
it makes imaging-gaussian-blur faster (196.00 KB, patch)
2013-09-02 22:14 PDT, Filip Pizlo
no flags
the patch (150.81 KB, patch)
2013-09-03 10:15 PDT, Filip Pizlo
webkit-ews: commit-queue-
the patch (153.61 KB, patch)
2013-09-03 10:38 PDT, Filip Pizlo
no flags
the patch (156.18 KB, patch)
2013-09-03 13:54 PDT, Filip Pizlo
no flags
the patch (157.13 KB, patch)
2013-09-03 15:20 PDT, Filip Pizlo
fpizlo: review+
Filip Pizlo
Comment 1 2013-08-26 14:48:29 PDT
*** Bug 113625 has been marked as a duplicate of this bug. ***
Filip Pizlo
Comment 2 2013-08-29 17:01:28 PDT
Created attachment 210049 [details] it begins...
Filip Pizlo
Comment 3 2013-08-29 19:35:28 PDT
Created attachment 210058 [details] more things
Early Warning System Bot
Comment 4 2013-08-30 03:00:51 PDT
Early Warning System Bot
Comment 5 2013-08-30 03:02:44 PDT
Comment on attachment 210058 [details] more things Attachment 210058 [details] did not pass qt-wk2-ews (qt-wk2): Output: http://webkit-queues.appspot.com/results/1648038
EFL EWS Bot
Comment 6 2013-08-30 03:16:17 PDT
Comment on attachment 210058 [details] more things Attachment 210058 [details] did not pass efl-wk2-ews (efl-wk2): Output: http://webkit-queues.appspot.com/results/1651045
Build Bot
Comment 7 2013-08-30 03:23:14 PDT
Comment on attachment 210058 [details] more things Attachment 210058 [details] did not pass mac-wk2-ews (mac-wk2): Output: http://webkit-queues.appspot.com/results/1650047
Build Bot
Comment 8 2013-08-30 03:41:30 PDT
EFL EWS Bot
Comment 9 2013-08-30 03:56:14 PDT
kov's GTK+ EWS bot
Comment 10 2013-08-30 04:14:16 PDT
kov's GTK+ EWS bot
Comment 11 2013-08-30 05:34:47 PDT
Filip Pizlo
Comment 12 2013-08-30 12:36:33 PDT
Created attachment 210150 [details] I think I know what I'm doing now
Filip Pizlo
Comment 13 2013-08-30 13:23:50 PDT
Created attachment 210154 [details] it's sort of getting there
Filip Pizlo
Comment 14 2013-08-30 16:20:54 PDT
Created attachment 210174 [details] slowly but surely!
Filip Pizlo
Comment 15 2013-08-30 19:39:42 PDT
Created attachment 210180 [details] it's getting fun.
Filip Pizlo
Comment 16 2013-08-31 11:33:11 PDT
Created attachment 210199 [details] even more things
Filip Pizlo
Comment 17 2013-08-31 14:44:18 PDT
Created attachment 210216 [details] getting there
Filip Pizlo
Comment 18 2013-08-31 15:48:15 PDT
Created attachment 210219 [details] getting close I think I need to rethink jettisoning, if I want any of this to make sense.
Filip Pizlo
Comment 19 2013-09-02 12:53:25 PDT
Created attachment 210307 [details] starting to compile This includes the patch for https://bugs.webkit.org/show_bug.cgi?id=120567 because I need that and it hasn't been reviewed yet.
Filip Pizlo
Comment 20 2013-09-02 13:03:39 PDT
Created attachment 210308 [details] builds with !ENABLE(FTL_JIT)
Filip Pizlo
Comment 21 2013-09-02 13:54:42 PDT
Created attachment 210309 [details] it builds
Filip Pizlo
Comment 22 2013-09-02 15:17:22 PDT
Created attachment 210312 [details] JSC just did an OSR-entry hot loop transfer from the DFG to the FTL.
Filip Pizlo
Comment 23 2013-09-02 15:18:07 PDT
(In reply to comment #22) > Created an attachment (id=210312) [details] > JSC just did an OSR-entry hot loop transfer from the DFG to the FTL. This would basically be ready for review, except that it depends on and includes https://bugs.webkit.org/show_bug.cgi?id=120567, which hasn't been reviewed or landed yet.
Filip Pizlo
Comment 24 2013-09-02 22:14:57 PDT
Created attachment 210322 [details] it makes imaging-gaussian-blur faster Turns out I had to rethink how OSR entrypoint creation works. I'm not sure I'm 100% happy with it but it does the job.
Filip Pizlo
Comment 25 2013-09-03 10:15:23 PDT
Created attachment 210381 [details] the patch Rebased. I think it's ready.
WebKit Commit Bot
Comment 26 2013-09-03 10:17:11 PDT
Attachment 210381 [details] did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/ChangeLog', u'LayoutTests/fast/js/regress/script-tests/marsaglia.js', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/CodeBlock.h', u'Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h', u'Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp', u'Source/JavaScriptCore/dfg/DFGCFGSimplificationPhase.cpp', u'Source/JavaScriptCore/dfg/DFGClobberize.h', u'Source/JavaScriptCore/dfg/DFGDriver.cpp', u'Source/JavaScriptCore/dfg/DFGDriver.h', u'Source/JavaScriptCore/dfg/DFGFixupPhase.cpp', u'Source/JavaScriptCore/dfg/DFGGraph.cpp', u'Source/JavaScriptCore/dfg/DFGGraph.h', u'Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.cpp', u'Source/JavaScriptCore/dfg/DFGJITCode.cpp', u'Source/JavaScriptCore/dfg/DFGJITCode.h', u'Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp', u'Source/JavaScriptCore/dfg/DFGLoopPreHeaderCreationPhase.cpp', u'Source/JavaScriptCore/dfg/DFGLoopPreHeaderCreationPhase.h', u'Source/JavaScriptCore/dfg/DFGNode.h', u'Source/JavaScriptCore/dfg/DFGNodeType.h', u'Source/JavaScriptCore/dfg/DFGOSREntry.cpp', u'Source/JavaScriptCore/dfg/DFGOSREntrypointCreationPhase.cpp', u'Source/JavaScriptCore/dfg/DFGOSREntrypointCreationPhase.h', u'Source/JavaScriptCore/dfg/DFGOperations.cpp', u'Source/JavaScriptCore/dfg/DFGOperations.h', u'Source/JavaScriptCore/dfg/DFGPlan.cpp', u'Source/JavaScriptCore/dfg/DFGPlan.h', u'Source/JavaScriptCore/dfg/DFGPredictionInjectionPhase.cpp', u'Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp', u'Source/JavaScriptCore/dfg/DFGSafeToExecute.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp', u'Source/JavaScriptCore/dfg/DFGTierUpCheckInjectionPhase.cpp', u'Source/JavaScriptCore/dfg/DFGTierUpCheckInjectionPhase.h', u'Source/JavaScriptCore/dfg/DFGToFTLDeferredCompilationCallback.cpp', u'Source/JavaScriptCore/dfg/DFGToFTLDeferredCompilationCallback.h', u'Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp', u'Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h', u'Source/JavaScriptCore/dfg/DFGWorklist.cpp', u'Source/JavaScriptCore/dfg/DFGWorklist.h', u'Source/JavaScriptCore/ftl/FTLCapabilities.cpp', u'Source/JavaScriptCore/ftl/FTLCapabilities.h', u'Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.cpp', u'Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.h', u'Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp', u'Source/JavaScriptCore/ftl/FTLLink.cpp', u'Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp', u'Source/JavaScriptCore/ftl/FTLOSREntry.cpp', u'Source/JavaScriptCore/ftl/FTLOSREntry.h', u'Source/JavaScriptCore/ftl/FTLOutput.h', u'Source/JavaScriptCore/ftl/FTLState.cpp', u'Source/JavaScriptCore/interpreter/Register.h', u'Source/JavaScriptCore/jit/JIT.cpp', u'Source/JavaScriptCore/jit/JITCode.cpp', u'Source/JavaScriptCore/jit/JITCode.h', u'Source/JavaScriptCore/jit/JITStubs.cpp', u'Source/JavaScriptCore/runtime/Executable.cpp', u'Source/JavaScriptCore/runtime/Options.h', u'Source/JavaScriptCore/runtime/VM.cpp', u'Source/JavaScriptCore/runtime/VM.h']" exit_code: 1 Source/JavaScriptCore/dfg/DFGJITCode.h:105: The parameter name "exec" adds no information, so it should be removed. [readability/parameter_name] [5] Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp:31: Alphabetical sorting problem. [build/include_order] [4] Source/JavaScriptCore/ftl/FTLState.cpp:34: Alphabetical sorting problem. [build/include_order] [4] Source/JavaScriptCore/dfg/DFGOperations.cpp:2132: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3] Source/JavaScriptCore/ftl/FTLOSREntry.cpp:81: When wrapping a line, only indent 4 spaces. [whitespace/indent] [3] Source/JavaScriptCore/ftl/FTLOSREntry.cpp:89: Declaration has space between type name and * in void *result [whitespace/declaration] [3] Total errors found: 6 in 61 files If any of these errors are false positives, please file a bug against check-webkit-style.
Early Warning System Bot
Comment 27 2013-09-03 10:23:19 PDT
Early Warning System Bot
Comment 28 2013-09-03 10:26:08 PDT
Comment on attachment 210381 [details] the patch Attachment 210381 [details] did not pass qt-wk2-ews (qt-wk2): Output: http://webkit-queues.appspot.com/results/1693306
Filip Pizlo
Comment 29 2013-09-03 10:38:19 PDT
Created attachment 210384 [details] the patch Style and build fixes.
WebKit Commit Bot
Comment 30 2013-09-03 10:42:18 PDT
Attachment 210384 [details] did not pass style-queue: Failed to run "['Tools/Scripts/check-webkit-style', '--diff-files', u'LayoutTests/ChangeLog', u'LayoutTests/fast/js/regress/script-tests/marsaglia.js', u'Source/JavaScriptCore/CMakeLists.txt', u'Source/JavaScriptCore/ChangeLog', u'Source/JavaScriptCore/GNUmakefile.list.am', u'Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj', u'Source/JavaScriptCore/Target.pri', u'Source/JavaScriptCore/bytecode/CodeBlock.cpp', u'Source/JavaScriptCore/bytecode/CodeBlock.h', u'Source/JavaScriptCore/dfg/DFGAbstractInterpreterInlines.h', u'Source/JavaScriptCore/dfg/DFGByteCodeParser.cpp', u'Source/JavaScriptCore/dfg/DFGCFGSimplificationPhase.cpp', u'Source/JavaScriptCore/dfg/DFGClobberize.h', u'Source/JavaScriptCore/dfg/DFGDriver.cpp', u'Source/JavaScriptCore/dfg/DFGDriver.h', u'Source/JavaScriptCore/dfg/DFGFixupPhase.cpp', u'Source/JavaScriptCore/dfg/DFGGraph.cpp', u'Source/JavaScriptCore/dfg/DFGGraph.h', u'Source/JavaScriptCore/dfg/DFGInPlaceAbstractState.cpp', u'Source/JavaScriptCore/dfg/DFGJITCode.cpp', u'Source/JavaScriptCore/dfg/DFGJITCode.h', u'Source/JavaScriptCore/dfg/DFGJITFinalizer.cpp', u'Source/JavaScriptCore/dfg/DFGLoopPreHeaderCreationPhase.cpp', u'Source/JavaScriptCore/dfg/DFGLoopPreHeaderCreationPhase.h', u'Source/JavaScriptCore/dfg/DFGNode.h', u'Source/JavaScriptCore/dfg/DFGNodeType.h', u'Source/JavaScriptCore/dfg/DFGOSREntry.cpp', u'Source/JavaScriptCore/dfg/DFGOSREntrypointCreationPhase.cpp', u'Source/JavaScriptCore/dfg/DFGOSREntrypointCreationPhase.h', u'Source/JavaScriptCore/dfg/DFGOperations.cpp', u'Source/JavaScriptCore/dfg/DFGOperations.h', u'Source/JavaScriptCore/dfg/DFGPlan.cpp', u'Source/JavaScriptCore/dfg/DFGPlan.h', u'Source/JavaScriptCore/dfg/DFGPredictionInjectionPhase.cpp', u'Source/JavaScriptCore/dfg/DFGPredictionPropagationPhase.cpp', u'Source/JavaScriptCore/dfg/DFGSafeToExecute.h', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT32_64.cpp', u'Source/JavaScriptCore/dfg/DFGSpeculativeJIT64.cpp', u'Source/JavaScriptCore/dfg/DFGTierUpCheckInjectionPhase.cpp', u'Source/JavaScriptCore/dfg/DFGTierUpCheckInjectionPhase.h', u'Source/JavaScriptCore/dfg/DFGToFTLDeferredCompilationCallback.cpp', u'Source/JavaScriptCore/dfg/DFGToFTLDeferredCompilationCallback.h', u'Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.cpp', u'Source/JavaScriptCore/dfg/DFGToFTLForOSREntryDeferredCompilationCallback.h', u'Source/JavaScriptCore/dfg/DFGWorklist.cpp', u'Source/JavaScriptCore/dfg/DFGWorklist.h', u'Source/JavaScriptCore/ftl/FTLCapabilities.cpp', u'Source/JavaScriptCore/ftl/FTLCapabilities.h', u'Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.cpp', u'Source/JavaScriptCore/ftl/FTLForOSREntryJITCode.h', u'Source/JavaScriptCore/ftl/FTLJITFinalizer.cpp', u'Source/JavaScriptCore/ftl/FTLLink.cpp', u'Source/JavaScriptCore/ftl/FTLLowerDFGToLLVM.cpp', u'Source/JavaScriptCore/ftl/FTLOSREntry.cpp', u'Source/JavaScriptCore/ftl/FTLOSREntry.h', u'Source/JavaScriptCore/ftl/FTLOutput.h', u'Source/JavaScriptCore/ftl/FTLState.cpp', u'Source/JavaScriptCore/interpreter/Register.h', u'Source/JavaScriptCore/jit/JIT.cpp', u'Source/JavaScriptCore/jit/JITCode.cpp', u'Source/JavaScriptCore/jit/JITCode.h', u'Source/JavaScriptCore/jit/JITStubs.cpp', u'Source/JavaScriptCore/runtime/Executable.cpp', u'Source/JavaScriptCore/runtime/Options.h', u'Source/JavaScriptCore/runtime/VM.cpp', u'Source/JavaScriptCore/runtime/VM.h']" exit_code: 1 Source/JavaScriptCore/ftl/FTLOSREntry.cpp:89: Declaration has space between type name and * in void *result [whitespace/declaration] [3] Total errors found: 1 in 64 files If any of these errors are false positives, please file a bug against check-webkit-style.
Filip Pizlo
Comment 31 2013-09-03 13:54:59 PDT
Created attachment 210408 [details] the patch
Filip Pizlo
Comment 32 2013-09-03 15:20:39 PDT
Created attachment 210414 [details] the patch
Filip Pizlo
Comment 33 2013-09-03 16:30:06 PDT
Comment on attachment 210414 [details] the patch r=MarkH (reviewed in person)
Filip Pizlo
Comment 34 2013-09-03 23:25:24 PDT
Note You need to log in before you can comment on or make changes to this bug.