- 17 Oct, 2016 2 commits
-
-
heimbuef authored
This adds more useful information to the v8-heap-stats tool. BUG=v8:5489 Review-Url: https://codereview.chromium.org/2394213003 Cr-Commit-Position: refs/heads/master@{#40361}
-
mstarzinger authored
This removes the {ParseInfo} constructor consuming a closure, replacing all uses to pass only the shared function info. The goal is to make the fact that parsing is independent of a concrete closure explicit. R=jochen@chromium.org BUG=v8:2206 Committed: https://crrev.com/3de42b3f224217ec88e4c609d3cf23fe06806dca Review-Url: https://codereview.chromium.org/2396963003 Cr-Original-Commit-Position: refs/heads/master@{#40083} Cr-Commit-Position: refs/heads/master@{#40353}
-
- 14 Oct, 2016 1 commit
-
-
marja authored
It doesn't need to have this logic. ParseLazyFunctionLiteralBody is basically just ParseStatementList + log the function position. But PreParser doesn't need to have the "which functions to log" logic, since logging the function is always done exactly when Parser falls back to PreParser. (See PreParseLazyFunction.) So in the current state, PreParser would log several functions in a SingletonLogger, and only the last one would take effect (that's the one Parser also logs in SkipLazyFunctionBody). Also updated test-parsing/Regress928 to produce the preparse data the way we do now (i.e., not running the PreParser directly, but running the Parser). Error reporting: when PreParser finds an error, it doesn't need to ReportUnexpectedToken in PreParseLazyFunction, since it already has reported the error whenever it found it. BUG=v8:5515 Review-Url: https://codereview.chromium.org/2421833002 Cr-Commit-Position: refs/heads/master@{#40315}
-
- 13 Oct, 2016 1 commit
-
-
verwaest authored
BUG= Review-Url: https://codereview.chromium.org/2417833002 Cr-Commit-Position: refs/heads/master@{#40259}
-
- 11 Oct, 2016 2 commits
-
-
adamk authored
The ES spec has been updated to include this legacy syntax in Annex B: https://tc39.github.io/ecma262/#sec-initializers-in-forin-statement-heads R=neis@chromium.org BUG=v8:4942 Review-Url: https://codereview.chromium.org/2407863003 Cr-Commit-Position: refs/heads/master@{#40189}
-
verwaest authored
BUG=v8:5501 Review-Url: https://codereview.chromium.org/2406803003 Cr-Commit-Position: refs/heads/master@{#40160}
-
- 07 Oct, 2016 1 commit
-
-
mstarzinger authored
R=marja@chromium.org Review-Url: https://codereview.chromium.org/2392303004 Cr-Commit-Position: refs/heads/master@{#40070}
-
- 27 Sep, 2016 1 commit
-
-
cbruni authored
Reland of Preparse inner functions (new try) (patchset #1 id:1 of https://codereview.chromium.org/2373443003/ ) Reason for revert: Stability thief found, relanding speculative reverts. Original issue's description: > Revert of Preparse inner functions (new try) (patchset #21 id:420001 of https://codereview.chromium.org/2352593002/ ) > > Reason for revert: > We currently have some stability issues on Canary. Let's reland this after we verified that we "fixed" Canary again. > > Original issue's description: > > Preparse inner functions (new try) > > > > This is an overly pessimistic approach where PreParser only keeps > > track of unresolved variables, but doesn't declare anything. This > > will result in context-allocating variables in the outer function > > unnecessarily, if the variable names clash with variable names > > used by the inner function (even if the variables are not the > > same). However, we have been unable to prove that this approach > > wouldn't be good enough for the practical purposes. > > > > Fixes after the previous try ( https://codereview.chromium.org/2322243002/ ): > > Keep the context-allocation decision stable when compiling fully eagerly. > > > > Tests which exercise this functionality: > > mjsunit/fixed-context-shapes-when-recompiling.js > > > > Design document (chromium): > > > > https://docs.google.com/a/chromium.org/document/d/1rRv5JJZ0JpOZAZN2CSUwZPFJiBAdRnTiSYhazseNHFg/edit?usp=sharing > > > > BUG= > > > > Committed: https://crrev.com/7c73cf32c60484cdf37c84f1d61b4640e87068d7 > > Cr-Commit-Position: refs/heads/master@{#39719} > > TBR=verwaest@chromium.org,adamk@chromium.org,marja@chromium.org > # Skipping CQ checks because original CL landed less than 1 days ago. > NOPRESUBMIT=true > NOTREECHECKS=true > NOTRY=true > BUG= > > Committed: https://crrev.com/1e6296b2a7cfc307fd9e722e619f42965da4a267 > Cr-Commit-Position: refs/heads/master@{#39730} TBR=verwaest@chromium.org,adamk@chromium.org,marja@chromium.org,hablich@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review-Url: https://codereview.chromium.org/2377513006 Cr-Commit-Position: refs/heads/master@{#39755}
-
- 26 Sep, 2016 2 commits
-
-
hablich authored
Revert of Preparse inner functions (new try) (patchset #21 id:420001 of https://codereview.chromium.org/2352593002/ ) Reason for revert: We currently have some stability issues on Canary. Let's reland this after we verified that we "fixed" Canary again. Original issue's description: > Preparse inner functions (new try) > > This is an overly pessimistic approach where PreParser only keeps > track of unresolved variables, but doesn't declare anything. This > will result in context-allocating variables in the outer function > unnecessarily, if the variable names clash with variable names > used by the inner function (even if the variables are not the > same). However, we have been unable to prove that this approach > wouldn't be good enough for the practical purposes. > > Fixes after the previous try ( https://codereview.chromium.org/2322243002/ ): > Keep the context-allocation decision stable when compiling fully eagerly. > > Tests which exercise this functionality: > mjsunit/fixed-context-shapes-when-recompiling.js > > Design document (chromium): > > https://docs.google.com/a/chromium.org/document/d/1rRv5JJZ0JpOZAZN2CSUwZPFJiBAdRnTiSYhazseNHFg/edit?usp=sharing > > BUG= > > Committed: https://crrev.com/7c73cf32c60484cdf37c84f1d61b4640e87068d7 > Cr-Commit-Position: refs/heads/master@{#39719} TBR=verwaest@chromium.org,adamk@chromium.org,marja@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG= Review-Url: https://codereview.chromium.org/2373443003 Cr-Commit-Position: refs/heads/master@{#39730}
-
marja authored
This is an overly pessimistic approach where PreParser only keeps track of unresolved variables, but doesn't declare anything. This will result in context-allocating variables in the outer function unnecessarily, if the variable names clash with variable names used by the inner function (even if the variables are not the same). However, we have been unable to prove that this approach wouldn't be good enough for the practical purposes. Fixes after the previous try ( https://codereview.chromium.org/2322243002/ ): Keep the context-allocation decision stable when compiling fully eagerly. Tests which exercise this functionality: mjsunit/fixed-context-shapes-when-recompiling.js Design document (chromium): https://docs.google.com/a/chromium.org/document/d/1rRv5JJZ0JpOZAZN2CSUwZPFJiBAdRnTiSYhazseNHFg/edit?usp=sharing BUG= Review-Url: https://codereview.chromium.org/2352593002 Cr-Commit-Position: refs/heads/master@{#39719}
-
- 23 Sep, 2016 2 commits
-
-
neis authored
There's no reason (anymore) to have empty imports in special_imports. Remove them from there and rename special_imports to namespace_imports to be more precise. R=adamk@chromium.org BUG=v8:1569 Review-Url: https://codereview.chromium.org/2368613002 Cr-Commit-Position: refs/heads/master@{#39693}
-
marja authored
It looks like it tried to trigger lazy inner function parsing by inserting a comment into an inner function. 1) We don't have lazy inner functions yet. 2) Even if we had, there's no way this heuristic could trigger laziness: we need to do the laziness decision upfront, without looking at the contents / size of the function. 3) Some of the combinations were weird: lazy_outer but non-lazy inner? In the current heuristics, only the total script size affects laziness; in particular, it doesn't matter where the long comment is. R=mstarzinger@chromium.org BUG= Review-Url: https://codereview.chromium.org/2364003002 Cr-Commit-Position: refs/heads/master@{#39673}
-
- 20 Sep, 2016 1 commit
-
-
rmcilroy authored
Avoid internalizing on-the-fly now that scope analysis and natives syntax runtime calls no longer require internalized AST values. This should be more efficient by avoiding extra branches on every AST value creation. BUG=v8:5215, chromium:634953 Review-Url: https://codereview.chromium.org/2328593002 Cr-Commit-Position: refs/heads/master@{#39531}
-
- 19 Sep, 2016 1 commit
-
-
neis authored
We must keep track of the exact order in which modules are requested. To do so, maintain a map from module specifiers to position while parsing (in ModuleDescriptor). Descriptor entries now refer to that position rather than the string. When generating the ModuleInfo, turn this map into an array of specifiers. We don't need the map anymore later on, so we do not reconstruct it when deserializing again. BUG=v8:1569 Review-Url: https://codereview.chromium.org/2353633002 Cr-Commit-Position: refs/heads/master@{#39519}
-
- 16 Sep, 2016 2 commits
-
-
vogelheim authored
- Smaller, more consistent streams API (Advance, Back, pos, Seek) - Remove implementations from the header, in favor of creation functions. Observe: - Performance: - All Utf16CharacterStream methods have an inlinable V8_LIKELY w/ a body of only a few instructions. I expect most calls to end up there. - There used to be performance problems w/ bookmarking, particularly with copying too much data on SetBookmark w/ UTF-8 streaming streams. All those copies are gone. - The old streaming streams implementation used to copy data even for 2-byte input. It no longer does. - The only remaining 'slow' method is the Seek(.) slow case for utf-8 streaming streams. I don't expect this to be called a lot; and even if, I expect it to be offset by the gains in the (vastly more frequent) calls to the other methods or the 'fast path'. - If it still bothers us, there are several ways to speed it up. - API & code cleanliness: - I want to remove the 'old' API in a follow-up CL, which should mostly delete code, or replace it 1:1. - In a 2nd follow-up I want to delete much of the UTF-8 handling in Blink for streaming streams. - The "bookmark" is now always implemented (and mostly very fast), so we should be able to use it for more things. - Testing & correctness: - The unit tests now cover all stream implementations, and are pretty good and triggering all the edge cases. - Vastly more DCHECKs of the invariants. BUG=v8:4947 Review-Url: https://codereview.chromium.org/2314663002 Cr-Commit-Position: refs/heads/master@{#39464}
-
bakkot authored
This is one part of a WIP implementation of the stage-2 proposal to add fields to classes: https://github.com/tc39/proposal-class-public-fields See design doc: https://docs.google.com/document/d/1WRtNm3ZLNJT1WVr8aq4RJuByYgfuAFAhj20LwTW6JVE/ This adds support for parsing fields in classes, including infrastructure. In particular, it adds: * Two booleans on function literal AST nodes * Two compiler hints on SharedFunctionInfos representing said bools * A new type of ClassLiteralProperty, FIELD * Parser support for the syntax * Syntax tests * A flag to enable it. Currently the fields are parsed and then droppped. Subsequent patches will add semantics, mostly by desugaring in the parser and the remainder in the non-crankshaft backends. BUG=v8:5367 Review-Url: https://codereview.chromium.org/2315733003 Cr-Commit-Position: refs/heads/master@{#39459}
-
- 15 Sep, 2016 2 commits
-
-
jochen authored
We don't need the context anymore for parsing, the scope info chain is enough. BUG=v8:5215 R=marja@chromium.org,jgruber@chromium.org,mstarzinger@chromium.org Review-Url: https://codereview.chromium.org/2342443004 Cr-Commit-Position: refs/heads/master@{#39457}
-
jochen authored
To avoid a dependency on the heap during parsing, we only create a scope chain without linking to the associated ScopeInfo objects before parsing. This is enough to avoid special cases during parsing of arrow functions / eval. Looking at the outer scope's variables during parsing was only needed for hosting sloppy block functions inside eval. To be able to do this now, we hoist for the outer-most eval scope after parsing, in DeclarationScope::Analyze. DeclarationScope::Analyze is also where we replace the outer scope chain with the fully deserialized version, so variables can be resolved. Also, this unifies background and foreground thread parsing, as we don't have to worry about ScopeInfos getting accessed before we're back on the main thread. BUG=v8:5215 R=verwaest@chromium.org,marja@chromium.org,adamk@chromium.org Review-Url: https://codereview.chromium.org/2306413002 Cr-Commit-Position: refs/heads/master@{#39452}
-
- 07 Sep, 2016 1 commit
-
-
lpy authored
Lexically declared "arguments" in sloppy mode will throw redeclaration error currently, this patch fixes it by delaying the declaration of arguments until we fully parse parameter list and function body. BUG=v8:4577 LOG=N Committed: https://crrev.com/70a613dd0a5f5d205b46559b55702764464851fa Review-Url: https://codereview.chromium.org/2290753003 Cr-Original-Commit-Position: refs/heads/master@{#39109} Cr-Commit-Position: refs/heads/master@{#39230}
-
- 02 Sep, 2016 1 commit
-
-
machenbach authored
Revert of Allow lexically declared "arguments" in function scope in sloppy mode. (patchset #5 id:100001 of https://codereview.chromium.org/2290753003/ ) Reason for revert: Breaks layout tests: https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/9470 Original issue's description: > Allow lexically declared "arguments" in function scope in sloppy mode. > > Lexically declared "arguments" in sloppy mode will throw redeclaration error > currently, this patch fixes it by delaying the declaration of arguments until we > fully parse parameter list and function body. > > BUG=v8:4577 > LOG=N > > Committed: https://crrev.com/70a613dd0a5f5d205b46559b55702764464851fa > Cr-Commit-Position: refs/heads/master@{#39109} TBR=adamk@chromium.org,mythria@chromium.org,lpy@chromium.org # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4577 Review-Url: https://codereview.chromium.org/2304853002 Cr-Commit-Position: refs/heads/master@{#39115}
-
- 01 Sep, 2016 1 commit
-
-
lpy authored
Lexically declared "arguments" in sloppy mode will throw redeclaration error currently, this patch fixes it by delaying the declaration of arguments until we fully parse parameter list and function body. BUG=v8:4577 LOG=N Review-Url: https://codereview.chromium.org/2290753003 Cr-Commit-Position: refs/heads/master@{#39109}
-
- 31 Aug, 2016 3 commits
-
-
bakkot authored
This patch arranges that property names are parsed in a single pass, reporting the name as well as the type of the property, instead of parsing qualifiers like 'static' or 'get' initially as names and then re-parsing. This change is easier to reason about, very slightly (4%) faster in some cases (although slower in other, less common ones, though this slowdown will be fixed in an upcoming patch), and is a prerequisite for separating the parsing of object and class literal properties, which will become increasingly important as ECMAScript adds more class features. This is a reland of https://codereview.chromium.org/2278153004/, which fixes the issue causing the revert and adds more tests. Review-Url: https://codereview.chromium.org/2300503002 Cr-Commit-Position: refs/heads/master@{#39056}
-
jochen authored
Just always predeclare it R=marja@chromium.org,verwaest@chromium.org BUG=v8:5215 Review-Url: https://codereview.chromium.org/2298743002 Cr-Commit-Position: refs/heads/master@{#39048}
-
jochen authored
R=marja@chromium.org TBR=verwaest@chromium.org BUG= Review-Url: https://codereview.chromium.org/2294193003 Cr-Commit-Position: refs/heads/master@{#39037}
-
- 30 Aug, 2016 1 commit
-
-
jochen authored
Instead of creating them on demand all over the place. I plan to link ScopeInfos together, and having one place where all ScopeInfos are created will make this easier. R=verwaest@chromium.org,adamk@chromium.org TBR=mstarzinger@chromium.org BUG=v8:5215 Review-Url: https://codereview.chromium.org/2281073002 Cr-Commit-Position: refs/heads/master@{#39003}
-
- 26 Aug, 2016 1 commit
-
-
neis authored
R=adamk@chromium.org BUG=v8:1569 Review-Url: https://codereview.chromium.org/2278973002 Cr-Commit-Position: refs/heads/master@{#38924}
-
- 25 Aug, 2016 2 commits
-
-
adamk authored
Previously the calls to ExpressionClassifier::Accumulate() each chose slightly different sets of productions to accumulate, and it turned out that these were in some cases broader than needed and in some cases less broad. The existence of some grab-bag production bitmasks like ExpressionClassifier::ExpressionProductions made this situation more error-prone (for example, that production was missing AsyncArrowFormalParametersProduction). This patch removes all "grab-bags" besides AllProductions. In some of the places where code was using those grab-bags for convenience, it switches them to use negation of AllProductions. In other, specifically those having to do with expressions that are disallowed anywhere in a sub-expression of a parameter list, I've added a new method on ExpressionClassifier to centralize the logic. The aforementioned centralization/addition of AsyncArrowFormalParametersProduction fixes several cases where we were failing to report an error for 'await' in some contexts; I've added those test cases. The patch also narrows all cases to exactly the set or productions necessary, with a comment on each explaining the choice. BUG=v8:4483 Review-Url: https://codereview.chromium.org/2271063002 Cr-Commit-Position: refs/heads/master@{#38918}
-
neis authored
BUG=v8:1569 Review-Url: https://codereview.chromium.org/2273013002 Cr-Commit-Position: refs/heads/master@{#38889}
-
- 23 Aug, 2016 5 commits
-
-
adamk authored
R=littledan@chromium.org BUG=v8:4483 Review-Url: https://codereview.chromium.org/2270223002 Cr-Commit-Position: refs/heads/master@{#38846}
-
adamk authored
In particular, this covers one caller of CheckDestructuringElement that didn't have tests before. R=caitp@igalia.com Review-Url: https://codereview.chromium.org/2267153002 Cr-Commit-Position: refs/heads/master@{#38841}
-
verwaest authored
This flag was only set on receiver scopes (declaration scopes) already. This makes it statically obvious. BUG=v8:5209 Review-Url: https://codereview.chromium.org/2268333002 Cr-Commit-Position: refs/heads/master@{#38828}
-
vogelheim authored
- The static method CopyChars was actually used and has been extracted. - It was used in tests, where it's been replaced w/ ExternalOneByteString... - Only one test actually relied on Utf8 handling (as opposed to ASCII only), and that was the test testing Utf8ToUtf16CharacterStream itself. +66 -277 LOC :) BUG=v8:4947 Review-Url: https://codereview.chromium.org/2256273002 Cr-Commit-Position: refs/heads/master@{#38824}
-
verwaest authored
This avoids checking for outer_scope == nullptr in Scope::Scope BUG=v8:5209 Review-Url: https://codereview.chromium.org/2266973002 Cr-Commit-Position: refs/heads/master@{#38812}
-
- 22 Aug, 2016 3 commits
-
-
adamk authored
The following code was previously accepted: async function f() { let g = (await) => {}; } But per the spec, using 'await' is disallowed in arrow parameters by an early error rule (just as 'yield' is disallowed in arrow params inside generators). There was special logic in ParseUnaryExpression which seems to have been there only to allow that case. Having removed it, we get a SyntaxError in the right cases anyway when ParseUnaryExpression chokes on whatever illegal token follows 'await' in the cases this code previously handled. Also removes the unnecessary AsyncBindingPatternProduction enum value. R=caitp@igalia.com, littledan@chromium.org BUG=v8:4483 Review-Url: https://codereview.chromium.org/2258313002 Cr-Commit-Position: refs/heads/master@{#38802}
-
adamk authored
Also lots of cleanup around the checking for 'await' as an identifier throughout the parser and preparser. R=caitp@igalia.com, littledan@chromium.org BUG=v8:4483,v8:5298 Review-Url: https://codereview.chromium.org/2267493002 Cr-Commit-Position: refs/heads/master@{#38798}
-
marja authored
This makes us able to get rid of dependencies to parser.h from places which only need the ParseInfo, and also gets rid of the curious Parser <-> Compiler circular dependency. Also IWYUd where necessary. BUG= Review-Url: https://codereview.chromium.org/2268513002 Cr-Commit-Position: refs/heads/master@{#38777}
-
- 20 Aug, 2016 1 commit
-
-
gsathya authored
This patch subsumes CoverInitializedNameProduction to create an ObjectLiteralProduction which is now used to report the duplicate proto error as well. This patch also changes ObjectLiteralChecker::CheckProperty to record an ObjectLiteralProduction error instead of bailing out immediately. Once we realize that we're in a pattern, we rewind the error, otherwise we report the error. BUG=v8:5121 Review-Url: https://codereview.chromium.org/2255353002 Cr-Commit-Position: refs/heads/master@{#38764}
-
- 19 Aug, 2016 1 commit
-
-
lpy authored
Currently when redefining eval or arguments in non-simple parameter list and destructuring binding, V8 doesn't throw any error, this patch fixes it. BUG=v8:5201 LOG=N Review-Url: https://codereview.chromium.org/2185223002 Cr-Commit-Position: refs/heads/master@{#38762}
-
- 18 Aug, 2016 1 commit
-
-
verwaest authored
This moves the module_descriptor_ field to that subclass, as well as other module-only methods. BUG=v8:5209 Review-Url: https://codereview.chromium.org/2252223002 Cr-Commit-Position: refs/heads/master@{#38703}
-
- 17 Aug, 2016 1 commit
-
-
vogelheim authored
1, restrict use of LiteralBuffers to the tokens that actually need it. - E.g., previously the Token::FUNCTION would have a literal buffer containing "function", which was never actually used. - This eliminates copies of the string data for every call to PeekAhead or SetBookmark. 2, document & enforce the "secret" Scanner API contract w/ DCHECK - Document & check the correspondence of token value and literal buffer. - Document & check preconditions for calling PeekAhead, ScanRegExp*, ScanTemplate*. BUG=v8:4947 Review-Url: https://codereview.chromium.org/2240513003 Cr-Commit-Position: refs/heads/master@{#38677}
-