- 05 Oct, 2017 1 commit
-
-
Marja Hölttä authored
The catch variable is a special VAR-mode variable which is not in a declaration scope. Normally creating such a variable is not possible with DeclareVariable, but Parser bypasses it by calling DeclareLocal directly (which doesn't have the hoisting check). PreParser used to cut corners and declare the catch variable as a LET-mode variable to prevent hoisting. But since LET and VAR variables behave differently when deciding whether they block sloppy block function hoisting, that approach doesn't fly. BUG=v8:5516,chromium:771474 Change-Id: Ic6f5f4996416c9fa59132725c8b0b6b570c72f48 Reviewed-on: https://chromium-review.googlesource.com/700634 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#48308}
-
- 07 Sep, 2017 1 commit
-
-
Peter Marshall authored
This is a reland of 9b35364c Original change's description: > [cleanup] Replace more instances of List with std::vector. > > Bug: v8:6333 > Change-Id: Ic1956d3dcfc0309fe2b65344e5af7235d5b804a2 > Reviewed-on: https://chromium-review.googlesource.com/651413 > Reviewed-by: Georg Neis <neis@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Commit-Queue: Peter Marshall <petermarshall@chromium.org> > Cr-Commit-Position: refs/heads/master@{#47854} Bug: v8:6333 Change-Id: I5d9482b061f26b57550a421ea4099372dc80767f Reviewed-on: https://chromium-review.googlesource.com/654898Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#47884}
-
- 06 Sep, 2017 2 commits
-
-
Peter Marshall authored
This reverts commit 9b35364c. Reason for revert: Failing tests on Win64 Debug Original change's description: > [cleanup] Replace more instances of List with std::vector. > > Bug: v8:6333 > Change-Id: Ic1956d3dcfc0309fe2b65344e5af7235d5b804a2 > Reviewed-on: https://chromium-review.googlesource.com/651413 > Reviewed-by: Georg Neis <neis@chromium.org> > Reviewed-by: Jakob Gruber <jgruber@chromium.org> > Commit-Queue: Peter Marshall <petermarshall@chromium.org> > Cr-Commit-Position: refs/heads/master@{#47854} TBR=neis@chromium.org,jgruber@chromium.org,petermarshall@chromium.org Change-Id: Ifa2cd98edd9ec5e1d67c81501f0d9e8aae69536c No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6333 Reviewed-on: https://chromium-review.googlesource.com/653117Reviewed-by:
Peter Marshall <petermarshall@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#47855}
-
Peter Marshall authored
Bug: v8:6333 Change-Id: Ic1956d3dcfc0309fe2b65344e5af7235d5b804a2 Reviewed-on: https://chromium-review.googlesource.com/651413Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Commit-Queue: Peter Marshall <petermarshall@chromium.org> Cr-Commit-Position: refs/heads/master@{#47854}
-
- 31 Aug, 2017 1 commit
-
-
Adam Klein authored
This makes several changes to SwitchStatement handling: - Store the CaseClause list inline (as it's always allocated) - Only rewrite with additional blocks if the Block Scope for the switch statement isn't empty - Use Parser::IgnoreCompletion() instead of inserting an additional `undefined` ExpressionStatement Bug: v8:6092 Change-Id: Ib08d0ba851dd8e78b3dc74782b8e554541e79182 Reviewed-on: https://chromium-review.googlesource.com/644176Reviewed-by:
Marja Hölttä <marja@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#47751}
-
- 30 Aug, 2017 1 commit
-
-
Adam Klein authored
CaseClause never made sense as an Expression; this CL allows us to remove several UNREACHABLEs and slim down the representation of CaseClause by removing its source position (which was only used in prettyprinting). The only real fallout of this change is that SourceRangeMap now stores its keys as ZoneObject*, rather than AstNode*, but since there's already compile time typechecking for inserting items into the map this shouldn't cause any ill effects. While modifying CaseClause, also removed the dead body_target() accessor (and related member variable). Thus this CL overall reduces the memory needed for each CaseClause by two words. Bug: v8:6092 Change-Id: I0021c0590a69e29305c41ec6105c8824ae0cc25b Reviewed-on: https://chromium-review.googlesource.com/639316Reviewed-by:
Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Reviewed-by:
Mythri Alle <mythria@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#47722}
-
- 29 Aug, 2017 3 commits
-
-
Adam Klein authored
There was only one case where this wasn't the case, having to do with variable declarations, and for that case the information need not actually be stored on the block, but should rather be propagated to the VariableProxy. Bug: v8:6092 Change-Id: I0d0025ec73d3dd4f9402606105d3e883a9417283 Reviewed-on: https://chromium-review.googlesource.com/639911 Commit-Queue: Adam Klein <adamk@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#47692}
-
Adam Klein authored
The vast majority of callers pass null |labels| and kNoSourcePosition, so make those the default arguments. Bug: v8:6092 Change-Id: Ifac3f0d49f56b680ec75b1a7afde5e5e788d9cfd Reviewed-on: https://chromium-review.googlesource.com/639761 Commit-Queue: Adam Klein <adamk@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#47691}
-
Adam Klein authored
Also a few bits of related dead code in Parser. Bug: v8:6092 Change-Id: Ie30aa1bd769b78fec2563fc6ba82ef0bcd7668bb Reviewed-on: https://chromium-review.googlesource.com/639311Reviewed-by:
Marja Hölttä <marja@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#47688}
-
- 23 Aug, 2017 2 commits
-
-
Marja Hölttä authored
Now that they contain more than just one member variable, this might make sense (and at least doesn't do any harm). BUG=v8:6092 Change-Id: Ibd150bedf542580f69946f62f8aca47bce945499 Reviewed-on: https://chromium-review.googlesource.com/623748 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#47547}
-
Ross McIlroy authored
> This reverts commit 42d3d36b. > > Original change's description: > > [Compiler] Remove code aging support. > > > > Code aging is no longer supported by any remaining compilers now > > that full codegen has been removed. This CL removes all vestiges of > > code aging. > > > > BUG=v8:6409 > > > > Change-Id: I945ebcc20c7c55120550c8ee36188bfa042ea65e > > Reviewed-on: https://chromium-review.googlesource.com/619153 > > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > > Reviewed-by: Yang Guo <yangguo@chromium.org> > > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > > Reviewed-by: Marja Hölttä <marja@chromium.org> > > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> > > Cr-Commit-Position: refs/heads/master@{#47501} > > TBR=ulan@chromium.org,rmcilroy@chromium.org,marja@chromium.org,yangguo@chromium.org,mstarzinger@chromium.org,rodolph.perfetta@arm.com > > Change-Id: I9d8b2985e2d472697908270d93a35eb7ef9c88a8 > No-Presubmit: true > No-Tree-Checks: true > No-Try: true > Bug: v8:6409 > Reviewed-on: https://chromium-review.googlesource.com/625998 > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org> > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> > Cr-Commit-Position: refs/heads/master@{#47506} TBR=ulan@chromium.org,rmcilroy@chromium.org,marja@chromium.org,yangguo@chromium.org,mstarzinger@chromium.org,rodolph.perfetta@arm.com Change-Id: I68785c6be7686e874b3848103e3a34483eaeb519 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6409 Reviewed-on: https://chromium-review.googlesource.com/625919Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#47535}
-
- 22 Aug, 2017 3 commits
-
-
Adam Klein authored
Also remove a few bits of related dead code in Parser. Bug: v8:6092 Change-Id: I310936341fe3e6193e36983723985a190d5d278b Reviewed-on: https://chromium-review.googlesource.com/621958 Commit-Queue: Adam Klein <adamk@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#47518}
-
Ross McIlroy authored
This reverts commit a205117c. Reason for revert: breaks Arm64 Original change's description: > [Compiler] Remove code aging support. > > Code aging is no longer supported by any remaining compilers now > that full codegen has been removed. This CL removes all vestiges of > code aging. > > BUG=v8:6409 > > Change-Id: I945ebcc20c7c55120550c8ee36188bfa042ea65e > Reviewed-on: https://chromium-review.googlesource.com/619153 > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org> > Reviewed-by: Yang Guo <yangguo@chromium.org> > Reviewed-by: Ulan Degenbaev <ulan@chromium.org> > Reviewed-by: Marja Hölttä <marja@chromium.org> > Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> > Cr-Commit-Position: refs/heads/master@{#47501} TBR=ulan@chromium.org,rmcilroy@chromium.org,marja@chromium.org,yangguo@chromium.org,mstarzinger@chromium.org,rodolph.perfetta@arm.com Change-Id: I9d8b2985e2d472697908270d93a35eb7ef9c88a8 No-Presubmit: true No-Tree-Checks: true No-Try: true Bug: v8:6409 Reviewed-on: https://chromium-review.googlesource.com/625998Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#47506}
-
Ross McIlroy authored
Code aging is no longer supported by any remaining compilers now that full codegen has been removed. This CL removes all vestiges of code aging. BUG=v8:6409 Change-Id: I945ebcc20c7c55120550c8ee36188bfa042ea65e Reviewed-on: https://chromium-review.googlesource.com/619153Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Yang Guo <yangguo@chromium.org> Reviewed-by:
Ulan Degenbaev <ulan@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#47501}
-
- 17 Aug, 2017 3 commits
-
-
Adam Klein authored
Before this patch, the parser mixed mixed "Null" and "Empty" as names for null placeholder instances in ParserBase. Confusingly, those meant different things in case of Statements. This patch uses "Null" anywhere the meaning is "== nullptr" in the Parser. It also makes use of std::nullptr_t and templatized IsNull() methods to reduce the amount of boilerplate needed in both the Parser and PreParser. Change-Id: I1451ba56d1a56466beb7e0c91dcf8e2bb7084413 Reviewed-on: https://chromium-review.googlesource.com/618167 Commit-Queue: Adam Klein <adamk@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#47406}
-
Adam Klein authored
This patch handles C-style, as well as for-in/of loops. for-await loops will be changed in a followup. Bug: v8:6724 Change-Id: I264b8c2d41c0318e796839bf204f7d77b6d24dd8 Reviewed-on: https://chromium-review.googlesource.com/617410Reviewed-by:
Marja Hölttä <marja@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#47404}
-
Caitlin Potter authored
Move the desugaring into BytecodeGenerator per TODOs. BUG=v8:6472 R=tebbi@chromium.org, rmcilroy@chromium.org, jgruber@chromium.org Change-Id: Ic482bee18d6e6fe73de4c5f9abaf4feda7be2dd5 Reviewed-on: https://chromium-review.googlesource.com/550396Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Commit-Queue: Caitlin Potter <caitp@igalia.com> Cr-Commit-Position: refs/heads/master@{#47403}
-
- 16 Aug, 2017 1 commit
-
-
Adam Klein authored
This loop doesn't itself have a source position, so I wouldn't think block coverage of it would make any sense (and all tests continue to pass). Removing this argument will make some refactoring I'm working on easier. Bug: v8:6724 Change-Id: I4d6b734e077d9e61ad9362d07e57f155ec556221 Reviewed-on: https://chromium-review.googlesource.com/615385Reviewed-by:
Yang Guo <yangguo@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#47375}
-
- 04 Aug, 2017 2 commits
-
-
Marja Hölttä authored
In some cases, PreParser cannot replicate the Scope structure created by Parser. It happens esp. with arrow function parameters, since the relevant information is already lost by the time we figure out it's an arrow function. In these cases, PreParser should bail out of trying to create data for skipping inner functions. Implementation notes: - The arrow function case is more fundamental; the non-arrow case could be hacked together somehow if we implemented tracking is_simple for each param separately; but now that it's possible to bail out consistently from both cases, I don't think the is_simple complication is worth it. - The added mjsunit test cases are based on the test262 test cases which exposed the problem. - cctest/preparser/PreParserScopeAnalysis was exercising similar cases, but the problem didn't show up because the function parameters didn't contain skippable functions. Those test cases have been repurposed for testing the bailout. - Extra precaution: the bailout tests are in a separate file, to guard from the bug that a bailout case results in bailing out of *all* data creation, which would make all skipping tests in the same file useless. BUG=v8:5516 Change-Id: I4324749a5ec602fa5d7dc27647ade0284a6842fe Reviewed-on: https://chromium-review.googlesource.com/599849Reviewed-by:
Adam Klein <adamk@chromium.org> Commit-Queue: Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#47170}
-
Adam Klein authored
This patch removes a few unnecessary bits of async function parsing (the PrepareAsyncFunctionBody() helper method, the FunctionBodyType enum) by doing separate handling of block and single-expression async arrow functions. Change-Id: I64f837635a23eaf06d42887ca7f9ac59c768f0f2 Reviewed-on: https://chromium-review.googlesource.com/601247 Commit-Queue: Adam Klein <adamk@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Cr-Commit-Position: refs/heads/master@{#47169}
-
- 26 Jul, 2017 1 commit
-
-
jgruber authored
The yield* statement when used in combination with async iterators is not supported yet, as that is desugared into a more complex construct that doesn't offer a good dedicated bytecode to attach the source range information yet. Note that invocation counts of generator functions are incorrect as they count each resumption as an individual call. See https://crbug.com/v8/6594. Bug: v8:6000 Change-Id: I7ac7073473c9b64bb207cdbc4dab083ec1145656 Reviewed-on: https://chromium-review.googlesource.com/582690 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#46890}
-
- 14 Jul, 2017 3 commits
-
-
Caitlin Potter authored
SuspendFlags was originally used by the suspend operation to determine which field to record the bytecode offset of a suspended generator, and the value the generator was resumed with. For async generators, await operations would use a separate field, in order to preserve the previous yield input value. This was important to ensure `function.sent` continued to function correctly. As function.sent is being retired, this allows the removal of support for that. Given that this was the only real need for SuspendFlags in the first place (with other uses tacked on as a hack), this involves several other changes as well: - Modification of MacroAssembler AssertGeneratorObject. No longer accepts a SuspendFlags parameter to determine which type of check to perform. - Removal of `flags` operand from SuspendGenerator bytecode, and the GeneratorStore js-operator. - Removal of `flags` parameter from ResumeGeneratorTrampoline builtins. - Removal of Runtime functions, interpreter intrinsics and AccessBuilders associated with the [[await_input_or_debug_pos]] field in JSAsyncGeneratorObject, as this field no longer exists. - Addition of a new `Yield` AST node (subclass of Suspend) in order to prevent the need for the other SuspendFlag values. BUG=v8:5855 TBR=bmeurer@chromium.org Change-Id: Iff2881e4742497fe5b774915e988c3d9d8fbe487 Reviewed-on: https://chromium-review.googlesource.com/570485 Commit-Queue: Caitlin Potter <caitp@igalia.com> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#46683}
-
jgruber authored
Bug: v8:6000 Change-Id: I8c068383300ba869a87f836504c84ea08fcff87e Reviewed-on: https://chromium-review.googlesource.com/568307Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#46675}
-
Caitlin Potter authored
This includes several changes. From most to least interesting: - No longer implement AwaitExpressions using a do-expression. - Reduces frame-size of async generators by not allocating temporary variables to hold results of Await epxressions. - Streamline and reduce generated bytecodes for Await. - Debugger no longer emits a debug::kCallBreakLocation breakpoint for the JS-builtin call performed for Await, and instead only emits such a breakpoint if the operand of Await is actually a call. - Push fewer parameters to Await* builtins, using the receiver for the first parameter (possible now that the CallRuntime invocation not part of the AST). - Adds a new Await AST node. No new members or anything, but it seemed palatable to avoid having `if (is_await())` in a number of VisitSuspend functions. BUG=v8:5855, v8:5099, v8:4483 R=rmcilroy@chromium.org, kozyatinskiy@chromium.org, yangguo@chromium.org TBR=bmeurer@chromium.org Change-Id: I9cd3fda99cd40295c04fdf1aea01b5d83fac6caf Reviewed-on: https://chromium-review.googlesource.com/558806 Commit-Queue: Georg Neis <neis@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Tobias Tebbi <tebbi@chromium.org> Reviewed-by:
Aleksey Kozyatinskiy <kozyatinskiy@chromium.org> Cr-Commit-Position: refs/heads/master@{#46666}
-
- 13 Jul, 2017 1 commit
-
-
jgruber authored
Both labeled blocks: l0: { break l0; } and blocks containing jump statements (break, return, continue) require a continuation counter to correctly display coverage. Bug: v8:6000 Change-Id: I3ae8ddd3d9f6c087622482b86014dd583b774b71 Reviewed-on: https://chromium-review.googlesource.com/568024Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#46644}
-
- 12 Jul, 2017 1 commit
-
-
jgruber authored
This CL moves collected source range information out of AST nodes and into a side table stored on ParseInfo. The side table is only created if block coverage is enabled, so there's almost no memory overhead in the standard case. Change-Id: I41871b8425ebbc6217d82d3ad26b5fc9e5d68ecb Reviewed-on: https://chromium-review.googlesource.com/566808 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#46590}
-
- 11 Jul, 2017 1 commit
-
-
jgruber authored
Switch statements generate a counter for each clause plus a continuation counter. Bug: v8:6000 Change-Id: Ic55a7efda54de1152bd5283d753119aa2764afbd Reviewed-on: https://chromium-review.googlesource.com/558249Reviewed-by:
Georg Neis <neis@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#46550}
-
- 07 Jul, 2017 1 commit
-
-
jgruber authored
This adds support for exception control flow by adding a counter behind throw statements (never incremented), as well as a counter for catch and finally blocks. Bug: v8:6000 Change-Id: I3959772c889b543ab5e186ad7cd710e55a8aec23 Reviewed-on: https://chromium-review.googlesource.com/558993 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Georg Neis <neis@chromium.org> Cr-Commit-Position: refs/heads/master@{#46476}
-
- 30 Jun, 2017 1 commit
-
-
Marja Hölttä authored
This way, each lazy function needs to handle only the data relevant to itself. This reduced data handling overheads. Other changes: 1) Don't deserialize the data; once it's on the heap, it can stay there. Lazy function compilation is only done in the main thread. 2) Separate ProducedPreParsedScopeData and ConsumedPreParsedScopeData. It's clearer, because: - The data looks fundamentally different when we're producing it and when we're consuming it. - Cleanly separates the operations we can do in the "producing phase" and in the "consuming phase". Bug: v8:5516 Change-Id: I6985a6621f71b348a55155724765624b5d5f7c33 Reviewed-on: https://chromium-review.googlesource.com/528094 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Michael Starzinger <mstarzinger@chromium.org> Reviewed-by:
Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#46347}
-
- 23 Jun, 2017 2 commits
-
-
Marja Hölttä authored
Make PreParser match what Parser does. BUG=v8:5516 Change-Id: I2801206fd17b9a5047bc43c6112f4945971596b7 Reviewed-on: https://chromium-review.googlesource.com/544949 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Daniel Vogelheim <vogelheim@chromium.org> Cr-Commit-Position: refs/heads/master@{#46169}
-
jgruber authored
Drive-by-fixes: Singleton ranges past EOF, disable optimization for block count mode. Bug: v8:6000 Change-Id: I718891f8821285ce3d7d8360faaa91a43de5b93d Reviewed-on: https://chromium-review.googlesource.com/541300Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Commit-Queue: Jakob Gruber <jgruber@chromium.org> Cr-Commit-Position: refs/heads/master@{#46168}
-
- 22 Jun, 2017 1 commit
-
-
Marja Hölttä authored
let f = function g() { ... } declares "g" inside the function. This CL makes the preparser declare it too, and saves + restores the scope data for it. BUG=v8:5516 Change-Id: Id4c64f446d30f5252038cfb0f0f473b85ba24a9b Reviewed-on: https://chromium-review.googlesource.com/544816 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Daniel Vogelheim <vogelheim@chromium.org> Cr-Commit-Position: refs/heads/master@{#46133}
-
- 20 Jun, 2017 1 commit
-
-
Igor Sheludko authored
The initial implementation did not work in certain cases. For example, in the following case 'f' didn't have a shared name while it should have had an empty shared name: var f = (function() { return function() { return 42; } }(); The new implementation ensures that all anonymous functions have empty shared name and if any of them happen to be an object literal property value or an accessor function or a concise method then such a function is marked as having no shared name. Bug: v8:6459 Change-Id: I0f936afce0c152d91b2b41c1dc475a5ed841eca0 Reviewed-on: https://chromium-review.googlesource.com/538666Reviewed-by:
Marja Hölttä <marja@chromium.org> Commit-Queue: Igor Sheludko <ishell@chromium.org> Cr-Commit-Position: refs/heads/master@{#46026}
-
- 12 Jun, 2017 1 commit
-
-
Adam Klein authored
These accessors are only called from the Parser, never ParserBase, so there's no need to expose them in parser-base.h. Instead, access them through FunctionState::scope(). This also allows removal of the Types::Variable typedefs. Bug: v8:6460 Change-Id: I01186c53d3cc2a2737f3c07169fdd122dff5b174 Reviewed-on: https://chromium-review.googlesource.com/530034Reviewed-by:
Sathya Gunasekaran <gsathya@chromium.org> Commit-Queue: Adam Klein <adamk@chromium.org> Cr-Commit-Position: refs/heads/master@{#45879}
-
- 09 Jun, 2017 1 commit
-
-
Marja Hölttä authored
ExpressionClassifier was used just for transmitting information back and forth to DeclareFormalParameters. As a bonus, we now do the Scope::IsDeclaredParameter check only when we're going to use the information it produces. BUG=v8:6092,v8:6474 Change-Id: Ib5ac6a779705caa74e933e1c6f03eaaf0f49bf05 Reviewed-on: https://chromium-review.googlesource.com/455836 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Toon Verwaest <verwaest@chromium.org> Cr-Commit-Position: refs/heads/master@{#45809}
-
- 08 Jun, 2017 1 commit
-
-
jgruber authored
This adds block coverage support for simple iteration. For-of and for-in loops are not yet covered, and we don't yet keep execution counts for init, cond, and next statements. BUG=v8:6000 Change-Id: I30b468a2c93f0bb60e857b6632be92920f6857e0 Reviewed-on: https://chromium-review.googlesource.com/527113 Commit-Queue: Jakob Gruber <jgruber@chromium.org> Reviewed-by:
Marja Hölttä <marja@chromium.org> Reviewed-by:
Ross McIlroy <rmcilroy@chromium.org> Cr-Commit-Position: refs/heads/master@{#45779}
-
- 06 Jun, 2017 1 commit
-
-
jgruber authored
This CL implements general infrastructure for block coverage together with initial support for if-statements. Coverage output can be generated in lcov format by d8 as follows: $ d8 --block-coverage --lcov=$(echo ~/simple-if.lcov) ~/simple-if.js $ genhtml ~/simple-if.lcov -o ~/simple-if $ chrome ~/simple-if/index.html A high level overview of the implementation follows: The parser now collects source ranges unconditionally for relevant AST nodes. Memory overhead is very low and this seemed like the cleanest and simplest alternative. Bytecode generation uses these ranges to allocate coverage slots and insert IncBlockCounter instructions (e.g. at the beginning of then- and else blocks for if-statements). The slot-range mapping is generated here and passed on through CompilationInfo, and is later accessible through the SharedFunctionInfo. The IncBlockCounter bytecode fetches the slot-range mapping (called CoverageInfo) from the shared function info and simply increments the counter. We don't collect native-context-specific counts as they are irrelevant to our use-cases. Coverage information is finally generated on-demand through Coverage::Collect. The only current consumer is a d8 front-end with lcov-style output, but the short-term goal is to expose this through the inspector protocol. BUG=v8:6000 CQ_INCLUDE_TRYBOTS=master.tryserver.chromium.linux:linux_chromium_rel_ng Review-Url: https://codereview.chromium.org/2882973002 Cr-Commit-Position: refs/heads/master@{#45737}
-
- 05 Jun, 2017 2 commits
-
-
jarin authored
The change also moves creation of the iterator result from the parser to the bytecode generator. Unfortunately, async generators will stay on the old scheme (try-finally around generator body) because I am not exactly sure how they work. Review-Url: https://codereview.chromium.org/2917263002 Cr-Commit-Position: refs/heads/master@{#45713}
-
Adam Klein authored
Now that the BytecodeGenerator has a dedicated register holding the generator object, BytecodeGenerator::VisitSuspend can access the generator directly from that register. This reduces by one the number of live registers at each suspend point. Bug: v8:6351, v8:6460 Change-Id: I380a9d2bd8ca7eec6720e5392c1ca07dd0df0e2d Reviewed-on: https://chromium-review.googlesource.com/522982 Commit-Queue: Adam Klein <adamk@chromium.org> Reviewed-by:
Jaroslav Sevcik <jarin@chromium.org> Reviewed-by:
Leszek Swirski <leszeks@chromium.org> Cr-Commit-Position: refs/heads/master@{#45710}
-
- 29 May, 2017 1 commit
-
-
Marja Hölttä authored
For non-simple param lists, the parser first declares a TEMPORARY for each param, and then the named variables as locals. The TEMPORARY variables determine the parameter count. This CL makes the PreParser produce the same parameter count as the Parser. BUG=v8:5516 Change-Id: I8a794d6a8342145ab7934d922e2d69450d67b199 Reviewed-on: https://chromium-review.googlesource.com/517944 Commit-Queue: Marja Hölttä <marja@chromium.org> Reviewed-by:
Daniel Vogelheim <vogelheim@chromium.org> Cr-Commit-Position: refs/heads/master@{#45566}
-