- 25 Apr, 2022 1 commit
-
-
Tobias Tebbi authored
TurboShaft is a new, CFG-based IR for TurboFan. This CL adds the basic IR and bidirectional translation from/to TurboFan's sea-of-nodes-based IR for some common operators (still incomplete even for JS). Bug: v8:12783 Change-Id: I162fdf10d583a9275a9f655f5b44b888faf813f6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3563562Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Maya Lekova <mslekova@chromium.org> Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Tobias Tebbi <tebbi@chromium.org> Cr-Commit-Position: refs/heads/main@{#80136}
-
- 18 Feb, 2022 1 commit
-
-
Camillo Bruni authored
Bug: v8:12639 Change-Id: I10aaa576fdc84d848aa28ed8e07d5793a0954ff1 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3472023Reviewed-by: Igor Sheludko <ishell@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/main@{#79173}
-
- 08 Feb, 2022 1 commit
-
-
Jakob Gruber authored
The regexp parser historically has tried to gracefully detect and bail out from excess zone allocations, where 'excess' was determined to be an arbitrary limit of 256MB. This leads to issues now that the regexp parser may run from within the JS parser - the JS parser doesn't observe this arbitrary limit and happily keeps allocating until the underlying allocator actually runs out of memory; this way, the JS parser can handle very large JS files, and it's now counterproductive if the regexp parser (which reuses the JS parser zone) bails out on excess allocations. This CL simply removes the excess_allocation mechanism. Bug: chromium:1264014 Change-Id: I8d93a1e52aa65bb0ea6c2aab3b68b479ce79a1f6 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3401580Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#78991}
-
- 13 Dec, 2021 1 commit
-
-
Leszek Swirski authored
This is a reland of 2418d22a Reland fixes: * Rebase this 2+ year old change
* Unpoison the kept segment before zapping it to make ASAN happy. * Carefully adjust allocation size tracking fields to compensate for kept segment. Original change's description: > [zone] Keep one page when we Zone::Reset for reuse > > Change-Id: I50c6124d3da5b35d4156c066f38d10d2dc966567 > Reviewed-on: https://chromium-review.googlesource.com/c/1349246 > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Commit-Queue: Toon Verwaest <verwaest@chromium.org> > Cr-Commit-Position: refs/heads/master@{#57793} Change-Id: Iaffde5b38b3d683af081b1878464dd4c66be5af8 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3322833Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/main@{#78348}
-
- 02 Nov, 2021 1 commit
-
-
Jakob Gruber authored
Since early regexp errors were implemented in crrev.com/a56874d3, the JS parser calls into the regexp parser to validate the regexp literal syntax. For these calls, the JS parser passes its Zone to the regexp parser. This means that scripts with multiple regexp literals are all parsed using the same Zone memory. Very large scripts with many (think hundreds of thousands) regexp literals may thus run out of memory whereas previously they would parse and run successfully. This CL fixes the OOMs by resetting the state of the JS parser Zone around regexp parser calls. We introduce a new ZoneScope class, similar to HandleScope, which controls the lifetime of zone objects allocated within its scope. In other words: { ZoneScope zone_scope(zone); // Store zone state S. // ... Allocate objects O in zone. // zone is now in state S'. } // zone_scope goes out of scope, reset zone to state S. Objects O // are freed and no longer usable. Fixed: chromium:1264014 Bug: v8:896 Change-Id: I3e7ac36f25a9d6c4eda2460bd1bea9814685e89b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/3256783Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/main@{#77646}
-
- 29 Sep, 2020 1 commit
-
-
Manos Koukoutos authored
Change-Id: I2859b2f83a1b3a8f70f906f698a8531796b767af Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2436332Reviewed-by: Clemens Backes <clemensb@chromium.org> Commit-Queue: Manos Koukoutos <manoskouk@chromium.org> Cr-Commit-Position: refs/heads/master@{#70193}
-
- 31 Jul, 2020 3 commits
-
-
Igor Sheludko authored
This is a reland of 13141c8a ... with a fix for an UB issue of passing null pointers to memcpy() when size is zero. TBR=leszeks@chromium.org Original change's description: > [zone-compr] Introduce ZoneTypeTraits and ZoneCompression > > Also move zone compression flags to src/common/globals.h. > > Bug: v8:9923 > Change-Id: Id0a77720e735e2669a1e5eef48e1b4866ad99480 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2324255 > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Commit-Queue: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/master@{#69160} Bug: v8:9923 Change-Id: I2245b81516c39ccea262c282c659ef601af57abf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2332165 Commit-Queue: Igor Sheludko (OOO Aug 3-17) <ishell@chromium.org> Reviewed-by: Igor Sheludko (OOO Aug 3-17) <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#69166}
-
Nico Hartmann authored
This reverts commit 13141c8a. Reason for revert: https://ci.chromium.org/p/v8/builders/ci/V8%20Linux64%20UBSan/12253? Original change's description: > [zone-compr] Introduce ZoneTypeTraits and ZoneCompression > > Also move zone compression flags to src/common/globals.h. > > Bug: v8:9923 > Change-Id: Id0a77720e735e2669a1e5eef48e1b4866ad99480 > Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2324255 > Reviewed-by: Leszek Swirski <leszeks@chromium.org> > Commit-Queue: Igor Sheludko <ishell@chromium.org> > Cr-Commit-Position: refs/heads/master@{#69160} TBR=leszeks@chromium.org,ishell@chromium.org Change-Id: I01fc05b33d01c19f9a9432d4b2dd73cf8b38b972 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:9923 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2332163Reviewed-by: Nico Hartmann <nicohartmann@chromium.org> Commit-Queue: Nico Hartmann <nicohartmann@chromium.org> Cr-Commit-Position: refs/heads/master@{#69162}
-
Igor Sheludko authored
Also move zone compression flags to src/common/globals.h. Bug: v8:9923 Change-Id: Id0a77720e735e2669a1e5eef48e1b4866ad99480 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2324255Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#69160}
-
- 28 Jul, 2020 1 commit
-
-
Igor Sheludko authored
Also use outer-function name as a ZONE_NAME instead of file:line and give explicit names to parser and preparser zones. Bug: v8:10572 Change-Id: I9b5acb23322889d8538a34bc888fd6f610eb6893 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2322627 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Camillo Bruni <cbruni@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#69104}
-
- 24 Jul, 2020 1 commit
-
-
Igor Sheludko authored
* Added GN flag v8_enable_zone_compression. * AccountingAllocator supports allocation of zone segments via both malloc/free and bounded page allocator. The latter implementation is known to be not efficient yet. This issue will be addressed in a follow-up CLs. * Add support_compression flag to Zone constructor/instance. Bug: v8:9923 Change-Id: I12ee2d85267dd16f455b1b47edc425dc90c57bcf Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2308345Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#69035}
-
- 21 Jul, 2020 1 commit
-
-
Igor Sheludko authored
... behind --trace-zone-type-stats flag. Per-object-type statistics requires the following GN args: v8_enable_precise_zone_stats = true use_rtti = true When precise zone stats is enabled, the used zone memory value is calculated more precisely, in particular it takes into account the state of the active segment. By default, the used memory in the active segment is not taken into account because of performance overhead. Bug: v8:10572 Change-Id: I938d9e264cfe6a8b63a89db87d187d8e2be63c8b Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2281006 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#68972}
-
- 16 Jul, 2020 3 commits
-
-
Igor Sheludko authored
... by migrating old-style code MyObject* obj = new (zone) MyObject(...) to the new style MyObject* obj = zone->New<MyObject>(...) ... and prohibiting accidental use of the old-style. Bug: v8:10689 Change-Id: Id75774ac12e3d0f95cb3a538066dffbf7815e438 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2300490 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#68905}
-
Igor Sheludko authored
1) turn static methods to instance ones. 2) change New/Delete to NewArray/DeleteArray getting array length as argument instead of raw size. 3) propagate type tags through allocate/delete methods of existing AllocationPolicy classes. This will allow implementing accounting of deallocated zone memory. Bug: v8:10572 Change-Id: Ib41c646044814ac6d75d50b2847bbb8964ce25d3 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2300489Reviewed-by: Clemens Backes <clemensb@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#68904}
-
Igor Sheludko authored
... this reduces the size of VariableMap object by one word which in turn reduces zone memory pressure. The Scope class which contains VariableMap as a field is usually in top 5 of all allocated objects in zone memory. Bug: v8:9923 Change-Id: I79c6bd9ae97db72f24b831fd5e3733d8d7e4c0fd Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2300486 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#68896}
-
- 15 Jul, 2020 1 commit
-
-
Igor Sheludko authored
... which gets the zone from its ZoneAllocationPolicy instance. This recovers memory regression caused by adding an AllocationPolicy instance into TemplateHashMapImpl and therefore to VariableMap. Bug: v8:10572 Change-Id: I7962b49e5f2669307e58b3ed7b1f29bab1c42cad Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2298002Reviewed-by: Clemens Backes <clemensb@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#68879}
-
- 10 Jul, 2020 2 commits
-
-
Igor Sheludko authored
This will allow implementing per-type allocation stats. Also migrate old-style zone allocations ... = new (zone) MyObject(...) to the new style: ... = zone->New<MyObject>(...) in several source files. Bug: v8:10689 Change-Id: I1b044c9eccb4ac7e1b627276691f3c1fbad52137 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2288232 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#68781}
-
Igor Sheludko authored
... and introduce a bottleneck for collecting reusable zone memory statistics. Tbr: jgruber@chromium.org Bug: v8:10572 Change-Id: I418f8b495c0d89c0eb73f4e19bc4315acfadb480 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2287500Reviewed-by: Igor Sheludko <ishell@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#68776}
-
- 08 Jul, 2020 1 commit
-
-
Igor Sheludko authored
... into src/zone/scoped-list.h src/zone/zone-hashmap.h src/zone/zone-list.h src/zone/zone-fwd.h zone-fwd.h header contains zone-related forward type declarations. Bug: v8:10506 Change-Id: Ic61b6717b3034afa24bdd49fbc0ce758a0e93c75 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2284987 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#68734}
-
- 05 Jun, 2020 1 commit
-
-
Igor Sheludko authored
1) make it possible to combine tracing logic with accounting allocator supporting zone compression, 2) make it possible to record zone memory usage via Chrome tracing machinery (especially, for already running process), 3) trace both allocated and actually used memory per zone, Bug: v8:10572 Change-Id: I768e474ada1a384218af09efd0dfce2d9a43ac3c Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/2228888 Commit-Queue: Igor Sheludko <ishell@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#68197}
-
- 26 Jul, 2019 1 commit
-
-
Dan Elphick authored
Use the position of commas in arrow expressions to mark the initializer position of any parameters that might have been set in the preceding parameter. To enable this, this makes variable_list_ in ExpressionParsingScope a ScopedList<pair<VariableProxy*, int>> and changes ScopedList::at to return references so its elements can be modified in place. This fixes a source of bytecode mismatches when collecting source positions lazily and is a second attempt at fixing this after https://chromium-review.googlesource.com/c/v8/v8/+/1683267 introduced problems due to destructuring. Bug: chromium:980422, chromium:981701, v8:8510 Change-Id: I948f89f34fb75d7463a13183e363f7f96ad09d13 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1710671Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Dan Elphick <delphick@chromium.org> Cr-Commit-Position: refs/heads/master@{#62936}
-
- 24 Jul, 2019 1 commit
-
-
Leszek Swirski authored
This will allow us to use ScopedPtrList for other contents than just pointers. Change-Id: Ib16d388d5dd556f5e01593279f463ae25510f2be Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1715455Reviewed-by: Dan Elphick <delphick@chromium.org> Reviewed-by: Clemens Hammacher <clemensh@chromium.org> Commit-Queue: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#62898}
-
- 05 Jun, 2019 1 commit
-
-
Toon Verwaest authored
This is a reland of a0486202. It turns out that this gives ~2x speedup on highly parallel WebAssembly compilation, so let's try again landing this in isolation. Original change's description: > [zone] Use 32kb instead of 1MB as high zone page size > > It seems that allocating smaller pages is actually quite a bit faster than > larger pages, probably because they can be cached by malloc. Let's see what the > bots say. > > In a follow-up I'll check whether the segment-pool is actually beneficial or > whether we should just remove it. > > This also drops SegmentSize::kLarge as a way to make compilation deterministic. > Turns out that by now we need >8mb anyway, and the previous 1mb wasn't enough. > At the same time the compiler was fixed to not rely on virtual addresses of > zone objects anymore, and there's a bot checking whether the snapshot is > determistic. > > Change-Id: I38cbb0d209d68b3671fd38763b42714811f4223e > Reviewed-on: https://chromium-review.googlesource.com/c/1346370 > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Commit-Queue: Toon Verwaest <verwaest@chromium.org> > Cr-Commit-Position: refs/heads/master@{#57683} Change-Id: I243ba741f0968879b4cfe9f366d81ddc53a9bf27 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1645326Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#62007}
-
- 27 May, 2019 1 commit
-
-
Clemens Hammacher authored
This replaces all typedefs that define types and not functions by the equivalent "using" declaration. This was done mostly automatically using this command: ag -l '\btypedef\b' src test | xargs -L1 \ perl -i -p0e 's/typedef ([^*;{}]+) (\w+);/using \2 = \1;/sg' Patchset 2 then adds some manual changes for typedefs for pointer types, where the regular expression did not match. R=mstarzinger@chromium.org TBR=yangguo@chromium.org, jarin@chromium.org Bug: v8:9183 Change-Id: I6f6ee28d1793b7ac34a58f980b94babc21874b78 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1631409 Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Cr-Commit-Position: refs/heads/master@{#61849}
-
- 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}
-
- 15 Apr, 2019 1 commit
-
-
Tom Anderson authored
libc++ will assert when indexing one element past the end of a vector, but V8 uses this as the end iterator for ScopedPtrList. Similarly, when there's no elements in the vector, v[0] will also assert, so ScopedPtrList::begin() needs to be updated too. This CL changes ScopedPtrList to use std::vector::data() to get the iterators. BUG=chromium:923166 TBR=machenbach Change-Id: Ic6a5176611d52ed592da743ecce44287c452b379 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1565543 Commit-Queue: Thomas Anderson <thomasanderson@chromium.org> Reviewed-by: Nico Weber <thakis@chromium.org> Auto-Submit: Thomas Anderson <thomasanderson@chromium.org> Cr-Commit-Position: refs/heads/master@{#60851}
-
- 03 Apr, 2019 1 commit
-
-
Peter Marshall authored
Bug: v8:8834 Change-Id: I1d7451a6306bc34e6254383fd79e8411bffd26ce Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1545894Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#60600}
-
- 08 Mar, 2019 1 commit
-
-
Clemens Hammacher authored
R=sigurds@chromium.org Bug: v8:7490, v8:8834 Change-Id: I5d94c2f262826977bbf15ad32a10875f01304039 Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1505432Reviewed-by: Sigurd Schneider <sigurds@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Clemens Hammacher <clemensh@chromium.org> Cr-Commit-Position: refs/heads/master@{#60126}
-
- 04 Mar, 2019 1 commit
-
-
David Benjamin authored
If buffer_ is empty and start_ is zero, even though the MemCopy would be a no-op, &buffer_[start_] is undefined. buffer_.data() + start_ would work, but due to a C/C++ language bug, that is technically undefined too[*] if an empty buffer_.data() returns nullptr, so add a length() == 0 check, matching methods above. This was caught by building with _LIBCPP_DEBUG=0. [*] https://www.imperialviolet.org/2016/06/26/nonnull.html Bug: chromium:893810 Change-Id: I9f0834ffae6769e0e191e786842e6ecc6c95a58a Reviewed-on: https://chromium-review.googlesource.com/c/v8/v8/+/1483616Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: David Benjamin <davidben@chromium.org> Cr-Commit-Position: refs/heads/master@{#60016}
-
- 26 Feb, 2019 1 commit
-
-
Sigurd Schneider authored
Change-Id: I4bd02bdb68727b6242b0fe4b81fd522813b13f39 Bug: v8:8834 Reviewed-on: https://chromium-review.googlesource.com/c/1488755Reviewed-by: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> Reviewed-by: Jakob Gruber <jgruber@chromium.org> Commit-Queue: Sigurd Schneider <sigurds@chromium.org> Cr-Commit-Position: refs/heads/master@{#59875}
-
- 23 Jan, 2019 1 commit
-
-
Camillo Bruni authored
Get rid of yet another ZoneChunkList. Change-Id: If63b1b87e007f4d146532b2c66f101280d3fcf2f Reviewed-on: https://chromium-review.googlesource.com/c/1421319Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Camillo Bruni <cbruni@chromium.org> Cr-Commit-Position: refs/heads/master@{#59027}
-
- 21 Jan, 2019 1 commit
-
-
Toon Verwaest authored
This allows us to stop tracking variables_ in the preparser. This currently makes us track slightly more variables than neccessary in the case `for (var ...` since `var ... of` needs to check conflicts with out simple catch variables. We should probably track the names through a ScopedPtrList instead of a ZonePtrList anyway. Then it won't matter anymore. Change-Id: I64e3f9ab13af8269456439cf15b0bc4d5b9e5380 Reviewed-on: https://chromium-review.googlesource.com/c/1421360Reviewed-by: Leszek Swirski <leszeks@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#58960}
-
- 08 Jan, 2019 1 commit
-
-
Toon Verwaest authored
Previously we'd always push variable proxies into the unresolved list of the current scope, and possibly delete them from the list later in case they end up being declarations. If variables become assigned, there were two ways to mark them as such: The preparser would marked the variables tracked on the PreParserExpression, and the parser would traverse the LHS AST to find and mark all variables. After this CL, if the scope already knows it's tracking declarations, the variables are never added to the unresolved list in the first place. If the scope is ambigous, it tracks the variable proxies on the side and only adds them to the unresolved list if they end up being references rather than declarations. The same list is now used to bulk mark all LHS variables as assigned; uniformely for both the parser and the preparser. In a next step we'll also use the scope to create declarations. That way we can stop tracking variables_ on PreParserExpression altogether. Change-Id: I6ada37006cc2e066731f29cd4ea314550fc7959f Reviewed-on: https://chromium-review.googlesource.com/c/1397669 Commit-Queue: Toon Verwaest <verwaest@chromium.org> Reviewed-by: Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#58629}
-
- 19 Dec, 2018 1 commit
-
-
Toon Verwaest authored
Later we want to automatically declare the parameters while parsing, which moves the declaration before body parsing anyway. This is just a step in that direction, making sure that it works. Change-Id: I0645269aa26643de138848c599cfe5d1ad4bf32c Reviewed-on: https://chromium-review.googlesource.com/c/1384319Reviewed-by: Igor Sheludko <ishell@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#58376}
-
- 27 Nov, 2018 1 commit
-
-
Toon Verwaest authored
Unfortunately the previous strategy was slower but more memory efficient. For now simply revert. Revert "[zone] Use 32kb instead of 1MB as high zone page size" Revert "[zone] Get rid of the Zone's segment pool" Revert "[zone] Further simplify zone expansion, use single default page size" Bug: chromium:908359 Change-Id: I649542e7e61eef0c14a26ffd21039e8340ab4d04 Reviewed-on: https://chromium-review.googlesource.com/c/1351027Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#57872}
-
- 23 Nov, 2018 2 commits
-
-
Toon Verwaest authored
This reverts commit 8c359f64. Reason for revert: Tentative revert for ASAN breakage Original change's description: > [zone] Keep one page when we Zone::Reset for reuse > > Change-Id: I50c6124d3da5b35d4156c066f38d10d2dc966567 > Reviewed-on: https://chromium-review.googlesource.com/c/1349246 > Reviewed-by: Igor Sheludko <ishell@chromium.org> > Commit-Queue: Toon Verwaest <verwaest@chromium.org> > Cr-Commit-Position: refs/heads/master@{#57793} TBR=ishell@chromium.org,verwaest@chromium.org Change-Id: Iff319b5f0ad1a65b1171d219a02a4a75d33910bd No-Presubmit: true No-Tree-Checks: true No-Try: true Reviewed-on: https://chromium-review.googlesource.com/c/1349248Reviewed-by: Toon Verwaest <verwaest@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#57797}
-
Toon Verwaest authored
Change-Id: I50c6124d3da5b35d4156c066f38d10d2dc966567 Reviewed-on: https://chromium-review.googlesource.com/c/1349246Reviewed-by: Igor Sheludko <ishell@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#57793}
-
- 22 Nov, 2018 1 commit
-
-
Toon Verwaest authored
Change-Id: Ibe539f0c90fdcd93ba5da40240c6325138a05bac Reviewed-on: https://chromium-review.googlesource.com/c/1347480Reviewed-by: Igor Sheludko <ishell@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#57732}
-
- 21 Nov, 2018 1 commit
-
-
Toon Verwaest authored
It seems that allocating smaller pages is actually quite a bit faster than larger pages, probably because they can be cached by malloc. Let's see what the bots say. In a follow-up I'll check whether the segment-pool is actually beneficial or whether we should just remove it. This also drops SegmentSize::kLarge as a way to make compilation deterministic. Turns out that by now we need >8mb anyway, and the previous 1mb wasn't enough. At the same time the compiler was fixed to not rely on virtual addresses of zone objects anymore, and there's a bot checking whether the snapshot is determistic. Change-Id: I38cbb0d209d68b3671fd38763b42714811f4223e Reviewed-on: https://chromium-review.googlesource.com/c/1346370Reviewed-by: Ulan Degenbaev <ulan@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#57683}
-
- 05 Nov, 2018 1 commit
-
-
Toon Verwaest authored
In particular FunctionLiteral body. Now clients cannot use function_literal->body() == nullptr anymore to figure out whether it was preparsed; but have to check the eager compile hint. Change-Id: Ia0d3a6b51c6fb7e803157e98a9d224224e03c8a7 Reviewed-on: https://chromium-review.googlesource.com/c/1317811Reviewed-by: Leszek Swirski <leszeks@chromium.org> Reviewed-by: Camillo Bruni <cbruni@chromium.org> Commit-Queue: Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#57246}
-