1. 21 Sep, 2016 34 commits
  2. 20 Sep, 2016 6 commits
    • adamk's avatar
      [modules] Expand API to allow linking and use it in d8 · cf127e81
      adamk authored
      This patch gives the ability for the embedder to ask for the
      module requests of a module, and to pass a ResolveCallback
      into Module::Instantiate().
      
      In d8, I've implemented a simple module_map that's used
      along with this API to allow loading, compiling, instantiating,
      and evaluating a whole tree of modules.
      
      No path resolution is yet implemented, meaning that all
      import paths are relative to whatever directory d8 runs
      in. And no imports are linked to the exports of the
      requested module.
      
      BUG=v8:1569
      
      Review-Url: https://codereview.chromium.org/2351113004
      Cr-Commit-Position: refs/heads/master@{#39569}
      cf127e81
    • neis's avatar
      [modules] Also (de-)serialize imports. · a037f350
      neis authored
      This is in preparation for basic support of import statements.
      
      R=adamk@chromium.org
      BUG=v8:1569
      
      Review-Url: https://codereview.chromium.org/2357003002
      Cr-Commit-Position: refs/heads/master@{#39568}
      a037f350
    • littledan's avatar
      Filter out synthetic variables from with scopes · dcd61b90
      littledan authored
      This patch ensures that variables like .new_target aren't overwritable
      using with scopes. It does this by ensuring that scope analysis does
      not consider with scopes (or eval scopes) for such 'synthetic variables',
      similarly to how the 'this' variable was already handled.
      The patch also adds a DCHECK for the dynamic parallel to this case,
      replacing a previous unreachable path for a particular instance.
      
      BUG=v8:5405
      
      Review-Url: https://codereview.chromium.org/2353623002
      Cr-Commit-Position: refs/heads/master@{#39567}
      dcd61b90
    • littledan's avatar
      Remove synthetic unresolved variables from async/await desugaring · bd078193
      littledan authored
      This patch uses temporaries rather than unresolved variables for
      .promise and .debug_is_active. For .promise, a new field is added
      to the FunctionState, similarly to .generator_object. This change
      fixes a bug where .promise was locally shadowable by with, affecting
      program semantics.
      
      BUG=v8:5405
      
      Review-Url: https://codereview.chromium.org/2359513002
      Cr-Commit-Position: refs/heads/master@{#39566}
      bd078193
    • littledan's avatar
      Make Promise.all/Promise.race catch prediction conditional on DevTools · 37735851
      littledan authored
      To improve performance, this patch makes Promise.all and Promise.race not
      perform correct catch prediction when the debugger is not open. The case
      may come up if Promise.race or Promise.all is called, then DevTools is
      open, then a component Promise is rejected. In this case, the user would
      falsely get an exception event even if the "pause on caught exceptions"
      box is unchecked. There are tests which triggered this case; however, it
      seems both unlikely and and acceptable to have an event in this case.
      Many analogous events are already produced when DevTools is enabled
      during the operation of a program.
      
      BUG=v8:3093
      
      Review-Url: https://codereview.chromium.org/2350363002
      Cr-Commit-Position: refs/heads/master@{#39565}
      37735851
    • littledan's avatar
      Reland Async/await Promise dependency graph · 1b414e28
      littledan authored
      This patch knits together Promises returned by async/await such that when
      one async function awaits the result of another one, catch prediction works
      across the boundaries, whether the exception comes synchronously or
      asynchronously. Edges are added in three places:
      - When a locally uncaught await happens, if the value passed into await
        is a Promise, from the awaited value to the Promise under construction
        in the broader async function
      - From a "throwaway" Promise, which may be found on the Promise debug
        stack, to the Promise under construction in the async function that
        surrounds it
      - When a Promise is resolved with another Promise (e.g., when returning a
        Promise from an async function)
      
      In this reland, the caught tests are broken up into four parts to avoid
      timeouts.
      
      BUG=v8:5167
      
      Review-Url: https://codereview.chromium.org/2346363004
      Cr-Commit-Position: refs/heads/master@{#39564}
      1b414e28