- 17 Jul, 2019 1 commit
-
-
Tobias Tebbi authored
This adds a simple counter to Turbofan that's incremented throughout the compilation, hopefully frequently enough so we can use it to detect divergence and performance bugs. In addition, we assert that this counter never gets too high. That's the equivalent of a simple timeout, just more deterministic. The limitations on Turbofan input size should guarantee that we never exceed this limit. Since we probably do exceed it rarely, this check is only a DCHECK and intended to detect performance and divergence issues, but not supposed to be performed in release builds. In addition, this CL adds UMA stats to observe the real world distribution of the tick measurement. Bug: v8:9444 Change-Id: I182dac6ecac64715e3f5885ff5c7c17549351cd0 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1695475 Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Reviewed-by: Michael Stanton <mvstanton@chromium.org> Cr-Commit-Position: refs/heads/master@{#62754}
-
- 24 May, 2019 1 commit
-
-
Yang Guo authored
TBR=mvstanton@chromium.org,neis@chromium.org,ahaas@chromium.org Bug: v8:9247 Change-Id: I5433c863a54f3412d73df0d38aba3fdbcfac7ebe Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1627973 Commit-Queue: Yang Guo <yangguo@chromium.org> Auto-Submit: Yang Guo <yangguo@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#61830}
-
- 29 Mar, 2019 1 commit
-
-
Clemens Hammacher authored
Even though both are allowed in the style guide, it recommends to use 'using', as its syntax is more consistent with the rest of C++. This CL turns all typedefs in compiler code to 'using' declarations. R=mstarzinger@chromium.org Bug: v8:8834 Change-Id: I3baf3ecbfe2c853cb17bb479ebbf140382193b5c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1545896 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#60527}
-
- 13 Feb, 2019 1 commit
-
-
Nico Weber authored
For macros expanding to function definitions, I removed the spurious ; after macro invocations. For macros expandign to function declarations, I made the ; required and consistently inserted it. No behavior change. Bug: chromium:926235 Change-Id: Ib8085d85d913d74307e3481f7fee4b7dc78c7549 Reviewed-on: https://chromium-review.googlesource.com/c/1467545Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Reviewed-by: Yang Guo <yangguo@chromium.org> Commit-Queue: Nico Weber <thakis@chromium.org> Cr-Commit-Position: refs/heads/master@{#59558}
-
- 02 Jan, 2019 1 commit
-
-
Clemens Hammacher authored
Apart from being more in-line with the style guide, this allows to use DEFINE_LAZY_LEAKY_OBJECT_GETTER for defining {TypeCache::Get}. R=tebbi@chromium.org Bug: v8:8562 Change-Id: I016b28624950ce9404180fc1ca1a232551f75cd0 Reviewed-on: https://chromium-review.googlesource.com/c/1392201Reviewed-by: Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#58500}
-
- 15 Oct, 2018 1 commit
-
-
Georg Neis authored
There's no ambiguity and the shorter name makes things easier to read. Bug: v8:7790 Change-Id: Ibcf3fd7f38a91e26a83cd335fad0ec80a5fe9be1 Reviewed-on: https://chromium-review.googlesource.com/c/1278392 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Cr-Commit-Position: refs/heads/master@{#56623}
-
- 25 Sep, 2018 1 commit
-
-
Georg Neis authored
This is just a cleanup. Bug: v8:7790 Change-Id: Ic0114451159b8c504f527f3cf3bdaed6a8cc8741 Reviewed-on: https://chromium-review.googlesource.com/1243103 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#56206}
-
- 23 Jul, 2018 1 commit
-
-
Georg Neis authored
We'll soon start collecting data from the JS heap prior to the typed lowering pass, and then refrain from reading the heap in that pass. This CL prepares the broker machinery by introducing a hash table that maps an object (handle) to the corresponding cached data. For the time being, that cached data is essentially just the handle itself. Bug: v8:7790 Change-Id: I830e9c72faafb7ae1d10e8a111636b3a3762bbc6 Reviewed-on: https://chromium-review.googlesource.com/1143405 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org> Cr-Commit-Position: refs/heads/master@{#54618}
-
- 07 Jun, 2018 1 commit
-
-
Jaroslav Sevcik authored
As a first step towards moving accesses to the broker, this moves heap accesses from BitsetType::Lub to the broker. Bug: v8:7790 Change-Id: Ie240b84b979717caae42cb8aa06ee8d9877a446d Reviewed-on: https://chromium-review.googlesource.com/1088695 Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#53571}
-
- 08 May, 2018 1 commit
-
-
Jaroslav Sevcik authored
This CL introduces type narrowing and constant folding reducers to constant fold code that comes out of inlined destructuring of arrays. In particular, array iterator introduces code that contains a phi of a temporary array that blocks escape analysis. The phi comes from conditional that can be evaluated statically (i.e., constant folded), so with better constant folding we allow escape analysis to get rid of the temporary array. On a quick micro-benchmark below, we see more than 6x improvement. This is close to the hand-optimized version - if we replace body of f with 'return b + a', we get 220ms (versus 218ms with destructuring). function f(a, b) { [b, a] = [a, b]; return a + b; } function sum(count) { let s = 0; for (let i = 0; i < count; i++) { s += f(1, 2); } return s; } // Warm up sum(1e5); sum(1e5); console.time("destructure array"); sum(1e8); console.timeEnd("destructure array"); console.timeEnd: destructure array, 213.526000 console.timeEnd: destructure array, 1503.537000 Bug: v8:7728 Change-Id: Ib7aec1d5897989e6adb1af1eddd516d8b3866db5 Reviewed-on: https://chromium-review.googlesource.com/1047672Reviewed-by: Benedikt Meurer <bmeurer@chromium.org> Commit-Queue: Benedikt Meurer <bmeurer@chromium.org> Cr-Commit-Position: refs/heads/master@{#53048}
-
- 28 Apr, 2018 1 commit
-
-
Jaroslav Sevcik authored
This is part of the effort to decrease the amount of undefined behavior. that v8 relies on. The main change here is to represent types with class Type rather than with pointer Type*. To make the CL smaller, I used an operator overload hack to separate the change from `->` to `.`. I am working on a CL that will remove the operator and change all those arrows to dots. Bug: v8:3770 Change-Id: I71a197cb739a1467937bc95c2a757fab0469aa22 Reviewed-on: https://chromium-review.googlesource.com/1032551 Commit-Queue: Jaroslav Sevcik <jarin@chromium.org> Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#52872}
-
- 09 Feb, 2017 1 commit
-
-
bmeurer authored
Since the empty string is canonical HeapObject now, we can use this fact to optimize - strict equality comparisons with the empty string to a simple ReferenceEqual operation, and - optimize ToBoolean to avoid instance type checks completely. Drive-by-fix: Allow InternalizedString for Type::HeapConstant in the type system. This is safe, since InternalizedStrings can be compared to other heap constants by reference (except for non-InternalizedStrings, which are excluded from the HeapConstant type). BUG=v8:5267 R=yangguo@chromium.org Review-Url: https://codereview.chromium.org/2681273002 Cr-Commit-Position: refs/heads/master@{#43050}
-
- 02 Nov, 2016 1 commit
-
-
bmeurer authored
R=epertoso@chromium.org Review-Url: https://codereview.chromium.org/2223873002 Cr-Commit-Position: refs/heads/master@{#40695}
-
- 17 Oct, 2016 1 commit
-
-
jochen authored
R=machenbach@chromium.org,titzer@chromium.org,bmeurer@chromium.org,jgruber@chromium.org BUG= CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_win_dbg,v8_mac_dbg;master.tryserver.chromium.android:android_arm64_dbg_recipe Review-Url: https://codereview.chromium.org/2416243002 Cr-Commit-Position: refs/heads/master@{#40350}
-
- 29 Aug, 2016 1 commit
-
-
bmeurer authored
For asm.js we now have a dedicated AsmTyper, that uses it's own type system (which is tailored towards asm.js), and so we don't need the special asm.js types anymore in the TypeCache. This also moves the TypeCache into the src/compiler directory, because it doesn't make sense to use outside anyways. TBR=ahaas@chromium.org R=jarin@chromium.org BUG=v8:5267 Review-Url: https://codereview.chromium.org/2289573002 Cr-Commit-Position: refs/heads/master@{#38964}
-
- 03 Aug, 2016 1 commit
-
-
bmeurer authored
Move all the typing rules for unary and binary number operations to the OperationTyper and use them for both the regular Typer as well as the retyper that runs as part of SimplifiedLowering. R=epertoso@chromium.org Review-Url: https://codereview.chromium.org/2202883005 Cr-Commit-Position: refs/heads/master@{#38283}
-
- 29 Jul, 2016 1 commit
-
-
bmeurer authored
So far we always create explicit control flow for map checks during JSNativeContextSpecialization, or in the monomorphic case we used a CheckIf combined with a map comparison. In either case we cannot currently effectively utilize the map check information during load elimination to optimize (polymorphic) map checks and elements kind transitions. With the introduction of CheckMaps, we can now start optimizing map checks in a more effective fashion. This CL doesn't change anything in that direction yet, but merely changes the fundamental mechanism. This also removes the stable map optimization from the Typer, where it was always a bit odd, and puts it into the typed lowering and the native context specialization instead. R=epertoso@chromium.org BUG=v8:4930,v8:5141 Review-Url: https://codereview.chromium.org/2196653002 Cr-Commit-Position: refs/heads/master@{#38166}
-
- 27 Jul, 2016 1 commit
-
-
jarin authored
The new phase will detect loop variable, infer bounds and bake them into the type. Review-Url: https://codereview.chromium.org/2164263003 Cr-Commit-Position: refs/heads/master@{#38077}
-
- 21 Jul, 2016 1 commit
-
-
bmeurer authored
This is never passed to the Typer, and actually wouldn't work anyways, since we cannot derive any meaningful types for Parameters in JavaScript. R=mstarzinger@chromium.org Review-Url: https://codereview.chromium.org/2171723002 Cr-Commit-Position: refs/heads/master@{#37944}
-
- 22 Jun, 2016 1 commit
-
-
jarin authored
Review-Url: https://codereview.chromium.org/2084943002 Cr-Commit-Position: refs/heads/master@{#37166}
-
- 02 Feb, 2016 1 commit
-
-
jarin authored
This CL removes the Config templatization from the types. It is not necessary anymore, after the HeapTypes have been removed. The CL also changes the type hierarchy - the specific type kinds are not inner classes of the Type class and they do not inherit from Type. This is partly because it seems impossible to make this work without templates. Instead, a new TypeBase class is introduced and all the structural (i.e., non-bitset) types inherit from it. The bitset type still requires the bit-munging hack and some nasty reinterpret-casts to pretend bitsets are of type Type*. Additionally, there is now the same hack for TypeBase - all pointers to the sub-types of TypeBase are reinterpret-casted to Type*. This is to keep the type constructors in inline method definitions (although it is unclear how much that actually buys us). In future, we would like to move to a model where we encapsulate Type* into a class (or possibly use Type where we used to use Type*). This would loosen the coupling between bitset size and pointer size, and eventually we would be able to have more bits. TBR=bradnelson@chromium.org Review URL: https://codereview.chromium.org/1655833002 Cr-Commit-Position: refs/heads/master@{#33656}
-
- 24 Nov, 2015 1 commit
-
-
bmeurer authored
We use comparisons with the_hole to implement temporal dead zones, so we should also optimize those, as they currently turn into CompareIC calls. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1473593002 Cr-Commit-Position: refs/heads/master@{#32198}
-
- 28 Oct, 2015 1 commit
-
-
bmeurer authored
Rename ZoneTypeCache to TypeCache and use a single shared (immutable) instance consistently to cache the most commonly used types. Also serves as a chokepoint for defining those types, so we don't repeat the definition (and possible bugs) in various places. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1409763004 Cr-Commit-Position: refs/heads/master@{#31631}
-
- 26 Oct, 2015 1 commit
-
-
bmeurer authored
Introduce new typing rules for LoadField[Map], which try to take into account stable map information if the object either has type Constant or type Class. If the map of the object is stable but can transition we have to introduce a code dependency in the Typer to make sure that the information (the Constant type we infer for LoadField[Map]) is valid (and stays valid). This also settles the policy for depending on map stability: The definition can introduce any number of maps, without having to pay attention to stability (i.e. you can always use Type::Class to introduce a map that is propagated along the value edges), and the use site is responsible for checking that the type information is valid before using it. I.e. if you use stable map information, you'll have to add a stability dependency (or make sure the map cannot transition). Drive-by-improvement: Add ReferenceEqualTyper which takes input types into account for improved constant folding. Drive-by-fix: Apply policy mentioned above to JSNativeContextSpecialization. R=jarin@chromium.org, rossberg@chromium.org BUG=v8:4470 LOG=n Review URL: https://codereview.chromium.org/1410953006 Cr-Commit-Position: refs/heads/master@{#31567}
-
- 26 Aug, 2015 1 commit
-
-
bradnelson authored
The zone type cache would be handy inside the asm.js typer. Pulling it out into a seperate inlinable header to allow sharing. BUG=https://code.google.com/p/v8/issues/detail?id=4203 TEST=None R=andreas@chromium.org,titzer@chromium.org LOG=N Review URL: https://codereview.chromium.org/1307093006 Cr-Commit-Position: refs/heads/master@{#30398}
-
- 30 Jun, 2015 1 commit
-
-
bmeurer authored
This optimization never triggers currently, and is inherently native context dependent for no real reason (for example it will not properly detect those constructors in the case of cross native context inlining), plus it is slow and awkward. In case we really need this functionality at some point, we should find a way to make it work with the builtin function id mechanism that is already in place to match other builtins. R=jarin@chromium.org,rossberg@chromium.org Review URL: https://codereview.chromium.org/1221683006 Cr-Commit-Position: refs/heads/master@{#29365}
-
- 24 Jun, 2015 2 commits
-
-
bmeurer authored
This way we need the common types only once per process and we don't need to recreate them for every compilation. It uses the same pattern that we already apply to caching operators. This simplifies the type cache a lot. R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/1209513002 Cr-Commit-Position: refs/heads/master@{#29251}
-
danno authored
- Thread Type::FunctionType through stubs and the TF pipeline. - Augment Typer to decorate parameter nodes with types from a Type::FunctionType associated with interface descriptors. - Factor interface descriptors into platform-specific and platform-independent components so that all descriptors share a common Type::FunctionType for all platforms. Review URL: https://codereview.chromium.org/1197703002 Cr-Commit-Position: refs/heads/master@{#29248}
-
- 22 Jun, 2015 1 commit
-
-
bmeurer authored
This change does the following: a.) Remove unused fields from the Typer. b.) Move some interesting unions to types.h. c.) Reduce Typer constructor overhead. d.) Avoid heap allocation in the Typer. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1199903002 Cr-Commit-Position: refs/heads/master@{#29178}
-
- 17 Jun, 2015 1 commit
-
-
bmeurer authored
Currently the Typer is installed on the Graph, no matter if we actually use the types or not (read: even in the generic pipeline). Also the Typer tries hard to eagerly type nodes during graph building, which takes time, just to remove those types later again, and retype everything from scratch. Plus this is inconsistent, since it only applies to the outermost graph, not the inlined graphs (which are eagerly typed once the nodes are copied). So in summary, what's currently implemented is neither useful nor well defined, so for now we stick to the full typing approach until a proper design for eager typing is available that will actually benefit us. R=rossberg@chromium.org,mstarzinger@chromium.org,jarin@chromium.org Review URL: https://codereview.chromium.org/1192553002 Cr-Commit-Position: refs/heads/master@{#29086}
-
- 19 Mar, 2015 1 commit
-
-
Benedikt Meurer authored
The weaken limits are constants, there's no point in having a separate copy of those constants per typer that is initialized per Typer instance. R=jarin@chromium.org Review URL: https://codereview.chromium.org/1008923004 Cr-Commit-Position: refs/heads/master@{#27297}
-
- 09 Feb, 2015 1 commit
-
-
mstarzinger authored
R=bmeurer@chromium.org TEST=presubmit Review URL: https://codereview.chromium.org/905293002 Cr-Commit-Position: refs/heads/master@{#26525}
-
- 28 Jan, 2015 1 commit
-
-
jarin authored
BUG= R=bmeurer@chromium.org Review URL: https://codereview.chromium.org/882063002 Cr-Commit-Position: refs/heads/master@{#26307}
-
- 23 Jan, 2015 1 commit
-
-
danno authored
Along the way: - Thread isolate parameter explicitly through code that used to rely on getting it from the zone. - Canonicalize the parameter position of isolate and zone for affected code - Change Hydrogen New<> instruction templates to automatically pass isolate R=mstarzinger@chromium.org LOG=N Review URL: https://codereview.chromium.org/868883002 Cr-Commit-Position: refs/heads/master@{#26252}
-
- 22 Dec, 2014 1 commit
-
-
Benedikt Meurer authored
According to ES6 draft, revision 29 (2014-12-06), section 7.1.2, ToBoolean yields true for true, detectable receivers (the ES6 Object type), symbols and numbers except -0, +0 and NaN. R=hpayer@chromium.org Review URL: https://codereview.chromium.org/807663006 Cr-Commit-Position: refs/heads/master@{#25915}
-
- 11 Dec, 2014 1 commit
-
-
Benedikt Meurer authored
R=svenpanne@chromium.org Review URL: https://codereview.chromium.org/794113002 Cr-Commit-Position: refs/heads/master@{#25765}
-
- 08 Dec, 2014 1 commit
-
-
Benedikt Meurer authored
R=jarin@chromium.org Review URL: https://codereview.chromium.org/786703002 Cr-Commit-Position: refs/heads/master@{#25698}
-
- 03 Dec, 2014 3 commits
-
-
titzer authored
This reverts commit 918ef9d7. R=mstarzinger@chromium.org BUG= Review URL: https://codereview.chromium.org/780623002 Cr-Commit-Position: refs/heads/master@{#25646}
-
Ben L. Titzer authored
This reverts commit a48ad24a. BUG= Review URL: https://codereview.chromium.org/763773004 Cr-Commit-Position: refs/heads/master@{#25643}
-
titzer authored
R=jarin@chromium.org BUG= Review URL: https://codereview.chromium.org/769303002 Cr-Commit-Position: refs/heads/master@{#25633}
-