- 07 Feb, 2017 1 commit
-
-
neis authored
A script like "{ function foo() {} }" declares a VAR-variable at the top-level and a LET-variable inside the block. The LET-variable does not need to be unconditionally marked as assigned. BUG=v8:5636 Review-Url: https://codereview.chromium.org/2680443002 Cr-Commit-Position: refs/heads/master@{#42980}
-
- 06 Feb, 2017 2 commits
-
-
littledan authored
R=adamk Review-Url: https://codereview.chromium.org/2677373002 Cr-Commit-Position: refs/heads/master@{#42976}
-
marja authored
BUG=v8:5516 R=vogelheim@chromium.org Review-Url: https://codereview.chromium.org/2673313003 Cr-Commit-Position: refs/heads/master@{#42957}
-
- 03 Feb, 2017 1 commit
-
-
marja authored
Turns out is_hidden is not the right condition for "scope should be present in the preparse data". For now, replaced it with "is hidden leaf scope" (i.e., doesn't contain any non-hidden scopes). That's probably not the right condition either; will be fixed once there's more data to decide what the right condition is. BUG=v8:5516 R=vogelheim@chromium.org Review-Url: https://codereview.chromium.org/2669163002 Cr-Commit-Position: refs/heads/master@{#42909}
-
- 01 Feb, 2017 1 commit
-
-
adamk authored
The hoist_scope member of DeclarationDescriptor was only used to pass the function scope for declaration of parameters containing sloppy evals, for example: function f(x = eval("var y")) { } In cases like this, "x" is declared in the function scope but "y" is declared in an inner scope. Rather than passing the function scope as "hoist_scope", we simply ask for the outer_scope() of the inner scope as needed in PatternRewriter. This reduces the cognitive overhead of understanding what a DeclarationDescriptor has; for example, it removes some dead code from the PreParser which never has to deal with a situation like the example above. Review-Url: https://codereview.chromium.org/2662183002 Cr-Commit-Position: refs/heads/master@{#42861}
-
- 31 Jan, 2017 2 commits
-
-
gsathya authored
Rewrites import expression into a runtime call. Uses peekahead to determine if parsing an import declaration or import expression. The runtime call doesn't actually do the import yet, will be added in follow on patch. Adds a new --harmony-dynamic-import flag. Adds a ignore_error_msg parameter to the test runner to ignore the discrepancy in the error messages while parsing import expression with parser and pre parser. This discrepancy will actually never happen in real code. BUG=v8:5785 Review-Url: https://codereview.chromium.org/2661933003 Cr-Commit-Position: refs/heads/master@{#42820}
-
neis authored
A previous CL (https://codereview.chromium.org/2634123002) did that for let-declared variables. This CL also does it for var- and function-declared variables. BUG=v8:5636 Review-Url: https://codereview.chromium.org/2656753003 Cr-Commit-Position: refs/heads/master@{#42813}
-
- 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}
-
- 25 Jan, 2017 1 commit
-
-
marja authored
[parser]: Skipping inner funcs / initial implemetation of storing scope analysis data from preparsed scopes. The data produced at the moment only contains information about scope type + positions, and only the most trivial tests pass. Upcoming CLs will extend the data to contain information about variables (once PreParser can produce it) and add more test cases. BUG=v8:5516 Review-Url: https://codereview.chromium.org/2650703003 Cr-Commit-Position: refs/heads/master@{#42656}
-
- 23 Jan, 2017 1 commit
-
-
petermarshall authored
Also, emit a NewWithSpread bytecode for CallNew AST nodes where possible, rather than desugaring in the parser. BUG=v8:5511 Review-Url: https://codereview.chromium.org/2629363002 Cr-Original-Commit-Position: refs/heads/master@{#42455} Committed: https://chromium.googlesource.com/v8/v8/+/4bae43471d5685e34d8bd74458889b83e60235a0 Review-Url: https://codereview.chromium.org/2629363002 Cr-Commit-Position: refs/heads/master@{#42590}
-
- 20 Jan, 2017 1 commit
-
-
marja authored
Rationale: - To do scope analysis based on PreParser, and use the result again when parsing later, PreParser and Parser need to produce the same Scopes and variable declarations in them. - This is not the case for non-simple parameters: Parser creates an additional inner Scope where the declarations were, whereas PreParser does DeclareVariableName directly in the function Scope. - So this CL fixes that by moving the Scope creation for non-simple parameters into ParserBase. - As a side product (and a partial proof that this change makes sense), PreParser::ParseEagerFunctionBody is now gone. BUG=v8:5516 Review-Url: https://codereview.chromium.org/2638333002 Cr-Commit-Position: refs/heads/master@{#42537}
-
- 19 Jan, 2017 1 commit
-
-
jgruber authored
Just desugar directly into the runtime call instead. BUG=v8:5639 Review-Url: https://codereview.chromium.org/2633353002 Cr-Commit-Position: refs/heads/master@{#42492}
-
- 18 Jan, 2017 4 commits
-
-
petermarshall authored
Revert of [Ignition/turbo] Add a CallWithSpread bytecode. (patchset #10 id:170001 of https://codereview.chromium.org/2629363002/ ) Reason for revert: Causes a few bugs caught by clusterfuzz. Original issue's description: > [Ignition/turbo] Add a CallWithSpread bytecode. > > Also, emit a NewWithSpread bytecode for CallNew AST nodes where possible, rather than desugaring in the parser. > > BUG=v8:5511 > > Review-Url: https://codereview.chromium.org/2629363002 > Cr-Commit-Position: refs/heads/master@{#42455} > Committed: https://chromium.googlesource.com/v8/v8/+/4bae43471d5685e34d8bd74458889b83e60235a0 TBR=bmeurer@chromium.org,rmcilroy@chromium.org,verwaest@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5511 Review-Url: https://codereview.chromium.org/2642843002 Cr-Commit-Position: refs/heads/master@{#42470}
-
petermarshall authored
Also, emit a NewWithSpread bytecode for CallNew AST nodes where possible, rather than desugaring in the parser. BUG=v8:5511 Review-Url: https://codereview.chromium.org/2629363002 Cr-Commit-Position: refs/heads/master@{#42455}
-
neis authored
R=adamk@chromium.org BUG= NOTRY=true NOTREECHECKS=true Review-Url: https://codereview.chromium.org/2634313002 Cr-Commit-Position: refs/heads/master@{#42438}
-
gsathya authored
This rewrites the rest property into a runtime call which sets up the correct properties in the newly created object. - Changes flag to --harmony-object-rest-spread - Changes pattern rewriter to desugar rest property - Adds new runtime function CopyDataPropertiesWithExcludedProperties BUG=v8:5549 Review-Url: https://codereview.chromium.org/2620943002 Cr-Commit-Position: refs/heads/master@{#42430}
-
- 17 Jan, 2017 2 commits
-
-
marja authored
This makes it clearer which places are creating variables which are something else than NORMAL_VARIABLE + kCreatedInitialized. BUG= Review-Url: https://codereview.chromium.org/2631173002 Cr-Commit-Position: refs/heads/master@{#42395}
-
rmcilroy authored
Creates an AstStringConstants container which pre-initializes the string constants used by AstValueFactory. This ensures that all AstValueFactories will produce the same AstValue objects for constants, and so they can be used by the BytecodeGenerator without having to pass the AstValueFactory to it, enabling construction off-thread. BUG=v8:5203 Review-Url: https://codereview.chromium.org/2630343002 Cr-Original-Commit-Position: refs/heads/master@{#42381} Committed: https://chromium.googlesource.com/v8/v8/+/d611496b8ed30af787d8668f96b400617c858508 Review-Url: https://codereview.chromium.org/2630343002 Cr-Commit-Position: refs/heads/master@{#42394}
-
- 16 Jan, 2017 3 commits
-
-
rmcilroy authored
Revert of [Parser] Introduce AstStringConstants to share constants across AstValueFactory (patchset #4 id:80001 of https://codereview.chromium.org/2630343002/ ) Reason for revert: Seems to break modules-namespace2 on gcstress. Original issue's description: > [Parser] Introduce AstStringConstants to share constants across AstValueFactory > > Creates an AstStringConstants container which pre-initializes the > string constants used by AstValueFactory. This ensures that all > AstValueFactories will produce the same AstValue objects for constants, > and so they can be used by the BytecodeGenerator without having to pass > the AstValueFactory to it, enabling construction off-thread. > > BUG=v8:5203 > > Review-Url: https://codereview.chromium.org/2630343002 > Cr-Commit-Position: refs/heads/master@{#42381} > Committed: https://chromium.googlesource.com/v8/v8/+/d611496b8ed30af787d8668f96b400617c858508 TBR=ahaas@chromium.org,marja@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5203 Review-Url: https://codereview.chromium.org/2638783002 Cr-Commit-Position: refs/heads/master@{#42382}
-
rmcilroy authored
Creates an AstStringConstants container which pre-initializes the string constants used by AstValueFactory. This ensures that all AstValueFactories will produce the same AstValue objects for constants, and so they can be used by the BytecodeGenerator without having to pass the AstValueFactory to it, enabling construction off-thread. BUG=v8:5203 Review-Url: https://codereview.chromium.org/2630343002 Cr-Commit-Position: refs/heads/master@{#42381}
-
marja authored
- Generalize the sloppy block function data structures to allow PreParser adding and hoisting sloppy block funcs. - This completes PreParser scope analysis. BUG=v8:5501, v8:5516 R=verwaest@chromium.org Review-Url: https://codereview.chromium.org/2636543002 Cr-Commit-Position: refs/heads/master@{#42368}
-
- 12 Jan, 2017 1 commit
-
-
marja authored
The bug was caused by AstTraversalVisitor refactoring: https://codereview.chromium.org/2169833002/ InitializerRewriter::VisitRewritableExpression in parser.cc didn't recurse; so it fails when a rewritable expression contains another rewritable expression. See the bug for more details. BUG=chromium:679727 Review-Url: https://codereview.chromium.org/2629623002 Cr-Commit-Position: refs/heads/master@{#42274}
-
- 10 Jan, 2017 1 commit
-
-
adamk authored
It shipped with Chrome 55 stable. R=littledan@chromium.org Review-Url: https://codereview.chromium.org/2621173002 Cr-Commit-Position: refs/heads/master@{#42203}
-
- 09 Jan, 2017 2 commits
-
-
marja authored
Downside: this adds all kinds of weird includes in the .cc files. (See design doc linked in the bug.) BUG=v8:5402 Review-Url: https://codereview.chromium.org/2622503002 Cr-Commit-Position: refs/heads/master@{#42140}
-
marja authored
This adds tracking the following: - Declarations created by catch (potentially destructuring) - Declarations created by for-each (potentially destructuring) - Class declarations BUG=v8:5501, v8:5516 Review-Url: https://codereview.chromium.org/2617923003 Cr-Commit-Position: refs/heads/master@{#42129}
-
- 05 Jan, 2017 1 commit
-
-
gsathya authored
This patch adds parsing of spread object property. -- Changes ParsePropertyName to parse Token::ELLIPSIS. -- Throws if rest is encountered by setting a pattern error. -- Adds a new PropertyKind enum (SPREAD) -- Adds a new ObjectLiteralProperty::kind (SPREAD) -- Adds a new harmony-object-spread flag and protects the parser code with it. -- Adds a new runtime function called CopyDataProperties -- Does not add any support for this feature in fullcodegen. -- Ignition calls out to a runtime function CopyDataProperties to perform spread operation. -- Move FastAssign from builtins-objects.cc to objects.cc -- Refactor Builtin_ObjectAssign to use SetOrCopyDataProperties Object rest will be implemented in a follow on patch. BUG=v8:5549 Review-Url: https://codereview.chromium.org/2606833002 Cr-Commit-Position: refs/heads/master@{#42102}
-
- 03 Jan, 2017 1 commit
-
-
adamk authored
TBR=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/2609663002 Cr-Commit-Position: refs/heads/master@{#42047}
-
- 29 Dec, 2016 1 commit
-
-
adamk authored
This looks like it was leftover from strong mode; default class constructors are always in strict mode. R=littledan@chromium.org Review-Url: https://codereview.chromium.org/2601123002 Cr-Commit-Position: refs/heads/master@{#41994}
-
- 16 Dec, 2016 2 commits
-
-
littledan authored
This patch removes parser code implementing desugaring for ESnext public and private fields on classes. The desugaring should probably be implemented in the interpreter instead, and more work needs to go into optimization and debugger support. The actual parsing of class fields is left in, as the syntax is relatively stable, and there are strong cctests for the grammar. R=marja BUG=v8:5367 Review-Url: https://codereview.chromium.org/2578893005 Cr-Commit-Position: refs/heads/master@{#41776}
-
marja authored
Especially, make non-declaration type inner functions eagerly parsed. Then we still have a chance to compile them eagerly if we see () after the function. BUG=v8:5501 Review-Url: https://codereview.chromium.org/2583843002 Cr-Commit-Position: refs/heads/master@{#41762}
-
- 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 2 commits
-
-
gsathya authored
Promise catch prediction no longer has to be threaded through the parser since the code using %catch has been moved to TF codestubs. This is currently dead code. BUG=v8:5343,v8:5741 Review-Url: https://codereview.chromium.org/2575133002 Cr-Commit-Position: refs/heads/master@{#41701}
-
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}
-
- 12 Dec, 2016 2 commits
-
-
lpy authored
When ParseOnBackground is done, we should construct a trace event and dump all background parsing runtime statistics as argument. In tracing we don't want to merge it back to to main thread, instead we show the trace event together with background parsing trace event on script streamer thread track in Trace Viewer. To perf sheriff: A series of counters ParseBackgroundxxx and PreparseBackgroundxxx will be taken into account in this patch, thus runtime statistics graph will increase after this patch gets landed. BUG=v8:5089 Review-Url: https://codereview.chromium.org/2559403002 Cr-Commit-Position: refs/heads/master@{#41658}
-
neis authored
For generator-based functions (e.g. async functions) we force variables to be context-allocated. Due to a bug in the parser, this didn't always work correctly. For instance, in "async function foo([a]) { ... }" the variable "a" could become stack-allocated due to context allocation being forced on the wrong scope. Besides fixing this, I'm also cleaning up some related code in the async parsing setup and adding some guards. R=adamk@chromium.org, littledan@chromium.org BUG= Review-Url: https://codereview.chromium.org/2561093002 Cr-Commit-Position: refs/heads/master@{#41635}
-
- 08 Dec, 2016 2 commits
-
-
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}
-
neis authored
This CL attempts to set the maybe-assigned flag for variables that are written to as part of a destructuring or loop header. For instance, in the following two cases we now mark x as maybe-assigned. a) [x] = [1]; b) for (x of [1,2,3]) {}; There's more work to do here, this is just a first step. R=adamk@chromium.org, mstarzinger@chromium.org BUG=v8:5636 Review-Url: https://codereview.chromium.org/2562443003 Cr-Commit-Position: refs/heads/master@{#41582}
-
- 07 Dec, 2016 3 commits
-
-
jwolfe authored
We're still collecting use counter data for this situation. BUG=v8:4973 CQ_INCLUDE_TRYBOTS=master.tryserver.blink:linux_trusty_blink_rel Review-Url: https://codereview.chromium.org/2510873005 Cr-Commit-Position: refs/heads/master@{#41563}
-
caitp authored
Introduces: - a new AST node representing the GetIterator() algorithm in the specification, to be used by ForOfStatement, YieldExpression (in the case of delegating yield*), and the future `for-await-of` loop proposed in http://tc39.github.io/proposal-async-iteration/#sec-async-iterator-value-unwrap-functions. - a new opcode (JumpIfJSReceiver), which is useful for `if Type(object) is not Object` checks which are common throughout the specification. This node is easily eliminated by TurboFan. The AST node is desugared specially in bytecode, rather than manually when building the AST. The benefit of this is that desugaring in the BytecodeGenerator is much simpler and easier to understand than desugaring the AST. This also reduces parse time very slightly, and allows us to use LoadIC rather than KeyedLoadIC, which seems to have better baseline performance. This results in a ~20% improvement in test/js-perf-test/Iterators micro-benchmarks, which I believe owes to the use of the slightly faster LoadIC as opposed to the KeyedLoadIC in the baseline case. Both produce identical optimized code via TurboFan when the type check can be eliminated, and the load can be replaced with a constant value. BUG=v8:4280 R=bmeurer@chromium.org, rmcilroy@chromium.org, adamk@chromium.org, neis@chromium.org, jarin@chromium.org TBR=rossberg@chromium.org Review-Url: https://codereview.chromium.org/2557593004 Cr-Commit-Position: refs/heads/master@{#41555}
-
henrique.ferreiro authored
This allows to detect a static property also named 'name', and also makes sure 'name' is added last, to be standards-compliant. BUG=v8:4199 Review-Url: https://codereview.chromium.org/2423053002 Cr-Commit-Position: refs/heads/master@{#41546}
-