- 26 Aug, 2016 1 commit
-
-
nikolaos authored
This patch: 1. Removes the unecessary inheritance of ParserBaseTraits<Impl> in ParserBase<Impl>. 2. Flattens ParserBaseTraits<Impl> and renames it to ParserTypes<Impl>. The Traits parameter/member is renamed to Types. 3. Removes unecessary v8::internal:: qualifications from parser types. R=adamk@chromium.org, marja@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2279773002 Cr-Commit-Position: refs/heads/master@{#38927}
-
- 25 Aug, 2016 2 commits
-
-
nikolaos authored
This patch moves the following methods from the traits objects to the (pre)parser implementation objects: - AddFormalParameter - AddParameterInitializationBlock - DeclareFormalParameter - ExpressionListToExpression - GetNonPatternList - GetReportedErrorList - IsTaggedTemplate - MaterializeUnspreadArgumentsLiterals - NoTemplateTag - ParseArrowFunctionFormalParameterList - ReindexLiterals - SetFunctionNameFromIdentifierRef - SetFunctionNameFromPropertyName It moves the Void method from the preparser traits object to the preparser implementation object. It also removes the traits zone method and replaces it with that of ParserBase, which it turns to public. After all this, the traits objects contain just typedefs and the delegate methods are no more necessary. R=adamk@chromium.org, marja@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2277843002 Cr-Commit-Position: refs/heads/master@{#38892}
-
nikolaos authored
This patch moves the following methods from the traits objects to the (pre)parser implementation objects: - ExpressionFromIdentifier - ExpressionFromLiteral - ExpressionFromString - FunctionSentExpression - GetNextSymbol - GetNumberAsSymbol - GetSymbol - NewExpressionList - NewPropertyList - NewStatementList - NewSuperCallReference - NewSuperPropertyReference - NewTargetExpression - ThisExpression Also, the method GetIterator is specific only to the parser and is removed from the preparser's implementation. R=adamk@chromium.org, marja@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2274113002 Cr-Commit-Position: refs/heads/master@{#38890}
-
- 24 Aug, 2016 2 commits
-
-
nikolaos authored
This patch moves the following methods from the traits objects to the (pre)parser implementation objects: - BuildIteratorResult - BuildUnaryExpression - EmptyExpression - EmptyFunctionLiteral - EmptyIdentifier - EmptyIdentifierString - EmptyLiteral - EmptyObjectLiteralProperty - GetLiteralTheHole - NewThrowReferenceError - NewThrowSyntaxError - NewThrowTypeError - NullExpressionList - ReportMessageAt R=adamk@chromium.org, marja@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2268413002 Cr-Commit-Position: refs/heads/master@{#38862}
-
nikolaos authored
This patch moves the following methods from the traits objects to the (pre)parser implementation objects: - AsIdentifier - CheckAssigningFunctionLiteralToProperty - GetPropertyValue - InferFunctionName - IsArguments - IsArrayIndex - IsBoilerplateProperty - IsConstructor - IsDirectEvalCall - IsEval - IsEvalOrArguments - IsFutureStrictReserved - IsIdentifier - IsPrototype - IsThisProperty - IsUndefined - MarkExpressionAsAssigned - PushLiteralName - PushPropertyName - ShortcutNumericLiteralBinaryExpression R=adamk@chromium.org, marja@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2273693002 Cr-Commit-Position: refs/heads/master@{#38861}
-
- 23 Aug, 2016 3 commits
-
-
nikolaos authored
This patch removes 26 elements of the (pre)parser traits objects. Some methods are removed completely and called directly from the implementation objects: - ParseAsyncFunctionExpression - ParseClassLiteral - ParseDoExpression - ParseEagerFunctionBody - ParseFunctionLiteral - ParseV8Intrinsic Some methods have to be moved to at least one implementation object: - AddTemplateExpression - AddTemplateSpan - CheckConflictingVarDeclarations - CloseTemplateLiteral - MarkCollectedTailCallExpressions - MarkTailPosition - OpenTemplateLiteral - ParseAsyncArrowSingleExpressionBody - PrepareSpreadArguments - QueueDestructuringAssignmentForRewriting - QueueNonPatternForRewriting - RewriteAssignExponentiation - RewriteAwaitExpression - RewriteDestructuringAssignments - RewriteExponentiation - RewriteNonPattern - RewriteYieldStar - SkipLazyFunctionBody - SpreadCall - SpreadCallNew Also, the inner class/struct TemplateLiteralState is moved to the implementation objects. R=adamk@chromium.org, marja@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2267783002 Cr-Commit-Position: refs/heads/master@{#38837}
-
nikolaos authored
This patch applies an adaptation of the Curiously Recurring Template Pattern to the parser objects. The result is roughly: // Common denominator, needed to avoid cyclic dependency. // Instances of this template will end up with very minimal // definitions, ideally containing just typedefs. template <typename Impl> class ParserBaseTraits; // The parser base object, which should just implement pure // parser behavior. The Impl parameter is the actual derived // class (according to CRTP), which implements impure parser // behavior. template <typename Impl> class ParserBase : public ParserBaseTraits<Impl> { ... }; // And then, for each parser variant: class Parser; template <> class ParserBaseTraits<Parser> { ... }; class Parser : public ParserBase<Parser> { ... }; Using the CRTP, we will ultimately achieve two goals: (1) clean up the traits objects, but most importantly (2) clearly separate pure/impure parser implementation and facilitate experimentation with different parser variants. R=adamk@chromium.org, marja@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2267663002 Cr-Commit-Position: refs/heads/master@{#38819}
-
nikolaos authored
This patch const-qualifies some methods of ParserBase. It also unqualifies some methods of Parser and Preparser. The reason for the latter is that, in principle, the methods of AstNodeFactory should be allowed to change the factory's state, therefore should not be const and should not be used from const-qualified parser/pre-parser methods. R=adamk@chromium.org, marja@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2263973003 Cr-Commit-Position: refs/heads/master@{#38813}
-
- 20 Aug, 2016 2 commits
-
-
nikolaos authored
parser and the preparser, so that they contain the same set of methods, with the same signatures. It mainly flags some traits methods as const. It also contains a small cosmetic change in the definition of CHECK_OK. R=adamk@chromium.org, marja@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2258123002 Cr-Commit-Position: refs/heads/master@{#38767}
-
nikolaos authored
This patch simply reorders the elements of classes ParserTraits and PreParserTraits (mainly method headers), so that in both classes the elements are defined in the same order. This is useful for easily verifying the consistency between these two classes. R=adamk@chromium.org, marja@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2264483003 Cr-Commit-Position: refs/heads/master@{#38766}
-
- 19 Aug, 2016 1 commit
-
-
nikolaos authored
This patch refactors the traits objects, used by the parser and the preparser, so that they contain the same set of methods, with the same signatures. R=adamk@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2179423002 Cr-Commit-Position: refs/heads/master@{#38736}
-
- 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}
-
- 16 Aug, 2016 1 commit
-
-
adamk authored
See https://google.github.io/styleguide/cppguide.html#Enumerator_Names Also rename "FunctionBody" to "FunctionBodyType" and move it inside Parser, which is the only place it's referenced. R=caitp@igalia.com, littledan@chromium.org Review-Url: https://codereview.chromium.org/2245133003 Cr-Commit-Position: refs/heads/master@{#38671}
-
- 15 Aug, 2016 1 commit
-
-
rmcilroy authored
Removes Variable::is_possibly_eval() and instead stores whether a call is possibly eval in the Call node's bitfield. Also removes HandleDereferenceMode since it's no longer used. BUG=v8:5203 Review-Url: https://codereview.chromium.org/2242583003 Cr-Commit-Position: refs/heads/master@{#38633}
-
- 12 Aug, 2016 1 commit
-
-
caitp authored
No longer include the "async" keyword, or an async arrow function's single identifier parameter as part of its inferred name. BUG=v8:5281, v8:4483 R=adamk@chromium.org, littledan@chromium.org, marja@chromium.org Review-Url: https://codereview.chromium.org/2235423003 Cr-Commit-Position: refs/heads/master@{#38627}
-
- 11 Aug, 2016 1 commit
-
-
verwaest authored
BUG=v8:5209 Review-Url: https://codereview.chromium.org/2233473002 Cr-Commit-Position: refs/heads/master@{#38575}
-
- 08 Aug, 2016 1 commit
-
-
verwaest authored
To be able to lazily allocate BlockScopes, we need to reduce access to scope(). The explicit accesses removed here just need access to the current scope to allocate unresolved variable proxies. Those in the future should go over ScopeState rather than directly to Scope. BUG=v8:5209 Review-Url: https://codereview.chromium.org/2224843003 Cr-Commit-Position: refs/heads/master@{#38456}
-
- 05 Aug, 2016 3 commits
-
-
verwaest authored
This reduces peak zone memory usage by ~10% on codeload and ~5% on mandreel. BUG=v8:5209 Committed: https://crrev.com/2648162dcfff622f8587cea2faa8c3af56456968 Review-Url: https://codereview.chromium.org/2209573002 Cr-Original-Commit-Position: refs/heads/master@{#38367} Cr-Commit-Position: refs/heads/master@{#38390}
-
machenbach authored
Revert of Separate Scope into DeclarationScope and Scope (patchset #13 id:240001 of https://codereview.chromium.org/2209573002/ ) Reason for revert: [Sheriff] Make leak checker unhappy: https://build.chromium.org/p/client.v8/builders/V8%20Linux64%20-%20debug/builds/10959 Original issue's description: > Separate Scope into DeclarationScope and Scope > > This reduces peak zone memory usage by ~10% on codeload and ~5% on mandreel. > > BUG=v8:5209 > > Committed: https://crrev.com/2648162dcfff622f8587cea2faa8c3af56456968 > Cr-Commit-Position: refs/heads/master@{#38367} TBR=marja@chromium.org,mstarzinger@chromium.org,ahaas@chromium.org,adamk@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:5209 Review-Url: https://codereview.chromium.org/2212383003 Cr-Commit-Position: refs/heads/master@{#38380}
-
verwaest authored
This reduces peak zone memory usage by ~10% on codeload and ~5% on mandreel. BUG=v8:5209 Review-Url: https://codereview.chromium.org/2209573002 Cr-Commit-Position: refs/heads/master@{#38367}
-
- 22 Jul, 2016 1 commit
-
-
adamk authored
This replaces the AstVisitor approach for scope rewriting with a Scope-only solution, using a new Scope::Snapshot object that keeps track of inner scopes, unresolved variables, and temps. The only use of the AstVisitor is now for parameter varblock scopes introduced due to sloppy eval in parameters, which greatly simplifies the rewriter as it no longer needs to handle temps. A future CL may be able to eliminate it altogether by taking a snapshot per function argument. Based on verwaest's https://codereview.chromium.org/2166023002/. BUG=v8:5226 Review-Url: https://codereview.chromium.org/2171703004 Cr-Commit-Position: refs/heads/master@{#37989}
-
- 21 Jul, 2016 1 commit
-
-
marja authored
It's anyway just the "same" AstNodeFactory (i.e., it's passed the same AstValueFactory), so no need to have several of them for each FunctionState. R=verwaest@chromium.org BUG= Review-Url: https://codereview.chromium.org/2169823002 Cr-Commit-Position: refs/heads/master@{#37938}
-
- 20 Jul, 2016 3 commits
-
-
verwaest authored
NewScope automatically uses scope(), whereas NewScopeWithParent can pass along any local Scope* as outer scope. The number of calls to NewScopeWithParent should be reduced over time. BUG=v8:5209 Review-Url: https://codereview.chromium.org/2164943002 Cr-Commit-Position: refs/heads/master@{#37912}
-
verwaest authored
It's the only Scope type that has outer scope nullptr; and it always has outer scope nullptr. BUG=v8:5209 Review-Url: https://codereview.chromium.org/2158913005 Cr-Commit-Position: refs/heads/master@{#37907}
-
nikolaos authored
In a few places in the parser base, we were forced to initialize variables of type ExpressionT even if it's not necessary, as they are assigned to later on before their use. This was required because, for the case of the preparser, ExpressionT is PreParserExpression which had no default constructor. This patch adds a default constructor, equivalent to EmptyExpression for this class, and gets rid of the unnecessary initializations. R=adamk@chromium.org, littledan@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2162763003 Cr-Commit-Position: refs/heads/master@{#37884}
-
- 19 Jul, 2016 2 commits
-
-
verwaest authored
This will allow us to move more state from Scope into ScopeState and lazily allocate full Scopes only when needed. BUG=v8:5209 Review-Url: https://codereview.chromium.org/2160593002 Cr-Commit-Position: refs/heads/master@{#37858}
-
nikolaos authored
R=adamk@chromium.org, littledan@chromium.org BUG= LOG=N Review-Url: https://codereview.chromium.org/2154253002 Cr-Commit-Position: refs/heads/master@{#37851}
-
- 15 Jul, 2016 1 commit
-
-
verwaest authored
This replaces the vtable on AstNode with a NodeType tag. The visitors replace double dispatch with a single switch over the NodeType. For now, visitors with subclasses still have virtual methods themselves. We should probably specialize them later as well. The uint8_t NodeType allows us to better pack memory, saving 8-16 bytes on many AST nodes (with additional packing that I'll do in a follow-up CL) BUG= Review-Url: https://codereview.chromium.org/2142233003 Cr-Commit-Position: refs/heads/master@{#37788}
-
- 11 Jul, 2016 1 commit
-
-
yangguo authored
R=bmeurer@chromium.org, littledan@chromium.org BUG=v8:5167 Review-Url: https://codereview.chromium.org/2124813002 Cr-Commit-Position: refs/heads/master@{#37623}
-
- 30 Jun, 2016 1 commit
-
-
yangguo authored
R=mstarzinger@chromium.org BUG=v8:5117 Review-Url: https://codereview.chromium.org/2109773004 Cr-Commit-Position: refs/heads/master@{#37426}
-
- 10 Jun, 2016 1 commit
-
-
nikolaos authored
This patch attempts to reduce the (stack) memory footprint of expression classifiers. Instead of keeping space in each classifier for all possible error messages that will (potentially) be reported, if an expression turns out to be a pattern or a non-pattern, such error messages are placed in a list shared by the FunctionState and each classifier keeps a couple of indices in this list. This requires that classifiers are used strictly in a stack-based fashion, which is also in line with my previous patch for revisiting non-pattern rewriting. R=adamk@chromium.org BUG=chromium:528697 Review-Url: https://codereview.chromium.org/1708193003 Cr-Commit-Position: refs/heads/master@{#36897}
-
- 09 Jun, 2016 1 commit
-
-
lpy authored
We ported hashmap.h into libsampler as a workaround before, so the main focus of this patch is to reduce code duplication. This patch moves the hashmap into src/base as well as creates DefaultAllocationPolicy using malloc and free. BUG=v8:5050 LOG=n Review-Url: https://codereview.chromium.org/2010243003 Cr-Commit-Position: refs/heads/master@{#36873}
-
- 17 May, 2016 2 commits
-
-
bmeurer authored
This adds back the instanceof operator support in the backends and introduces a @@hasInstance protector cell on the isolate that guards the fast path for the InstanceOfStub. This way we recover the ~10% regression on Octane EarleyBoyer in Crankshaft and greatly improve TurboFan and Ignition performance of instanceof. R=ishell@chromium.org TBR=hpayer@chromium.org,rossberg@chromium.org BUG=chromium:597249, v8:4447 LOG=n Review-Url: https://codereview.chromium.org/1980483003 Cr-Commit-Position: refs/heads/master@{#36275}
-
caitpotter88 authored
BUG=v8:4483 LOG=N R=littledan@chromium.org, adamk@chromium.org Review-Url: https://codereview.chromium.org/1895603002 Cr-Commit-Position: refs/heads/master@{#36263}
-
- 16 May, 2016 2 commits
-
-
jwolfe authored
Re-landing https://codereview.chromium.org/1948403002/ New changes: move variable initialization to make compiler happy BUG=v8:4973 LOG=y Review-Url: https://codereview.chromium.org/1969203004 Cr-Commit-Position: refs/heads/master@{#36262}
-
caitpotter88 authored
BUG=v8:4483 LOG=Y R=littledan@chromium.org, adamk@chromium.org Review-Url: https://codereview.chromium.org/1841543003 Cr-Commit-Position: refs/heads/master@{#36261}
-
- 13 May, 2016 1 commit
-
-
machenbach authored
Revert of add UseCounters for NonOctalDecimalIntegerLiteral in strict mode (patchset #6 id:100001 of https://codereview.chromium.org/1948403002/ ) Reason for revert: [Sheriff] Breaks https://build.chromium.org/p/client.v8.ports/builders/V8%20Arm%20-%20debug%20builder/builds/602 Original issue's description: > In parallel to the strict octal check that would reject `012` in strict mode, this patch collects UseCounters for `089` in strict mode. The spec says this should be an error, but this patch does not report it as such. > > BUG=v8:4973 > LOG=y > > Committed: https://crrev.com/d0b6686c14339bd5d0aeaf610705c7ed85393e1f > Cr-Commit-Position: refs/heads/master@{#36221} TBR=littledan@chromium.org,caitpotter88@gmail.com,jwolfe@igalia.com # Skipping CQ checks because original CL landed less than 1 days ago. NOPRESUBMIT=true NOTREECHECKS=true NOTRY=true BUG=v8:4973 Review-Url: https://codereview.chromium.org/1970333004 Cr-Commit-Position: refs/heads/master@{#36224}
-
- 12 May, 2016 1 commit
-
-
jwolfe authored
In parallel to the strict octal check that would reject `012` in strict mode, this patch collects UseCounters for `089` in strict mode. The spec says this should be an error, but this patch does not report it as such. BUG=v8:4973 LOG=y Review-Url: https://codereview.chromium.org/1948403002 Cr-Commit-Position: refs/heads/master@{#36221}
-
- 10 May, 2016 1 commit
-
-
ishell authored
BUG=v8:4999, v8:4915 LOG=N Review-Url: https://codereview.chromium.org/1964603002 Cr-Commit-Position: refs/heads/master@{#36126}
-
- 04 May, 2016 1 commit
-
-
ishell authored
Unlike previous implementation where the 'continue' keyword was a feature of a return statement the keyword is now recognized as a part of expression. Error reporting was significantly improved. --harmony-explicit-tailcalls option is now orthogonal to --harmony-tailcalls so we can test both modes at the same time. This CL also adds %GetExceptionDetails(exception) that fetches hidden |start_pos| and |end_pos| values from the exception object. BUG=v8:4915 LOG=N Review-Url: https://codereview.chromium.org/1928203002 Cr-Commit-Position: refs/heads/master@{#36024}
-