- 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}
-
- 27 Jan, 2017 2 commits
-
-
marja authored
BUG=v8:5402 Review-Url: https://codereview.chromium.org/2663513002 Cr-Commit-Position: refs/heads/master@{#42742}
-
mstarzinger authored
This makes sure all use-site of {ObjectLiteral::constant_properties} are adapted to use the correct {BoilerplateDescription} type instead of just the {FixedArray} base type. R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/2659603003 Cr-Commit-Position: refs/heads/master@{#42738}
-
- 26 Jan, 2017 2 commits
-
-
mvstanton authored
This is a remnant of a previous design to a solution yet to be checked in. BUG=v8:5456 R=bmeurer@chromium.org Review-Url: https://codereview.chromium.org/2650853008 Cr-Commit-Position: refs/heads/master@{#42692}
-
gsathya authored
Changes output from CALL RUNTIME (context function) code = 0x3e9ea90a2049 at -1 to CALL RUNTIME async_function_promise_create code = 0x3e9ea90a2049 at -1 This makes the ast more useful. I didn't annotate all the runtime calls, only some for now. We can annotate others if necessary. Review-Url: https://codereview.chromium.org/2654113002 Cr-Commit-Position: refs/heads/master@{#42671}
-
- 23 Jan, 2017 2 commits
-
-
franzih authored
For an object literal, has_seen_proto is needed to create the BoilerplateDescription. When iterating over the object properties in the AST, has_seen_proto can easily be computed. The flag in the ObjectLiteral is unnecessary. R=verwaest@chromium.org BUG=v8:5625 Review-Url: https://codereview.chromium.org/2646333002 Cr-Commit-Position: refs/heads/master@{#42601}
-
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 2 commits
-
-
franzih authored
Allocate space in the backing store for computed property names. The property backing store was pre-allocated for the constant properties up to the first non-constant (computed name) property. To use lowering for storing data properties in literals with computed property names effectively, a fast store is needed, i.e., available space in the property backing store for properties with computed names. backing_store_size is the number of all properties (including computed names, but without __proto__) that is calculated in the ast and passed to the runtime function that allocates the property backing store. backing_store_size and constant_properties constitute a BoilerplateDescription. backing_store_size might be slightly too high because computed names can evaluate to the same name, but that should be a rare case so over-allocating is OK. If a property is __proto__, we don't store it as a regular property, because the map changes. Keep track of has_seen_proto in the parser to calculate the backing store size correctly. BUG=v8:5625 Review-Url: https://codereview.chromium.org/2632503003 Cr-Commit-Position: refs/heads/master@{#42576}
-
marja authored
E.g., ast/ast.h uses Label but shouldn't need to include assembler.h for that. With this change, we can hope for proper layering in the future (not quite there yet). Also includes minor random include lowering and relevant IWYU fixes. BUG=v8:5294 Review-Url: https://codereview.chromium.org/2645063002 Cr-Commit-Position: refs/heads/master@{#42563}
-
- 18 Jan, 2017 3 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}
-
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}
-
- 16 Jan, 2017 2 commits
-
-
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}
-
leszeks authored
Moves constant element/property array building to be deferred for igition and on-demand for the other compilers, and splits off the object/array literal depth/flag initialisation from the array building. BUG=v8:5832 Review-Url: https://codereview.chromium.org/2625873009 Cr-Commit-Position: refs/heads/master@{#42362}
-
- 12 Jan, 2017 1 commit
-
-
verwaest authored
BUG= Review-Url: https://codereview.chromium.org/2629143002 Cr-Commit-Position: refs/heads/master@{#42275}
-
- 09 Jan, 2017 2 commits
-
-
mvstanton authored
This changes the NewClosure interface descriptor, but ignores the additional vector/slot arguments for now. The feedback vector gets larger, as it holds a space for each literal array. A follow-on CL will constructively use this space. BUG=v8:5456 Review-Url: https://codereview.chromium.org/2614373002 Cr-Commit-Position: refs/heads/master@{#42146}
-
franzih authored
BUG= Review-Url: https://codereview.chromium.org/2596803002 Cr-Commit-Position: refs/heads/master@{#42131}
-
- 05 Jan, 2017 2 commits
-
-
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}
-
franzih authored
Add a feedback vector slot for computed property names in object and class literals. Introduce new slot kind for storing computed property names. Change StaDataPropertyInLiteral to use the accumulator (again), so we don't exceed Bytecodes::kMaxOperands. We assume that most computed property names are symbols. Therefore we should see performance improvements, even if we deal with monomorphic ICs only. This CL only collects feedback but does not use it in Reduce() yet. BUG=v8:5624 Review-Url: https://codereview.chromium.org/2587393006 Cr-Commit-Position: refs/heads/master@{#42082}
-
- 04 Jan, 2017 1 commit
-
-
adamk authored
This moves the initialization of [[HomeObject]] for constructors from the %DefineClass runtime function into the bytecode generator, and makes it conditional (resolving an old TODO). As part of this refactor, avoid a load of "prototype" by returning the class prototype from %DefineClass. This is one of many steps in moving more of class definition into bytecode. R=rmcilroy@chromium.org Review-Url: https://codereview.chromium.org/2610683003 Cr-Commit-Position: refs/heads/master@{#42072}
-
- 03 Jan, 2017 1 commit
-
-
marja authored
(Missing includes discovered during the objects.h splitting work.) BUG=v8:5402 Review-Url: https://codereview.chromium.org/2610643002 Cr-Commit-Position: refs/heads/master@{#42029}
-
- 29 Dec, 2016 1 commit
-
-
mvstanton authored
The following ported to builtins: FastCloneRegExp FastCloneShallowArray FastCloneShallowObject BUG= TBR=rmcilroy@chromium.org, rossberg@chromium.org Review-Url: https://codereview.chromium.org/2605893002 Cr-Commit-Position: refs/heads/master@{#41989}
-
- 22 Dec, 2016 1 commit
-
-
hablich authored
Revert of [TypeFeedbackVector] Root literal arrays in function literals slots (patchset #11 id:370001 of https://codereview.chromium.org/2504153002/ ) Reason for revert: Speculative revert because of blocked roll: https://codereview.chromium.org/2596013002/ Original issue's description: > [TypeFeedbackVector] Root literal arrays in function literals slots > > Literal arrays and feedback vectors for a function can be garbage > collected if we don't have a rooted closure for the function, which > happens often. It's expensive to come back from this (recreating > boilerplates and gathering feedback again), and the cost is > disproportionate if the function was inlined into optimized code. > > To guard against losing these arrays when we need them, we'll now > create literal arrays when creating the feedback vector for the outer > closure, and root them strongly in that vector. > > BUG=v8:5456 > > Review-Url: https://codereview.chromium.org/2504153002 > Cr-Commit-Position: refs/heads/master@{#41893} > Committed: https://chromium.googlesource.com/v8/v8/+/93df094081f04c629c3df2e40318de90ce5e0fb9 TBR=bmeurer@chromium.org,mlippautz@chromium.org,mvstanton@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5456 Review-Url: https://codereview.chromium.org/2597163002 Cr-Commit-Position: refs/heads/master@{#41917}
-
- 21 Dec, 2016 1 commit
-
-
mvstanton authored
Literal arrays and feedback vectors for a function can be garbage collected if we don't have a rooted closure for the function, which happens often. It's expensive to come back from this (recreating boilerplates and gathering feedback again), and the cost is disproportionate if the function was inlined into optimized code. To guard against losing these arrays when we need them, we'll now create literal arrays when creating the feedback vector for the outer closure, and root them strongly in that vector. BUG=v8:5456 Review-Url: https://codereview.chromium.org/2504153002 Cr-Commit-Position: refs/heads/master@{#41893}
-
- 19 Dec, 2016 3 commits
-
-
cbruni authored
Drive-by-fix: Add AstNode::Print() and improve printing of CallRuntime Expression. BUG=v8:5749 Review-Url: https://codereview.chromium.org/2586933002 Cr-Commit-Position: refs/heads/master@{#41803}
-
machenbach authored
Revert of [crankshaft] Fix IsClassOfTest helper method (patchset #1 id:1 of https://codereview.chromium.org/2586933002/ ) Reason for revert: Breaks vtune: https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20vtunejit/builds/15379 Original issue's description: > [crankshaft] Fix IsClassOfTest helper method > > Drive-by-fix: Add AstNode::Print() and improve printing of CallRuntime > Expression. > > BUG=v8:5749 > > Review-Url: https://codereview.chromium.org/2586933002 > Cr-Commit-Position: refs/heads/master@{#41792} > Committed: https://chromium.googlesource.com/v8/v8/+/d4493222b958877e51ebd67399d12a80ec848e30 TBR=bmeurer@chromium.org,cbruni@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5749 Review-Url: https://codereview.chromium.org/2587973002 Cr-Commit-Position: refs/heads/master@{#41795}
-
cbruni authored
Drive-by-fix: Add AstNode::Print() and improve printing of CallRuntime Expression. BUG=v8:5749 Review-Url: https://codereview.chromium.org/2586933002 Cr-Commit-Position: refs/heads/master@{#41792}
-
- 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}
-
mstarzinger authored
This introduces an explicit struct for the communication channel between the {ArrayLiteral} AST node and the corresponding runtime methods. Those methods take a pair of {ElementsKind} as well as an array (can either be a FixedArray or a FixedDoubleArray) of constant values. For bonus points it also reduces the size of the involved heap object by one word (i.e. length field of FixedArray not needed anymore). R=mvstanton@chromium.org Review-Url: https://codereview.chromium.org/2581683003 Cr-Commit-Position: refs/heads/master@{#41752}
-
- 15 Dec, 2016 1 commit
-
-
mstarzinger authored
This fixes a corner case where the {FastCloneShallowArrayStub} was used for literals that are backed by a double backing store and would exceed limits for new-space allocations on 32-bit architectures. The stub in question does not support such literals, callers must use the runtime. Note that this fix is for Ignition as well as FullCodeGenerator. R=rmcilroy@chromium.org TEST=mjsunit/regress/regress-crbug-672792 BUG=chromium:672792 Review-Url: https://codereview.chromium.org/2570843002 Cr-Commit-Position: refs/heads/master@{#41713}
-
- 14 Dec, 2016 1 commit
-
-
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}
-
- 08 Dec, 2016 1 commit
-
-
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 2 commits
-
-
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}
-
- 05 Dec, 2016 1 commit
-
-
mstarzinger authored
Calls that are potential eval calls are funneled through bytecode and hence no longer use the {AstGraphBuilder} by now. Associated bailout points can be removed. R=jarin@chromium.org Review-Url: https://codereview.chromium.org/2549113002 Cr-Commit-Position: refs/heads/master@{#41489}
-
- 02 Dec, 2016 1 commit
-
-
jochen authored
Revert of Introduce a separate FunctionLiteral ID for Eval (patchset #1 id:1 of https://codereview.chromium.org/2533303006/ ) Reason for revert: My assumption that eval and top-level code should be handled differently was wrong Original issue's description: > Introduce a separate FunctionLiteral ID for Eval > > Top level SharedFunctionInfos will end up in a scripts SFI list, but > eval'd SFIs shouldn't. Separate IDs will allow for adding a > corresponding DCHECK. > > BUG=v8:5589 > R=marja@chromium.org > > Committed: https://crrev.com/c6d421ff9aee7f3cab9e48faac88f6b08d2f1cf5 > Cr-Commit-Position: refs/heads/master@{#41421} TBR=marja@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:5589 Review-Url: https://codereview.chromium.org/2544003003 Cr-Commit-Position: refs/heads/master@{#41448}
-
- 01 Dec, 2016 2 commits
-
-
franzih authored
The loop for non-"static" properties is no longer needed in full-codegen since all computed property names in object literals go through Ignition first. BUG=v8:5657 Review-Url: https://codereview.chromium.org/2547433003 Cr-Commit-Position: refs/heads/master@{#41428}
-
jochen authored
Top level SharedFunctionInfos will end up in a scripts SFI list, but eval'd SFIs shouldn't. Separate IDs will allow for adding a corresponding DCHECK. BUG=v8:5589 R=marja@chromium.org Review-Url: https://codereview.chromium.org/2533303006 Cr-Commit-Position: refs/heads/master@{#41421}
-
- 29 Nov, 2016 2 commits
-
-
mstarzinger authored
This removes support for dynamic scoping via with-statement constructs from the {FullCodeGenerator}. Consequently optimized code containing such constructs must use the {BytecodeGraphBuilder} and can no longer use the {AstGraphBuilder} for graph building. R=rmcilroy@chromium.org BUG=v8:5657 Review-Url: https://codereview.chromium.org/2533283002 Cr-Commit-Position: refs/heads/master@{#41365}
-
mstarzinger authored
This removes reservation of unused {BailoutId} numbers for all class literals. These language constructs are by now solely funneled through bytecode and specific ids for deoptimization are no longer needed. R=rmcilroy@chromium.org BUG=v8:5657 Review-Url: https://codereview.chromium.org/2535223002 Cr-Commit-Position: refs/heads/master@{#41358}
-