1. 07 Feb, 2017 1 commit
  2. 06 Feb, 2017 2 commits
  3. 03 Feb, 2017 1 commit
  4. 01 Feb, 2017 1 commit
    • adamk's avatar
      [parser] Remove hoist_scope from DeclarationDescriptor · 59b8496c
      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}
      59b8496c
  5. 31 Jan, 2017 2 commits
  6. 30 Jan, 2017 1 commit
    • mvstanton's avatar
      [TypeFeedbackVector] Combine the literals array and the feedback vector. · 93f05b64
      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}
      93f05b64
  7. 25 Jan, 2017 1 commit
  8. 23 Jan, 2017 1 commit
  9. 20 Jan, 2017 1 commit
    • marja's avatar
      Parsing: Create the same scopes for non-simple params in PreParser & Parser. · 35340917
      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}
      35340917
  10. 19 Jan, 2017 1 commit
  11. 18 Jan, 2017 4 commits
  12. 17 Jan, 2017 2 commits
  13. 16 Jan, 2017 3 commits
  14. 12 Jan, 2017 1 commit
  15. 10 Jan, 2017 1 commit
  16. 09 Jan, 2017 2 commits
  17. 05 Jan, 2017 1 commit
    • gsathya's avatar
      [ESnext] Implement Object spread · a40b7172
      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}
      a40b7172
  18. 03 Jan, 2017 1 commit
  19. 29 Dec, 2016 1 commit
  20. 16 Dec, 2016 2 commits
    • littledan's avatar
      Remove class fields desugaring · 61833f5b
      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}
      61833f5b
    • marja's avatar
      PreParsing inner functions: Make inner functions less lazy. · f37d7264
      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}
      f37d7264
  21. 15 Dec, 2016 1 commit
  22. 14 Dec, 2016 2 commits
  23. 12 Dec, 2016 2 commits
    • lpy's avatar
      [Tracing] Show background parsing runtime statistics in tracing · dca99f4f
      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}
      dca99f4f
    • neis's avatar
      [parsing] Fix context allocation for async functions. · 80567914
      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}
      80567914
  24. 08 Dec, 2016 2 commits
  25. 07 Dec, 2016 3 commits
    • jwolfe's avatar
      A decimal integer literal with a leading 0 is now an error in strict mode. · 93b87c89
      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}
      93b87c89
    • caitp's avatar
      [ignition] desugar GetIterator() via bytecode rather than via AST · b5f146a0
      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}
      b5f146a0
    • henrique.ferreiro's avatar
      Install the 'name' property in classes at runtime · afd5ff55
      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}
      afd5ff55