- 15 Nov, 2016 1 commit
-
-
rmcilroy authored
Fix two bugs with the runtime-profiler optimization heuristics for interpreted code: - Reset shared->tick_count for interpreted functions when optimizing - Update ticks after checking whether to optimize functions, to be the same as the FCG profiler checks (where updates are done to the code ticks after deciding whether to optimize). BUG=chromium:662071 Review-Url: https://codereview.chromium.org/2497933002 Cr-Commit-Position: refs/heads/master@{#40978}
-
- 09 Nov, 2016 1 commit
-
-
rmcilroy authored
Adds an IsInterpreted() function to both SharedFunctionInfo and JSFunction. This is used to fix the test-heap code-aging tests since Ignition doesn't age code. BUG=v8:4680 Review-Url: https://codereview.chromium.org/2481433002 Cr-Commit-Position: refs/heads/master@{#40868}
-
- 08 Nov, 2016 1 commit
-
-
rmcilroy authored
It looks like waiting for 4 ticks before optimizing from interpreted code is hurting performance in sunspider after turning on Ignition for all TurboFan code. Set it back to 2 ticks. BUG=chromium:661556 Review-Url: https://codereview.chromium.org/2488703002 Cr-Commit-Position: refs/heads/master@{#40845}
-
- 04 Nov, 2016 1 commit
-
-
mythria authored
When checking for marking a function for optimization, we had a check if the function is already optimized to return early. This works in non-OSR cases. For Turbofan OSR even when the current execution of the function has already been optimized, the function itself will not be replaced with optimized code. Hence, we may end up checking a function that is already marked for optimization again. A check for the frame being optimized avoids these checks. BUG= Review-Url: https://codereview.chromium.org/2450233002 Cr-Commit-Position: refs/heads/master@{#40760}
-
- 02 Nov, 2016 1 commit
-
-
bmeurer authored
All vector ICs use the TypeFeedbackVector::ComputeCounts method now, while the remaining patching ICs still use the traditional way of counting on the TypeFeedbackInfo hanging off the fullcodegen code object. This fixes the problem that counts were sometimes off. Drive-by-fix: Move FullCodeGenerator::CallIC to fullcodegen.cc. R=yangguo@chromium.org Review-Url: https://codereview.chromium.org/2472653002 Cr-Commit-Position: refs/heads/master@{#40690}
-
- 26 Oct, 2016 1 commit
-
-
mythria authored
Turbofan requires a different tuning when compared to crankshaft. Crankshaft typically has faster compilation times when compared to turbofan. Hence, added a new parameter, so that crankshaft and turbofan can be tuned independently. OSRing too soon is not good for performance, especially for sunspider benchmarks. Since they are really small functions and optimizing them is more expensive than just executing unoptimized code. Tuning the code size threshold of the functions that can be OSRed from ignition. BUG=v8:4280,chromium:659111 Review-Url: https://codereview.chromium.org/2445203003 Cr-Commit-Position: refs/heads/master@{#40598}
-
- 19 Oct, 2016 1 commit
-
-
bmeurer authored
For fullcodegen the RuntimeProfiler has a shortcut that allows it to tier up small functions earlier, when enough type feedback is available. Port the same optimization for the Ignition+TurboFan pipeline. R=mstarzinger@chromium.org Review-Url: https://chromiumcodereview.appspot.com/2427283004 Cr-Commit-Position: refs/heads/master@{#40435}
-
- 23 Sep, 2016 1 commit
-
-
klaasb authored
Previously we would not have a total count of ICs when interpreting and thus the check for sufficient type info would always succeed. Also use the optimization checks for OSR while waiting for baseline compilation and refactor the check. BUG=v8:4280 BUG=chromium:634884 Review-Url: https://codereview.chromium.org/2360913003 Cr-Commit-Position: refs/heads/master@{#39677}
-
- 20 Sep, 2016 1 commit
-
-
mvstanton authored
Full code uses patching ICs for this feedback, and the interpreter uses the type feedback vector. It's a good idea to code the vector slots appropriately as ICs so that the runtime profiler can better gauge if the function is ready for tiering up from Ignition to TurboFan. As is, the feedback is stored in "general" slots which can't be characterized by the runtime profiler into feedback states. This CL addresses that problem. Note that it's also important to carefully exclude these slots from the profiler's consideration when determining if you want to optimize from Full code. BUG= Review-Url: https://codereview.chromium.org/2342853002 Cr-Commit-Position: refs/heads/master@{#39555}
-
- 31 Aug, 2016 1 commit
-
-
marja authored
This way, many files which only need CompilationInfo but not compiler.h and its dependencies can include just compilation-info.h. BUG= Review-Url: https://codereview.chromium.org/2284313003 Cr-Commit-Position: refs/heads/master@{#39038}
-
- 16 Aug, 2016 1 commit
-
-
mstarzinger authored
This stages the --ignition-preserve-bytecode flag which preserves the bytecode even when switching to baseline code. It is now implied by the combined --ignition-staging flag. R=rmcilroy@chromium.org Review-Url: https://codereview.chromium.org/2244303003 Cr-Commit-Position: refs/heads/master@{#38648}
-
- 10 Aug, 2016 1 commit
-
-
mstarzinger authored
This switches the interface of the runtime profiler to use frames as opposed to functions for performing on-stack replacement. Requests for such replacements need to target a specific frame. This will enable us to activate bytecode as well as baseline code for the same function. The existing %OptimizeOsr runtime function also had to adapted and now takes an optional stack depth to target a specific stack frame. R=bmeurer@chromium.org BUG=v8:4764 Review-Url: https://codereview.chromium.org/2230783004 Cr-Commit-Position: refs/heads/master@{#38548}
-
- 05 Aug, 2016 1 commit
-
-
mstarzinger authored
This fixes the runtime profiler to no longer assume that seeing an optimized frame on the stack implies the underlying function is not being interpreted when entered normally. This no longer holds with code generated for OSR directly from bytecode (not installed on function). R=rmcilroy@chromium.org TEST=mjsunit/regress/regress-crbug-632800 BUG=chromium:632800 Review-Url: https://codereview.chromium.org/2208603005 Cr-Commit-Position: refs/heads/master@{#38360}
-
- 01 Aug, 2016 1 commit
-
-
jochen authored
Also remove unnecessary includes of scopeinfo.h all over the place R=marja@chromium.org TBR=verwaest@chromium.org BUG= Review-Url: https://codereview.chromium.org/2197973002 Cr-Commit-Position: refs/heads/master@{#38204}
-
- 29 Jul, 2016 1 commit
-
-
mstarzinger authored
This adds preliminary support for on-stack replacement from Ignition to optimized code generated by TurboFan to the runtime profiler. Involved heuristics (e.g. code size allowance) have been taken from existing code without any re-evaluation in the new setting. R=rmcilroy@chromium.org BUG=v8:4764 Review-Url: https://codereview.chromium.org/2182183005 Cr-Commit-Position: refs/heads/master@{#38159}
-
- 25 Jul, 2016 2 commits
-
-
mstarzinger authored
This adds a new field to the header of every BytecodeArray which stores the current nesting level up to which loop back edges are armed as OSR points. The intention is to arm OSR points incrementally from outermost to innermost until one fires (similar to OSR from FullCodegen). R=rmcilroy@chromium.org BUG=v8:4764 Review-Url: https://codereview.chromium.org/2172583002 Cr-Commit-Position: refs/heads/master@{#38017}
-
rmcilroy authored
Always use the BytecodeGraphBuilder when the --turbo-from-bytecode is enabled, assuming the function should be compiled for Ignition. Adds a new MaybeOptimizeIgnition function to runtime-profiler which is called if the function should be optimized from bytecode rather than going via full-codegen. BUG=v8:4280 Committed: https://crrev.com/9ca7db914be88e6792a88eab4a1988ee031d70c4 Review-Url: https://codereview.chromium.org/2156753002 Cr-Original-Commit-Position: refs/heads/master@{#37921} Cr-Commit-Position: refs/heads/master@{#38002}
-
- 21 Jul, 2016 2 commits
-
-
machenbach authored
Revert of [Intepreter] Always use BytecodeGraphBuilder when --turbo-from-bytecode (patchset #3 id:80001 of https://codereview.chromium.org/2156753002/ ) Reason for revert: Breaks tsan: https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20TSAN/builds/10758 Original issue's description: > [Intepreter] Always use BytecodeGraphBuilder when --turbo-from-bytecode > > Always use the BytecodeGraphBuilder when the --turbo-from-bytecode > is enabled, assuming the function should be compiled for Ignition. > Adds a new MaybeOptimizeIgnition function to runtime-profiler > which is called if the function should be optimized from bytecode > rather than going via full-codegen. > > BUG=v8:4280 > > Committed: https://crrev.com/9ca7db914be88e6792a88eab4a1988ee031d70c4 > Cr-Commit-Position: refs/heads/master@{#37921} TBR=mstarzinger@chromium.org,rmcilroy@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4280 Review-Url: https://codereview.chromium.org/2165223002 Cr-Commit-Position: refs/heads/master@{#37925}
-
rmcilroy authored
Always use the BytecodeGraphBuilder when the --turbo-from-bytecode is enabled, assuming the function should be compiled for Ignition. Adds a new MaybeOptimizeIgnition function to runtime-profiler which is called if the function should be optimized from bytecode rather than going via full-codegen. BUG=v8:4280 Review-Url: https://codereview.chromium.org/2156753002 Cr-Commit-Position: refs/heads/master@{#37921}
-
- 22 Jun, 2016 1 commit
-
-
mythria authored
Updates kProfilerTicksBeforeBaseline in runtime-profiler to allow functions to switch from ignition to full-codgen earlier. This helps on many benchmarks and does not impact the code size significantly. BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/2085153003 Cr-Commit-Position: refs/heads/master@{#37189}
-
- 27 May, 2016 1 commit
-
-
mvstanton authored
We get less "pollution" of type feedback if we have one vector per native context, rather than one for the whole system. This CL moves the vector appropriately. BUG= Review-Url: https://codereview.chromium.org/1906823002 Cr-Commit-Position: refs/heads/master@{#36539}
-
- 16 May, 2016 1 commit
-
-
rmcilroy authored
Remove checks for IC hotness from Ignition tiering up decision since this is not relevent for full-codegen compilation. Also make the decision about what tier we are moving to more explicit and visible in --trace-opt. BUG=v8:4280 LOG=N Review-Url: https://codereview.chromium.org/1969773002 Cr-Commit-Position: refs/heads/master@{#36260}
-
- 25 Apr, 2016 1 commit
-
-
mstarzinger authored
This adds a baseline tier to the compilation pipeline. Currently this tier is used to model a path from the interpreter to optimized code via full-codegen code (to ensure sufficient type feedback). Switching from the unoptimized tier to the baseline tier is limited to happen only when there are no activations of the given function on the stack. R=rmcilroy@chromium.org,bmeurer@chromium.org Review URL: https://codereview.chromium.org/1903273004 Cr-Commit-Position: refs/heads/master@{#35757}
-
- 22 Mar, 2016 1 commit
-
-
mstarzinger authored
The JSFunction::PassesFilter predicate is not fine-grained enough to actually distinguish different closures and hence can be changed into SharedFunctionInfo::PassesFilter instead. This will allow the compiler to use is more broadly. R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/1823033002 Cr-Commit-Position: refs/heads/master@{#34981}
-
- 19 Feb, 2016 1 commit
-
-
rmcilroy authored
Adds a profiling counter to each BytecodeArray object, and adds code to Jump and Return bytecode handlers to update this counter by the size of the jump or the distance from the return to the start of the function. This is more accurate than fullcodegen's approach since it takes forward jumps into account as well as back-edges. Modifies RuntimeProfiler to track ticks for interpreted frames. Currently we use the SharedFunctionInfo::profiler_ticks() instead of adding another to tick field to avoid adding another field to BytecodeArray since SharedFunctionInfo::profiler_ticks() is only used by Crankshaft otherwise so we shouldn't need both for BUG=v8:4689 LOG=N Review URL: https://codereview.chromium.org/1707693003 Cr-Commit-Position: refs/heads/master@{#34166}
-
- 05 Feb, 2016 1 commit
-
-
mvstanton authored
Revert of Type Feedback Vector lives in the closure (patchset #2 id:40001 of https://codereview.chromium.org/1668103002/ ) Reason for revert: Must revert for now due to chromium api natives issues. Original issue's description: > Type Feedback Vector lives in the closure > > (RELAND: the problem before was a missing write barrier for adding the code > entry to the new closure. It's been addressed with a new macro instruction > and test. The only change to this CL is the addition of two calls to > __ RecordWriteCodeEntryField() in the platform CompileLazy builtin.) > > We get less "pollution" of type feedback if we have one vector per native > context, rather than one for the whole system. This CL moves the vector > appropriately. > > We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The > vector actually lives in the first slot of the literals array (indeed there is > great commonality between those arrays, they can be thought of as the same > thing). So we make greater effort to ensure there is a valid literals array > after compilation. > > This meant, for performance reasons, that we needed to extend > FastNewClosureStub to support creating closures with literals. And ultimately, > it drove us to move the optimized code map lookup out of FastNewClosureStub > and into the compile lazy builtin. > > The heap change is trivial so I TBR Hannes for it... > Also, Yang has had a look at the debugger changes already and approved 'em. So he is TBR style too. > And Benedikt reviewed it as well. > > TBR=hpayer@chromium.org, yangguo@chromium.org, bmeurer@chromium.org > > BUG= > > Committed: https://crrev.com/bb31db3ad6de16f86a61f6c7bbfd3274e3d957b5 > Cr-Commit-Position: refs/heads/master@{#33741} TBR=bmeurer@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review URL: https://codereview.chromium.org/1670813005 Cr-Commit-Position: refs/heads/master@{#33766}
-
- 04 Feb, 2016 1 commit
-
-
mvstanton authored
(RELAND: the problem before was a missing write barrier for adding the code entry to the new closure. It's been addressed with a new macro instruction and test. The only change to this CL is the addition of two calls to __ RecordWriteCodeEntryField() in the platform CompileLazy builtin.) We get less "pollution" of type feedback if we have one vector per native context, rather than one for the whole system. This CL moves the vector appropriately. We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The vector actually lives in the first slot of the literals array (indeed there is great commonality between those arrays, they can be thought of as the same thing). So we make greater effort to ensure there is a valid literals array after compilation. This meant, for performance reasons, that we needed to extend FastNewClosureStub to support creating closures with literals. And ultimately, it drove us to move the optimized code map lookup out of FastNewClosureStub and into the compile lazy builtin. The heap change is trivial so I TBR Hannes for it... Also, Yang has had a look at the debugger changes already and approved 'em. So he is TBR style too. And Benedikt reviewed it as well. TBR=hpayer@chromium.org, yangguo@chromium.org, bmeurer@chromium.org BUG= Review URL: https://codereview.chromium.org/1668103002 Cr-Commit-Position: refs/heads/master@{#33741}
-
- 27 Jan, 2016 2 commits
-
-
mvstanton authored
Revert of Type Feedback Vector lives in the closure (patchset #2 id:20001 of https://codereview.chromium.org/1642613002/ ) Reason for revert: Bug: failing to use write barrier when writing code entry into closure. Original issue's description: > Reland of Type Feedback Vector lives in the closure > > (Fixed a bug found by nosnap builds.) > > We get less "pollution" of type feedback if we have one vector per native > context, rather than one for the whole system. This CL moves the vector > appropriately. > > We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The > vector actually lives in the first slot of the literals array (indeed there is > great commonality between those arrays, they can be thought of as the same > thing). So we make greater effort to ensure there is a valid literals array > after compilation. > > This meant, for performance reasons, that we needed to extend > FastNewClosureStub to support creating closures with literals. And ultimately, > it drove us to move the optimized code map lookup out of FastNewClosureStub > and into the compile lazy builtin. > > The heap change is trivial so I TBR Hannes for it... > > TBR=hpayer@chromium.org > BUG= > > Committed: https://crrev.com/d984b3b0ce91e55800f5323b4bb32a06f8a5aab1 > Cr-Commit-Position: refs/heads/master@{#33548} TBR=bmeurer@chromium.org,yangguo@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review URL: https://codereview.chromium.org/1643533003 Cr-Commit-Position: refs/heads/master@{#33556}
-
mvstanton authored
(Fixed a bug found by nosnap builds.) We get less "pollution" of type feedback if we have one vector per native context, rather than one for the whole system. This CL moves the vector appropriately. We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The vector actually lives in the first slot of the literals array (indeed there is great commonality between those arrays, they can be thought of as the same thing). So we make greater effort to ensure there is a valid literals array after compilation. This meant, for performance reasons, that we needed to extend FastNewClosureStub to support creating closures with literals. And ultimately, it drove us to move the optimized code map lookup out of FastNewClosureStub and into the compile lazy builtin. The heap change is trivial so I TBR Hannes for it... TBR=hpayer@chromium.org BUG= Review URL: https://codereview.chromium.org/1642613002 Cr-Commit-Position: refs/heads/master@{#33548}
-
- 26 Jan, 2016 2 commits
-
-
mvstanton authored
Revert of Type Feedback Vector lives in the closure (patchset #12 id:260001 of https://codereview.chromium.org/1563213002/ ) Reason for revert: FAilure on win32 bot, need to investigate webkit failures. Original issue's description: > Type Feedback Vector lives in the closure > > We get less "pollution" of type feedback if we have one vector per native > context, rather than one for the whole system. This CL moves the vector > appropriately. > > We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The > vector actually lives in the first slot of the literals array (indeed there is > great commonality between those arrays, they can be thought of as the same > thing). So we make greater effort to ensure there is a valid literals array > after compilation. > > This meant, for performance reasons, that we needed to extend > FastNewClosureStub to support creating closures with literals. And ultimately, > it drove us to move the optimized code map lookup out of FastNewClosureStub > and into the compile lazy builtin. > > The heap change is trivial so I TBR Hannes for it... > > TBR=hpayer@chromium.org > > BUG= > > Committed: https://crrev.com/a5200f7ed4d11c6b882fa667da7a1864226544b4 > Cr-Commit-Position: refs/heads/master@{#33518} TBR=bmeurer@chromium.org,akos.palfi@imgtec.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review URL: https://codereview.chromium.org/1632993003 Cr-Commit-Position: refs/heads/master@{#33520}
-
mvstanton authored
We get less "pollution" of type feedback if we have one vector per native context, rather than one for the whole system. This CL moves the vector appropriately. We rely more heavily on the Optimized Code Map in the SharedFunctionInfo. The vector actually lives in the first slot of the literals array (indeed there is great commonality between those arrays, they can be thought of as the same thing). So we make greater effort to ensure there is a valid literals array after compilation. This meant, for performance reasons, that we needed to extend FastNewClosureStub to support creating closures with literals. And ultimately, it drove us to move the optimized code map lookup out of FastNewClosureStub and into the compile lazy builtin. The heap change is trivial so I TBR Hannes for it... TBR=hpayer@chromium.org BUG= Review URL: https://codereview.chromium.org/1563213002 Cr-Commit-Position: refs/heads/master@{#33518}
-
- 09 Dec, 2015 1 commit
-
-
mvstanton authored
It's cumbersome to maintain IC profiler statistics all the time. Let's just do it as needed. BUG= Review URL: https://codereview.chromium.org/1507903004 Cr-Commit-Position: refs/heads/master@{#32693}
-
- 26 Nov, 2015 1 commit
-
-
rossberg authored
Moves all files related to AST and scopes into ast/, and all files related to scanner & parser to parsing/. Also eliminates a couple of spurious dependencies. R=mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/1481613002 Cr-Commit-Position: refs/heads/master@{#32351}
-
- 04 Nov, 2015 1 commit
-
-
mstarzinger authored
This removes several methods from JSFunction that just delegate to SharedFunctionInfo. These methods are especially dangerous when they hide the fact that they potentially affect all function instances deriving from the same underlying SharedFunctionInfo. R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1417213005 Cr-Commit-Position: refs/heads/master@{#31792}
-
- 20 Aug, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1285183010 Cr-Commit-Position: refs/heads/master@{#30263}
-
- 12 Aug, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/1283183002 Cr-Commit-Position: refs/heads/master@{#30127}
-
- 10 Aug, 2015 1 commit
-
-
mstarzinger authored
This is a first step towards constraining down the heap interface to just the heap.h file. Note that many includes still leak through that file to the global "src" directory, but there now is a single place controlling which declarations leak that way. Especially inclusion of inline header files within "heap" has been limited drastically. R=hpayer@chromium.org,mlippautz@chromium.org Review URL: https://codereview.chromium.org/1281233003 Cr-Commit-Position: refs/heads/master@{#30092}
-
- 24 Jul, 2015 1 commit
-
-
yangguo authored
R=jkummerow@chromium.org Review URL: https://codereview.chromium.org/1248443003 Cr-Commit-Position: refs/heads/master@{#29840}
-
- 13 Jul, 2015 1 commit
-
-
bmeurer authored
Up until now we were unable to have profiler ticks beyong 255, which basically disabled OSR for moderately large functions. BUG=chromium:508741 LOG=n R=jarin@chromium.org Review URL: https://codereview.chromium.org/1224173003 Cr-Commit-Position: refs/heads/master@{#29597}
-
- 01 Jun, 2015 1 commit
-
-
erikcorry authored
When compiling on a laptop I like to concatenate the small test files. This makes a big difference to compile times. These changes make that easier. R=ulan@chromium.org BUG= Review URL: https://codereview.chromium.org/1163803002 Cr-Commit-Position: refs/heads/master@{#28742}
-