1. 13 Apr, 2018 1 commit
  2. 16 Mar, 2018 1 commit
  3. 14 Mar, 2018 1 commit
    • Caitlin Potter's avatar
      Reland "[esnext] re-implement template strings" · b8229612
      Caitlin Potter authored
      - Add a new bytecode for the ToString operation, replacing the old
      intrinsic call (currently does not collect type feedback).
      - Add a new AST node to represent TemplateLiterals, and avoid
      generating unnecessary ToString operations in some simple cases.
      - Use a single feedback slot for each string addition, because the
      type feedback should always be the same for each addition
      
      This seems to produce a very slight improvement on JSTests benchmarks
      and bench-ruben.js from v8:7415, and it's possible that type feedback
      for the ToString bytecode could provide more opportunities to eliminate
      the runtime call in TurboFan.
      
      Doesn't touch tagged templates
      
      [esnext] fix OOB read in ASTPrinter::VisistTemplateLiteral
      
      Fixes an error where TemplateLiteral printing in --print-ast
      would try to read an element beyond the length of a vector.
      
      BUG=v8:7415, chromium:820596
      R=adamk@chromium.org, gsathya@chromum.org, rmcilroy@chromium.org, ishell@chromium.org, bmeurer@chromium.org
      
      Change-Id: Ie56894f73a6445550a5f95f42160c4e29ab1da42
      Reviewed-on: https://chromium-review.googlesource.com/958408Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Caitlin Potter <caitp@igalia.com>
      Cr-Commit-Position: refs/heads/master@{#51933}
      b8229612
  4. 10 Mar, 2018 1 commit
    • Michael Achenbach's avatar
      Revert "[esnext] re-implement template strings" · b8128279
      Michael Achenbach authored
      This reverts commit 8ae19e08.
      
      Reason for revert:
      Speculative revert for layout test:
      https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/22215
      
      See:
      https://github.com/v8/v8/wiki/Blink-layout-tests
      
      Original change's description:
      > [esnext] re-implement template strings
      > 
      > - Add a new bytecode for the ToString operation, replacing the old
      > intrinsic call (currently does not collect type feedback).
      > - Add a new AST node to represent TemplateLiterals, and avoid
      > generating unnecessary ToString operations in some simple cases.
      > - Use a single feedback slot for each string addition, because the
      > type feedback should always be the same for each addition
      > 
      > This seems to produce a very slight improvement on JSTests benchmarks
      > and bench-ruben.js from v8:7415, and it's possible that type feedback
      > for the ToString bytecode could provide more opportunities to eliminate
      > the runtime call in TurboFan.
      > 
      > Doesn't touch tagged templates
      > 
      > BUG=v8:7415
      > R=​rmcilroy@chromium.org, ishell@chromium.org, bmeurer@chromium.org
      > 
      > Change-Id: If5a8c68558431f058db894d65776324abf54218e
      > Reviewed-on: https://chromium-review.googlesource.com/945408
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Commit-Queue: Caitlin Potter <caitp@igalia.com>
      > Cr-Commit-Position: refs/heads/master@{#51853}
      
      TBR=rmcilroy@chromium.org,caitp@igalia.com,ishell@chromium.org,bmeurer@chromium.org
      
      Change-Id: Id0529b065493ffc20c8f2b1abacc4c1484c3c046
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7415
      Reviewed-on: https://chromium-review.googlesource.com/958163Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51862}
      b8128279
  5. 09 Mar, 2018 1 commit
    • Caitlin Potter's avatar
      [esnext] re-implement template strings · 8ae19e08
      Caitlin Potter authored
      - Add a new bytecode for the ToString operation, replacing the old
      intrinsic call (currently does not collect type feedback).
      - Add a new AST node to represent TemplateLiterals, and avoid
      generating unnecessary ToString operations in some simple cases.
      - Use a single feedback slot for each string addition, because the
      type feedback should always be the same for each addition
      
      This seems to produce a very slight improvement on JSTests benchmarks
      and bench-ruben.js from v8:7415, and it's possible that type feedback
      for the ToString bytecode could provide more opportunities to eliminate
      the runtime call in TurboFan.
      
      Doesn't touch tagged templates
      
      BUG=v8:7415
      R=rmcilroy@chromium.org, ishell@chromium.org, bmeurer@chromium.org
      
      Change-Id: If5a8c68558431f058db894d65776324abf54218e
      Reviewed-on: https://chromium-review.googlesource.com/945408Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Commit-Queue: Caitlin Potter <caitp@igalia.com>
      Cr-Commit-Position: refs/heads/master@{#51853}
      8ae19e08
  6. 06 Mar, 2018 1 commit
  7. 02 Mar, 2018 3 commits
    • Georg Neis's avatar
      Reland "[parsing] inline ArrayLiteral creation for spread calls" · 82345e9f
      Georg Neis authored
      This reverts commit f48e7349.
      
      Reason for revert: innocent!!
      
      Original change's description:
      > Revert "[parsing] inline ArrayLiteral creation for spread calls"
      > 
      > This reverts commit 93fc3841.
      > 
      > Reason for revert: may break node.js integration
      > 
      > Original change's description:
      > > [parsing] inline ArrayLiteral creation for spread calls
      > > 
      > > Instead of using runtime calls to generate the Array Literal passed to
      > > %reflect_call / %reflect_construct, we create an ArrayLiteral from the
      > > list of arguments, and perform spreads using the interpreter mechanism for
      > > spreading in ArrayLiterals (thus, the spreading becomes inline). This
      > > array literal is still passed to %reflect_call / %reflect_construct as
      > > before.
      > > 
      > > This cuts the runtime for bench-spread-call.js -> testSpread roughly in
      > > half, and will likely improve further once
      > > https://chromium-review.googlesource.com/c/v8/v8/+/915364 has landed.
      > > 
      > > BUG=v8:7446
      > > R=​neis@chromium.org, adamk@chromium.org
      > > 
      > > Change-Id: I74a6acd3a60aad422e4ac575275c7b567659d8ad
      > > Reviewed-on: https://chromium-review.googlesource.com/939587
      > > Commit-Queue: Georg Neis <neis@chromium.org>
      > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#51678}
      > 
      > TBR=adamk@chromium.org,neis@chromium.org,caitp@igalia.com,bmeurer@chromium.org
      > 
      > Change-Id: I4730077591bce0e5e7b2ce7d59678e8b7135cc08
      > No-Presubmit: true
      > No-Tree-Checks: true
      > No-Try: true
      > Bug: v8:7446
      > Reviewed-on: https://chromium-review.googlesource.com/945769
      > Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
      > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#51682}
      
      TBR=adamk@chromium.org,neis@chromium.org,sigurds@chromium.org,caitp@igalia.com,bmeurer@chromium.org
      
      Change-Id: I977513bea06a4f3fba03fa4a89270298475422e2
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7446
      Reviewed-on: https://chromium-review.googlesource.com/945808Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Georg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51686}
      82345e9f
    • Sigurd Schneider's avatar
      Revert "[parsing] inline ArrayLiteral creation for spread calls" · f48e7349
      Sigurd Schneider authored
      This reverts commit 93fc3841.
      
      Reason for revert: may break node.js integration
      
      Original change's description:
      > [parsing] inline ArrayLiteral creation for spread calls
      > 
      > Instead of using runtime calls to generate the Array Literal passed to
      > %reflect_call / %reflect_construct, we create an ArrayLiteral from the
      > list of arguments, and perform spreads using the interpreter mechanism for
      > spreading in ArrayLiterals (thus, the spreading becomes inline). This
      > array literal is still passed to %reflect_call / %reflect_construct as
      > before.
      > 
      > This cuts the runtime for bench-spread-call.js -> testSpread roughly in
      > half, and will likely improve further once
      > https://chromium-review.googlesource.com/c/v8/v8/+/915364 has landed.
      > 
      > BUG=v8:7446
      > R=​neis@chromium.org, adamk@chromium.org
      > 
      > Change-Id: I74a6acd3a60aad422e4ac575275c7b567659d8ad
      > Reviewed-on: https://chromium-review.googlesource.com/939587
      > Commit-Queue: Georg Neis <neis@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#51678}
      
      TBR=adamk@chromium.org,neis@chromium.org,caitp@igalia.com,bmeurer@chromium.org
      
      Change-Id: I4730077591bce0e5e7b2ce7d59678e8b7135cc08
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7446
      Reviewed-on: https://chromium-review.googlesource.com/945769Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51682}
      f48e7349
    • Caitlin Potter's avatar
      [parsing] inline ArrayLiteral creation for spread calls · 93fc3841
      Caitlin Potter authored
      Instead of using runtime calls to generate the Array Literal passed to
      %reflect_call / %reflect_construct, we create an ArrayLiteral from the
      list of arguments, and perform spreads using the interpreter mechanism for
      spreading in ArrayLiterals (thus, the spreading becomes inline). This
      array literal is still passed to %reflect_call / %reflect_construct as
      before.
      
      This cuts the runtime for bench-spread-call.js -> testSpread roughly in
      half, and will likely improve further once
      https://chromium-review.googlesource.com/c/v8/v8/+/915364 has landed.
      
      BUG=v8:7446
      R=neis@chromium.org, adamk@chromium.org
      
      Change-Id: I74a6acd3a60aad422e4ac575275c7b567659d8ad
      Reviewed-on: https://chromium-review.googlesource.com/939587
      Commit-Queue: Georg Neis <neis@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51678}
      93fc3841
  8. 01 Mar, 2018 3 commits
  9. 26 Feb, 2018 1 commit
  10. 21 Feb, 2018 2 commits
  11. 20 Feb, 2018 1 commit
  12. 19 Feb, 2018 1 commit
  13. 16 Feb, 2018 1 commit
  14. 13 Feb, 2018 1 commit
    • Benedikt Meurer's avatar
      [builtins] Refactor the promise resolution and rejection logic. · c0412961
      Benedikt Meurer authored
      This introduces dedicated builtins
      
        - FulfillPromise,
        - RejectPromise, and
        - ResolvePromise,
      
      which perform the corresponding operations from the language
      specification, and removes the redundant entry points and the
      excessive inlining of these operations into other builtins. We
      also add the same logic on the C++ side, so that we don't need
      to go into JavaScript land when resolving/rejecting from the
      API.
      
      The C++ side has a complete implementation, including full support
      for the debugger and the current PromiseHook machinery. This is to
      avoid constantly crossing the boundary for those cases, and to also
      simplify the CSA side (and soon the TurboFan side), where we only
      do the fast-path and bail out to the runtime for the general handling.
      
      On top of this we introduce %_RejectPromise and %_ResolvePromise,
      which are entry points used by the bytecode and parser desugarings
      for async functions, and also used by the V8 Extras API. Thanks to
      this we can uniformly optimize these in TurboFan, where we have
      corresponding operators JSRejectPromise and JSResolvePromise, which
      currently just call into the builtins, but middle-term can be further
      optimized, i.e. to skip the "then" lookup for JSResolvePromise when
      we know something about the resolution.
      
      In TurboFan we can also already inline the default PromiseCapability
      [[Reject]] and [[Resolve]] functions, although this is not as effective
      as it can be right now, until we have inlining support for the Promise
      constructor (being worked on by petermarshall@ right now) and/or SFI
      based CALL_IC feedback.
      
      Overall this change is meant as a refactoring without significant
      performance impact anywhere; it seems to improve performance of
      simple async functions a bit, but otherwise is neutral.
      
      Bug: v8:7253
      Change-Id: Id0b979f9b2843560e38cd8df4b02627dad4b6d8c
      Reviewed-on: https://chromium-review.googlesource.com/911632Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51260}
      c0412961
  15. 12 Feb, 2018 1 commit
    • Caitlin Potter's avatar
      [esnext] implement spec change to TaggedTemplate callsite caching · d3ca0d00
      Caitlin Potter authored
      Implements the change outlined in https://github.com/tc39/ecma262/pull/890,
      which has been ratified and pulled into the specification. In particular,
      template callsite objects are no longer kept in a global, eternal Map, but
      are instead associated with their callsite, which can be collected. This
      prevents a memory leak incurred by TaggedTemplate calls.
      
      Changes, summarized:
      
          - Remove the TemplateMap and TemplateMapShape objects, instead caching
            template objects in the feedback vector.
          - Remove the `hash` member of TemplateObjectDescriptor, and the Equals
            method (used by TemplateMap)
          - Add a new FeedbackSlotKind (kTemplateObject), which behaves similarly
            to FeedbackSlotKind::kLiteral, but prevents eval caching. This ensures
            that a new feedback vector is always created for eval() containing tagged
            templates, even when the CompilationCache is used.
          - GetTemplateObject bytecode now takes a feedback index, and only calls
            into the runtime if the feedback is Smi::kZero (uninitialized).
      
      BUG=v8:3230, v8:2891
      R=littledan@chromium.org, yangguo@chromium.org, bmeurer@chromium.org,
      rmcilroy@chromium.org
      
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Change-Id: I7827bc148d3d93e2b056ebf63dd624da196ad423
      Reviewed-on: https://chromium-review.googlesource.com/624564
      Commit-Queue: Caitlin Potter <caitp@igalia.com>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#51248}
      d3ca0d00
  16. 07 Feb, 2018 1 commit
  17. 01 Feb, 2018 1 commit
  18. 29 Jan, 2018 1 commit
  19. 24 Jan, 2018 1 commit
  20. 17 Jan, 2018 1 commit
  21. 12 Jan, 2018 1 commit
  22. 11 Jan, 2018 1 commit
    • Caitlin Potter's avatar
      Reland "[esnext] load `iterator.next` only once at beginning of iteration" · 2d889aa9
      Caitlin Potter authored
      https://github.com/tc39/ecma262/pull/988 gained concensus during the
      september 2017 TC39 meetings. This moves the load of the "next" method
      to the very beginning of the iteration protocol, rather than during
      each iteration step.
      
      This impacts:
      
      - yield*
      - for-of loops
      - spread arguments
      - array spreads
      
      In the v8 implementation, this also affects async iteration versions of
      these things (the sole exception being the Async-From-Sync iterator,
      which requires a few more changes to work with this, likely done in a
      followup patch).
      
      This change introduces a new AST node, ResolvedProperty, which can be used
      as a callee by Call nodes to produce the same bytecode as Property calls,
      without observably re-loading the property. This is used in several
      AST-desugarings involving the iteration protocol.
      
      BUG=v8:6861, v8:5699
      R=rmcilroy@chromium.org
      TBR=neis@chromium.org, adamk@chromium.org
      
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Change-Id: I9685db6e85315ba8a2df87a4537c2bf491e1e35b
      Reviewed-on: https://chromium-review.googlesource.com/857593
      Commit-Queue: Caitlin Potter <caitp@igalia.com>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50518}
      2d889aa9
  23. 10 Jan, 2018 1 commit
  24. 09 Jan, 2018 2 commits
    • Michael Achenbach's avatar
      Revert "[esnext] load `iterator.next` only once at beginning of iteration" · 163b5d70
      Michael Achenbach authored
      This reverts commit bf4cc9ee.
      
      Reason for revert: Breaks windows with msvc and linux with gcc
      https://build.chromium.org/p/client.v8/builders/V8%20Win64%20-%20msvc/builds/841
      https://build.chromium.org/p/client.v8/builders/V8%20Linux%20gcc%204.8/builds/17265
      
      Original change's description:
      > [esnext] load `iterator.next` only once at beginning of iteration
      > 
      > https://github.com/tc39/ecma262/pull/988 gained concensus during the
      > september 2017 TC39 meetings. This moves the load of the "next" method
      > to the very beginning of the iteration protocol, rather than during
      > each iteration step.
      > 
      > This impacts:
      > 
      > - yield*
      > - for-of loops
      > - spread arguments
      > - array spreads
      > 
      > In the v8 implementation, this also affects async iteration versions of
      > these things (the sole exception being the Async-From-Sync iterator,
      > which requires a few more changes to work with this, likely done in a
      > followup patch).
      > 
      > This change introduces a new AST node, ResolvedProperty, which can be used
      > as a callee by Call nodes to produce the same bytecode as Property calls,
      > without observably re-loading the property. This is used in several
      > AST-desugarings involving the iteration protocol.
      > 
      > BUG=v8:6861, v8:5699
      > R=​rmcilroy@chromium.org, neis@chromium.org, adamk@chromium.org
      > 
      > Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      > Change-Id: Ib81106a0182687fc5efea0bc32302ad06376773b
      > Reviewed-on: https://chromium-review.googlesource.com/687997
      > Commit-Queue: Caitlin Potter <caitp@igalia.com>
      > Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
      > Reviewed-by: Adam Klein <adamk@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#50452}
      
      TBR=rmcilroy@chromium.org,adamk@chromium.org,neis@chromium.org,caitp@igalia.com,caitp@chromium.org
      
      Change-Id: I1797c0d596dfd6850d6f0f505f591a7a990dd1f1
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:6861, v8:5699
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/857616Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50454}
      163b5d70
    • Caitlin Potter's avatar
      [esnext] load `iterator.next` only once at beginning of iteration · bf4cc9ee
      Caitlin Potter authored
      https://github.com/tc39/ecma262/pull/988 gained concensus during the
      september 2017 TC39 meetings. This moves the load of the "next" method
      to the very beginning of the iteration protocol, rather than during
      each iteration step.
      
      This impacts:
      
      - yield*
      - for-of loops
      - spread arguments
      - array spreads
      
      In the v8 implementation, this also affects async iteration versions of
      these things (the sole exception being the Async-From-Sync iterator,
      which requires a few more changes to work with this, likely done in a
      followup patch).
      
      This change introduces a new AST node, ResolvedProperty, which can be used
      as a callee by Call nodes to produce the same bytecode as Property calls,
      without observably re-loading the property. This is used in several
      AST-desugarings involving the iteration protocol.
      
      BUG=v8:6861, v8:5699
      R=rmcilroy@chromium.org, neis@chromium.org, adamk@chromium.org
      
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Change-Id: Ib81106a0182687fc5efea0bc32302ad06376773b
      Reviewed-on: https://chromium-review.googlesource.com/687997
      Commit-Queue: Caitlin Potter <caitp@igalia.com>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50452}
      bf4cc9ee
  25. 08 Jan, 2018 1 commit
  26. 04 Jan, 2018 1 commit
  27. 22 Dec, 2017 1 commit
  28. 18 Dec, 2017 1 commit
  29. 15 Dec, 2017 1 commit
  30. 12 Dec, 2017 3 commits
    • Georg Neis's avatar
      Reland "Fix "this" value in lazily-parsed module functions." · 585b39f5
      Georg Neis authored
      This is a reland of c3bd741e
      Original change's description:
      > Fix "this" value in lazily-parsed module functions.
      >
      > When preparsing top-level functions in a module, we didn't track
      > unresolved variables. Consequently, "this" ended up referencing
      > the global "this", which has the wrong value (in a module "this"
      > is supposed to be the undefined value).
      >
      > This patch fixes that. This also lets us stop forcing context
      > allocation of all variables in module scopes, which the patch
      > takes care of as well.
      >
      > Bug: chromium:791334
      > Change-Id: Ifac1f1adc033f3facfb3d29dd4bca32ee27bffcf
      > Reviewed-on: https://chromium-review.googlesource.com/808938
      > Reviewed-by: Marja Hölttä <marja@chromium.org>
      > Reviewed-by: Adam Klein <adamk@chromium.org>
      > Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Commit-Queue: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#50025}
      
      TBR=adamk@chromium.org
      TBR=kozyatinskiy@chromium.org
      
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel
      
      Bug: chromium:791334
      Change-Id: I57acc7b84a345565b36cbb55924fa2ff9b449eec
      Reviewed-on: https://chromium-review.googlesource.com/822341
      Commit-Queue: Georg Neis <neis@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50045}
      585b39f5
    • Michael Achenbach's avatar
      Revert "Fix "this" value in lazily-parsed module functions." · 62f09de9
      Michael Achenbach authored
      This reverts commit c3bd741e.
      
      Reason for revert: Breaks layout tests:
      https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064/builds/20384
      
      Original change's description:
      > Fix "this" value in lazily-parsed module functions.
      > 
      > When preparsing top-level functions in a module, we didn't track
      > unresolved variables. Consequently, "this" ended up referencing
      > the global "this", which has the wrong value (in a module "this"
      > is supposed to be the undefined value).
      > 
      > This patch fixes that. This also lets us stop forcing context
      > allocation of all variables in module scopes, which the patch
      > takes care of as well.
      > 
      > Bug: chromium:791334
      > Change-Id: Ifac1f1adc033f3facfb3d29dd4bca32ee27bffcf
      > Reviewed-on: https://chromium-review.googlesource.com/808938
      > Reviewed-by: Marja Hölttä <marja@chromium.org>
      > Reviewed-by: Adam Klein <adamk@chromium.org>
      > Reviewed-by: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Commit-Queue: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#50025}
      
      TBR=adamk@chromium.org,marja@chromium.org,neis@chromium.org,kozyatinskiy@chromium.org
      
      Change-Id: I81f69334ed2ce104c00e6205d50001e4bdf07d15
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: chromium:791334
      Reviewed-on: https://chromium-review.googlesource.com/822258Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50036}
      62f09de9
    • Georg Neis's avatar
      Fix "this" value in lazily-parsed module functions. · c3bd741e
      Georg Neis authored
      When preparsing top-level functions in a module, we didn't track
      unresolved variables. Consequently, "this" ended up referencing
      the global "this", which has the wrong value (in a module "this"
      is supposed to be the undefined value).
      
      This patch fixes that. This also lets us stop forcing context
      allocation of all variables in module scopes, which the patch
      takes care of as well.
      
      Bug: chromium:791334
      Change-Id: Ifac1f1adc033f3facfb3d29dd4bca32ee27bffcf
      Reviewed-on: https://chromium-review.googlesource.com/808938Reviewed-by: 's avatarMarja Hölttä <marja@chromium.org>
      Reviewed-by: 's avatarAdam Klein <adamk@chromium.org>
      Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Commit-Queue: Georg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#50025}
      c3bd741e
  31. 11 Dec, 2017 1 commit
  32. 02 Dec, 2017 1 commit
    • Mathias Bynens's avatar
      Normalize casing of hexadecimal digits · 822be9b2
      Mathias Bynens authored
      This patch normalizes the casing of hexadecimal digits in escape
      sequences of the form `\xNN` and integer literals of the form
      `0xNNNN`.
      
      Previously, the V8 code base used an inconsistent mixture of uppercase
      and lowercase.
      
      Google’s C++ style guide uses uppercase in its examples:
      https://google.github.io/styleguide/cppguide.html#Non-ASCII_Characters
      
      Moreover, uppercase letters more clearly stand out from the lowercase
      `x` (or `u`) characters at the start, as well as lowercase letters
      elsewhere in strings.
      
      BUG=v8:7109
      TBR=marja@chromium.org,titzer@chromium.org,mtrofin@chromium.org,mstarzinger@chromium.org,rossberg@chromium.org,yangguo@chromium.org,mlippautz@chromium.org
      NOPRESUBMIT=true
      
      Cq-Include-Trybots: master.tryserver.blink:linux_trusty_blink_rel;master.tryserver.chromium.linux:linux_chromium_rel_ng
      Change-Id: I790e21c25d96ad5d95c8229724eb45d2aa9e22d6
      Reviewed-on: https://chromium-review.googlesource.com/804294
      Commit-Queue: Mathias Bynens <mathias@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#49810}
      822be9b2