- 08 Feb, 2017 1 commit
-
-
yangguo authored
Previously, both type feedback vector and the shared function info of a function points to the matching type feedback metadata. This makes finding the shared function info of a type feedback vector difficult. Instead, we now point the type feeback vector to the shared function info, and find the metadata through the shared function info. Also remove the obsolete empty type feedback vector. R=hpayer@chromium.org, mvstanton@chromium.org BUG=v8:5808 Review-Url: https://codereview.chromium.org/2672363002 Cr-Commit-Position: refs/heads/master@{#43026}
-
- 07 Feb, 2017 1 commit
-
-
ishell@chromium.org authored
... and TypeFeedbackMetadata to FeedbackMetadata. BUG= Change-Id: I2556d1c2a8f37b8cf3d532cc98d973b6dc7e9e6c Reviewed-on: https://chromium-review.googlesource.com/439244 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Michael Stanton <mvstanton@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Hannes Payer <hpayer@chromium.org> Cr-Commit-Position: refs/heads/master@{#42999}
-
- 06 Feb, 2017 1 commit
-
-
mvstanton authored
TypeFeedbackVectors are strongly rooted by a closure. However, in modern JavaScript closures are created and abandoned more freely. An important closure may not be present in the root-set at time of garbage collection, even though we've cached optimized code and use it regularly. For example, consider leaf functions in an event dispatching system. They may well be "hot," but tragically non-present when we collect the heap. Until now, we've relied on a weak root to cache the feedback vector in this case. Since there is no way to signal intent or relative importance, this weak root is as susceptible to clearing as any other weak root at garbage collection time. Meanwhile, the feedback vector has become more important. All of our ICs store their data there. Literal and regex boilerplates are stored there. If we lose the vector, then we not only lose optimized code built from it, we also lose the very feedback which allowed us to create that optimized code. Therefore it's vital to express that dependency through the root set. This CL does this by creating a strong link to a feedback vector at the instantiation site of the function closure. This instantiation site is in the code and feedback vector of the outer closure. BUG=v8:5456 Review-Url: https://codereview.chromium.org/2674593003 Cr-Commit-Position: refs/heads/master@{#42953}
-
- 30 Jan, 2017 1 commit
-
-
mvstanton authored
They have the same lifetime. It's a match! Both structures are native context dependent and dealt with (creation, clearing, gathering feedback) at the same time. By treating the spaces used for literal boilerplates as feedback vector slots, we no longer have to keep track of the materialized literal count elsewhere. A follow-on CL removes even more parser infrastructure related to this count. BUG=v8:5456 Review-Url: https://codereview.chromium.org/2655853010 Cr-Commit-Position: refs/heads/master@{#42771}
-
- 19 Jan, 2017 3 commits
-
-
mvstanton authored
GC performance issues need to be addressed first. TBR=bmeurer@chromium.org, mstarzinger@chromium.org, yangguo@chromium.org BUG=v8:5456 Review-Url: https://codereview.chromium.org/2642743002 Cr-Original-Commit-Position: refs/heads/master@{#42495} Committed: https://chromium.googlesource.com/v8/v8/+/7803aa1ffb2f835c5f317ed2a097390d53e52567 Review-Url: https://codereview.chromium.org/2642743002 Cr-Commit-Position: refs/heads/master@{#42517}
-
machenbach authored
Revert of Revert [TypeFeedbackVector] Root literal arrays in function literal slots (patchset #2 id:20001 of https://codereview.chromium.org/2642743002/ ) Reason for revert: Breaks nosnap: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20nosnap/builds/13802 Original issue's description: > Revert [TypeFeedbackVector] Root literal arrays in function literal slots > > GC performance issues need to be addressed first. > > TBR=bmeurer@chromium.org, mstarzinger@chromium.org, yangguo@chromium.org > BUG=v8:5456 > > Review-Url: https://codereview.chromium.org/2642743002 > Cr-Commit-Position: refs/heads/master@{#42495} > Committed: https://chromium.googlesource.com/v8/v8/+/7803aa1ffb2f835c5f317ed2a097390d53e52567 TBR=mvstanton@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5456 Review-Url: https://codereview.chromium.org/2642933003 Cr-Commit-Position: refs/heads/master@{#42496}
-
mvstanton authored
GC performance issues need to be addressed first. TBR=bmeurer@chromium.org, mstarzinger@chromium.org, yangguo@chromium.org BUG=v8:5456 Review-Url: https://codereview.chromium.org/2642743002 Cr-Commit-Position: refs/heads/master@{#42495}
-
- 12 Jan, 2017 3 commits
-
-
mvstanton authored
Literal arrays and feedback vectors for a function can be garbage collected if we don't have a rooted closure for the function, which happens often. It's expensive to come back from this (recreating boilerplates and gathering feedback again), and the cost is disproportionate if the function was inlined into optimized code. To guard against losing these arrays when we need them, we'll now create literal arrays when creating the feedback vector for the outer closure, and root them strongly in that vector. BUG=v8:5456 Review-Url: https://codereview.chromium.org/2620753003 Cr-Original-Commit-Position: refs/heads/master@{#42258} Committed: https://chromium.googlesource.com/v8/v8/+/31887804107bf5c103d915f5c601cfaaf1cd7cb6 Review-Url: https://codereview.chromium.org/2620753003 Cr-Commit-Position: refs/heads/master@{#42264}
-
machenbach authored
Revert of [TypeFeedbackVector] Root literal arrays in function literals slots (patchset #7 id:120001 of https://codereview.chromium.org/2620753003/ ) Reason for revert: gc stress: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20gc%20stress/builds/8105 also on mac Original issue's description: > [TypeFeedbackVector] Root literal arrays in function literals slots > > Literal arrays and feedback vectors for a function can be garbage > collected if we don't have a rooted closure for the function, which > happens often. It's expensive to come back from this (recreating > boilerplates and gathering feedback again), and the cost is > disproportionate if the function was inlined into optimized code. > > To guard against losing these arrays when we need them, we'll now > create literal arrays when creating the feedback vector for the outer > closure, and root them strongly in that vector. > > BUG=v8:5456 > > Review-Url: https://codereview.chromium.org/2620753003 > Cr-Commit-Position: refs/heads/master@{#42258} > Committed: https://chromium.googlesource.com/v8/v8/+/31887804107bf5c103d915f5c601cfaaf1cd7cb6 TBR=bmeurer@chromium.org,mstarzinger@chromium.org,yangguo@chromium.org,mvstanton@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5456 Review-Url: https://codereview.chromium.org/2626863004 Cr-Commit-Position: refs/heads/master@{#42260}
-
mvstanton authored
Literal arrays and feedback vectors for a function can be garbage collected if we don't have a rooted closure for the function, which happens often. It's expensive to come back from this (recreating boilerplates and gathering feedback again), and the cost is disproportionate if the function was inlined into optimized code. To guard against losing these arrays when we need them, we'll now create literal arrays when creating the feedback vector for the outer closure, and root them strongly in that vector. BUG=v8:5456 Review-Url: https://codereview.chromium.org/2620753003 Cr-Commit-Position: refs/heads/master@{#42258}
-
- 22 Dec, 2016 1 commit
-
-
hablich authored
Revert of [TypeFeedbackVector] Root literal arrays in function literals slots (patchset #11 id:370001 of https://codereview.chromium.org/2504153002/ ) Reason for revert: Speculative revert because of blocked roll: https://codereview.chromium.org/2596013002/ Original issue's description: > [TypeFeedbackVector] Root literal arrays in function literals slots > > Literal arrays and feedback vectors for a function can be garbage > collected if we don't have a rooted closure for the function, which > happens often. It's expensive to come back from this (recreating > boilerplates and gathering feedback again), and the cost is > disproportionate if the function was inlined into optimized code. > > To guard against losing these arrays when we need them, we'll now > create literal arrays when creating the feedback vector for the outer > closure, and root them strongly in that vector. > > BUG=v8:5456 > > Review-Url: https://codereview.chromium.org/2504153002 > Cr-Commit-Position: refs/heads/master@{#41893} > Committed: https://chromium.googlesource.com/v8/v8/+/93df094081f04c629c3df2e40318de90ce5e0fb9 TBR=bmeurer@chromium.org,mlippautz@chromium.org,mvstanton@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5456 Review-Url: https://codereview.chromium.org/2597163002 Cr-Commit-Position: refs/heads/master@{#41917}
-
- 21 Dec, 2016 1 commit
-
-
mvstanton authored
Literal arrays and feedback vectors for a function can be garbage collected if we don't have a rooted closure for the function, which happens often. It's expensive to come back from this (recreating boilerplates and gathering feedback again), and the cost is disproportionate if the function was inlined into optimized code. To guard against losing these arrays when we need them, we'll now create literal arrays when creating the feedback vector for the outer closure, and root them strongly in that vector. BUG=v8:5456 Review-Url: https://codereview.chromium.org/2504153002 Cr-Commit-Position: refs/heads/master@{#41893}
-
- 15 Dec, 2016 1 commit
-
-
jochen authored
Original CL description: > Store SharedFunctionInfos of a Script in a FixedArray indexed by their ID > > Now that SharedFunctionInfos have a unique ID (and the IDs are dense), > we can use them as an index into an array, instead of using a > WeakFixedArray where we have to do a linear scan. > > Hooking up liveedit is a bit more involved, see > https://docs.google.com/presentation/d/1FtNa3U7WsF5bPhY9uGoJG5Y9hnz5VBDabfOWpb4unWI/edit > for an overview > > BUG=v8:5589 > R=verwaest@chromium.org,jgruber@chromium.org > > Review-Url: https://codereview.chromium.org/2547483002 BUG=v8:5589 TBR=verwaest@chromium.org,jgruber@chromium.org Review-Url: https://codereview.chromium.org/2577063002 Cr-Commit-Position: refs/heads/master@{#41734}
-
- 14 Dec, 2016 1 commit
-
-
kozyatinskiy authored
Revert of Store SharedFunctionInfos of a Script in a FixedArray indexed by their ID (patchset #11 id:190001 of https://codereview.chromium.org/2547483002/ ) Reason for revert: LiveEdit is broken in some cases. Original issue's description: > Store SharedFunctionInfos of a Script in a FixedArray indexed by their ID > > Now that SharedFunctionInfos have a unique ID (and the IDs are dense), > we can use them as an index into an array, instead of using a > WeakFixedArray where we have to do a linear scan. > > Hooking up liveedit is a bit more involved, see > https://docs.google.com/presentation/d/1FtNa3U7WsF5bPhY9uGoJG5Y9hnz5VBDabfOWpb4unWI/edit > for an overview > > BUG=v8:5589 > R=verwaest@chromium.org,jgruber@chromium.org > > Committed: https://crrev.com/6595e7405769dc9d49e9568d61485efc6d468baf > Cr-Commit-Position: refs/heads/master@{#41600} TBR=jgruber@chromium.org,verwaest@chromium.org,yangguo@chromium.org,jochen@chromium.org # Not skipping CQ checks because original CL landed more than 1 days ago. BUG=v8:5589,chromium:673950 NOPRESUBMIT=true Review-Url: https://codereview.chromium.org/2578433002 Cr-Commit-Position: refs/heads/master@{#41684}
-
- 08 Dec, 2016 1 commit
-
-
jochen authored
Now that SharedFunctionInfos have a unique ID (and the IDs are dense), we can use them as an index into an array, instead of using a WeakFixedArray where we have to do a linear scan. Hooking up liveedit is a bit more involved, see https://docs.google.com/presentation/d/1FtNa3U7WsF5bPhY9uGoJG5Y9hnz5VBDabfOWpb4unWI/edit for an overview BUG=v8:5589 R=verwaest@chromium.org,jgruber@chromium.org Review-Url: https://codereview.chromium.org/2547483002 Cr-Commit-Position: refs/heads/master@{#41600}
-
- 21 Nov, 2016 1 commit
-
-
ishell authored
BUG=chromium:576312, v8:5561 Review-Url: https://codereview.chromium.org/2515233002 Cr-Commit-Position: refs/heads/master@{#41130}
-
- 17 Oct, 2016 1 commit
-
-
cbruni authored
BUG=chromium:645378 Review-Url: https://codereview.chromium.org/2422143002 Cr-Commit-Position: refs/heads/master@{#40355}
-
- 05 Oct, 2016 2 commits
-
-
mlippautz authored
BUG=chromium:652955 Review-Url: https://codereview.chromium.org/2393153002 Cr-Commit-Position: refs/heads/master@{#39984}
-
lpy authored
Memory infra in tracing currently uses Isolate::GetHeapStatistics to fetch object statistics from V8 at certain frequency, which is not accurate and will have redundant result. This path adds a trace event as well as a trace category at where we collect object statistics after marking before sweeping, and dumps all information to the trace event. In order to use this functionality, we need to enable two flags: --track-gc-object-stats and --noincremental-marking. BUG=v8:5453 Review-Url: https://codereview.chromium.org/2379823004 Cr-Commit-Position: refs/heads/master@{#39966}
-
- 12 Sep, 2016 1 commit
-
-
rmcilroy authored
Rework Runtime::FunctionForName to take a c-string instead of a v8::String so that the parser can parse native syntax runtime calls without doing on-the-fly internalization. Also adds a c-string variant of IntrinsicIndexForName for the same reasons. BUG=v8:5215,chromium:634953 Review-Url: https://codereview.chromium.org/2324803002 Cr-Commit-Position: refs/heads/master@{#39346}
-
- 16 Aug, 2016 1 commit
-
-
mlippautz authored
- Add object template categories. - Add optimized code literals. - Add compilation cache hash tables. - Report overhead for code cache when used as hashtable. BUG=chromium:631094 Review-Url: https://codereview.chromium.org/2246473002 Cr-Commit-Position: refs/heads/master@{#38667}
-
- 29 Jul, 2016 1 commit
-
-
dcheng authored
Sometimes, the compiler will inline this function and unroll the loop. Forcing this to never be inlined reduces the compiled size of the function from a potential 170KB to around 39KB. BUG=v8:5240 Review-Url: https://codereview.chromium.org/2194843002 Cr-Commit-Position: refs/heads/master@{#38172}
-
- 28 Jul, 2016 2 commits
-
-
mlippautz authored
BUG=chromium:631094 R=hpayer@chromium.org Review-Url: https://codereview.chromium.org/2190093002 Cr-Commit-Position: refs/heads/master@{#38149}
-
cbruni authored
This CL introduces a new fast flat instantiations cache for the first 1024 object templates. After that we fall back to the existing slower dictionary cache. Drive-by-fix: de-handlify and clean up some code in api-natives.cc BUG=chromium:630217 Review-Url: https://codereview.chromium.org/2170743003 Cr-Commit-Position: refs/heads/master@{#38146}
-
- 27 Jul, 2016 1 commit
-
-
mlippautz authored
- Overhead for HashTable was not accounted in bytes - Name table in typefeedback metadata changed BUG=chromium:631094 R=hpayer@chromium.org Review-Url: https://codereview.chromium.org/2190563002 Cr-Commit-Position: refs/heads/master@{#38098}
-
- 26 Jul, 2016 1 commit
-
-
mlippautz authored
BUG=chromium:631094 R=hpayer@chromium.org Review-Url: https://codereview.chromium.org/2176393003 Cr-Commit-Position: refs/heads/master@{#38072}
-
- 25 Jul, 2016 1 commit
-
-
mlippautz authored
Reduces the dark matter of reported fixed arrays to < 5%. BUG=chromium:631094 R=ulan@chromium.org Review-Url: https://codereview.chromium.org/2181623002 Cr-Commit-Position: refs/heads/master@{#38032}
-
- 14 Jul, 2016 1 commit
-
-
mlippautz authored
- Fix recording sub types that have their own instance type - Fix double accounting by keeping a shadow map for tracking recorded status - Add recording of more fixed array sub types BUG=hpayer@chromium.org Review-Url: https://codereview.chromium.org/2147693004 Cr-Commit-Position: refs/heads/master@{#37768}
-
- 13 Jul, 2016 1 commit
-
-
mlippautz authored
- Instead of tracing during marking we can now trace in a separate phase in MC. (Heap is iterable.) - Add more subtypes for fixed arrays, reducing the unknown bucket to around ~8% (local run). - Refactor collection calls to have a single bottleneck. - Provide JSON-based output format that can be "easily" processed in JS. BUG= R=ulan@chromium.org,hpayer@chromium.org Review-Url: https://codereview.chromium.org/2129173002 Cr-Commit-Position: refs/heads/master@{#37718}
-
- 02 Jun, 2016 2 commits
-
-
jkummerow authored
Most maps have a small code cache (often only one entry), so this patch optimizes memory consumption of such cases by using plain FixedArrays, only switching to CodeCacheHashTables when the number of cached entries gets so large that linear-scan lookups get too slow. On loading inbox.google.com, this gets the aggregate size of all maps' code caches (there are about 13,600 of them) from 4300 KB to 970 KB. Review-Url: https://codereview.chromium.org/2021373002 Cr-Commit-Position: refs/heads/master@{#36681}
-
mythria authored
Object statistics were collected during the mark compact phase. If an incremental marking happened before mark compact phase then most of the objects are already visited and hence this phase does not collect accurate statistics. This cl updates incremental marking pass to collect object statistics along with mark compact phase. BUG= Review-Url: https://codereview.chromium.org/1943423002 Cr-Commit-Position: refs/heads/master@{#36678}
-
- 06 Apr, 2016 1 commit
-
-
verwaest authored
The previous code cache system required stubs to be marked with a StubType, causing them to be inserted either into a fixed array or into a dictionary-mode code cache. This could cause names to be in both cases, and lookup would just find the "fast" one first. Given that we clear out the caches on each GC, the memory overhead shouldn't be too bad. Additionally, the dictionary itself should just stay linear for small arrays; that's faster anyway. This CL additionally deletes some dead IC code. BUG= Review URL: https://codereview.chromium.org/1846963002 Cr-Commit-Position: refs/heads/master@{#35291}
-
- 03 Dec, 2015 1 commit
-
-
hpayer authored
Reland of Introduce instance type for transition arrays. (patchset #1 id:1 of https://codereview.chromium.org/1483003002/ ) Reason for revert: Suspect for crashing found, relanding for canary coverage. Original issue's description: > Revert of Introduce instance type for transition arrays. (patchset #6 id:100001 of https://codereview.chromium.org/1480873003/ ) > > Reason for revert: > Broken canary. Trying to find out root cause. > > Original issue's description: > > Introduce instance type for transition arrays. > > > > The motivation is to allow specialized marking visitor for transition arrays and collect all transition array in a list for post-processing in ClearNonLiveReferences. > > > > BUG=chromium:554488 > > LOG=NO > > > > Committed: https://crrev.com/026095a3c7932573e1810b8064ec3008ed696601 > > Cr-Commit-Position: refs/heads/master@{#32396} > > TBR=mlippautz@chromium.org,jkummerow@chromium.org,ulan@chromium.org > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG=chromium:554488 > > Committed: https://crrev.com/38bf70b9cd2a07b99ac0c0b7eda111849e79c146 > Cr-Commit-Position: refs/heads/master@{#32404} TBR=mlippautz@chromium.org,jkummerow@chromium.org,ulan@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:554488 Review URL: https://codereview.chromium.org/1500623002 Cr-Commit-Position: refs/heads/master@{#32561}
-
- 30 Nov, 2015 2 commits
-
-
hpayer authored
Revert of Introduce instance type for transition arrays. (patchset #6 id:100001 of https://codereview.chromium.org/1480873003/ ) Reason for revert: Broken canary. Trying to find out root cause. Original issue's description: > Introduce instance type for transition arrays. > > The motivation is to allow specialized marking visitor for transition arrays and collect all transition array in a list for post-processing in ClearNonLiveReferences. > > BUG=chromium:554488 > LOG=NO > > Committed: https://crrev.com/026095a3c7932573e1810b8064ec3008ed696601 > Cr-Commit-Position: refs/heads/master@{#32396} TBR=mlippautz@chromium.org,jkummerow@chromium.org,ulan@chromium.org NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=chromium:554488 Review URL: https://codereview.chromium.org/1483003002 Cr-Commit-Position: refs/heads/master@{#32404}
-
ulan authored
The motivation is to allow specialized marking visitor for transition arrays and collect all transition array in a list for post-processing in ClearNonLiveReferences. BUG=chromium:554488 LOG=NO Review URL: https://codereview.chromium.org/1480873003 Cr-Commit-Position: refs/heads/master@{#32396}
-
- 02 Sep, 2015 2 commits
-
-
mstarzinger authored
This is a follow-up to a previous change and moved object statistics tracking into its own component. It is no longer intertwinded with the normal marking logic, but separated out into ObjectStatsVisitor. R=mlippautz@chromium.org Review URL: https://codereview.chromium.org/1310953008 Cr-Commit-Position: refs/heads/master@{#30548}
-
mstarzinger authored
Note that this is only pulling out the bookkeeping side of things, the marking visitor that actually records the statistics should also move into the ObjectStats class. That will be done as a follow-up. R=mlippautz@chromium.org Review URL: https://codereview.chromium.org/1326793002 Cr-Commit-Position: refs/heads/master@{#30547}
-