1. 07 Oct, 2015 13 commits
  2. 06 Oct, 2015 16 commits
  3. 05 Oct, 2015 11 commits
    • littledan's avatar
      Fix legacy const for-of/in destructuring · 38465598
      littledan authored
      Previously, using legacy const in for-of/in loops led to a check-fail
      in the parser. This was due to the fact that the destructuring bind
      led to an undefined initialization to undefined in the parser, which
      caused the for loop code to go down a strange path. This patch
      eliminates the undefined initialization in variables declared in
      for-in/of loops, so that that path is not used and the error is
      fixed.
      
      BUG=v8:4461
      LOG=Y
      R=adamk
      
      Review URL: https://codereview.chromium.org/1385913003
      
      Cr-Commit-Position: refs/heads/master@{#31117}
      38465598
    • stefan.penner's avatar
      [es6] Align Promise.resolve with the spec · dcbab0f5
      stefan.penner authored
      * Promise.resolve is now works with subclasses
      * Spec removed [[PromiseConstructor]] now can simply use constructor
      * Promise.resolve ignores species
      
      R=littledan@chromium.org,domenic@chromium.org
      BUG=v8:4161,v8:4341
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1362773002
      
      Cr-Commit-Position: refs/heads/master@{#31116}
      dcbab0f5
    • littledan's avatar
      Prohibit let in lexical bindings · 7e113c47
      littledan authored
      This patch prohibits lexical bindings from being called 'let', even in
      sloppy mode, following the ES2015 specification. The change affects
      multiple cases of lexical bindings, including simple let/const declarations
      and both kinds of for loops. var and legacy const bindings still permit
      the name to be let, including in destructuring cases. Tests are added to
      verify, though some cases are commented out since they led to (pre-existing)
      crashes.
      
      BUG=v8:4403
      R=adamk
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1371263003
      
      Cr-Commit-Position: refs/heads/master@{#31115}
      7e113c47
    • mbrandy's avatar
      PPC: Remove register index/code indirection · f53fda63
      mbrandy authored
      Port 5cf1c0bc
      
      Original commit message:
          Previous to this patch, both the lithium and TurboFan register
          allocators tracked allocated registers by "indices", rather than
          the register codes used elsewhere in the runtime. This patch
          ensures that codes are used everywhere, and in the process cleans
          up a bunch of redundant code and adds more structure to how the
          set of allocatable registers is defined.
      
          Some highlights of changes:
      
          * TurboFan's RegisterConfiguration class moved to V8's top level
            so that it can be shared with Crankshaft.
          * Various "ToAllocationIndex" and related methods removed.
          * Code that can be easily shared between Register classes on
            different platforms is now shared.
          * The list of allocatable registers on each platform is declared
            as a list rather than implicitly via the register index <->
            code mapping.
      
      R=danno@chromium.org, bmeurer@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, dstence@us.ibm.com
      BUG=
      
      Review URL: https://codereview.chromium.org/1381383002
      
      Cr-Commit-Position: refs/heads/master@{#31114}
      f53fda63
    • hans's avatar
      Remove unnecessary friend decls; fix Win-Clang builds · 57ca0f36
      hans authored
      Clang builds on Windows were failing with:
      
      ..\..\v8\src\register-configuration.cc(85,17) :  error: unqualified friend
      declaration referring to type outside of the nearest enclosing namespace is
      a Microsoft extension; add a nested name specifier
      [-Werror,-Wmicrosoft-unqualified-friend]
      
        friend struct Register;
                      ^
                      ::v8::internal::
      
      How did it work on non-Windows? The friend declarations were declaring
      new Register and DoubleRegister structs in the current namespace, instead
      of refering the existing classes in the outer namespce.
      
      The code isn't referencing any private members of these classes anyway,
      so let's drop the friend declarations.
      
      BUG=82385
      LOG=n
      
      Review URL: https://codereview.chromium.org/1389723002
      
      Cr-Commit-Position: refs/heads/master@{#31113}
      57ca0f36
    • machenbach's avatar
      Revert of Reland: Introduce a V8_NORETURN macro and use it to make GCC 4.9.2... · 369d1c5a
      machenbach authored
      Revert of Reland: Introduce a V8_NORETURN macro and use it to make GCC 4.9.2 happy again. (patchset #3 id:40001 of https://codereview.chromium.org/1384873002/ )
      
      Reason for revert:
      [Sheriff] Breaks the gcc 4.8 bot:
      http://build.chromium.org/p/client.v8/builders/V8%20Linux%20gcc%204.8/builds/3274
      
      Original issue's description:
      > Reland: Introduce a V8_NORETURN macro and use it to make GCC 4.9.2 happy again.
      >
      > Without that, it has a few false positives about out-of-bounds array accesses.
      > Also makes the clang static-analyzer happy.
      >
      > Original code review from Sven Panne:
      > https://codereview.chromium.org/790723002/
      >
      > CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_arm_dbg,v8_linux_arm64_dbg,v8_mac64_dbg,v8_win_compile_dbg
      >
      > Committed: https://crrev.com/d068574e641e28f05dcde89ddc9a1d0ec6f6f308
      > Cr-Commit-Position: refs/heads/master@{#31105}
      
      TBR=jochen@chromium.org,bmeurer@chromium.org,karl@skomski.com
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      
      Review URL: https://codereview.chromium.org/1376113005
      
      Cr-Commit-Position: refs/heads/master@{#31112}
      369d1c5a
    • julien.gilli's avatar
      Add SetAbortOnUncaughtExceptionCallback API · 1ee712ab
      julien.gilli authored
      The --abort-on-uncaught-exception command line switch makes
      Isolate::Throw abort if the error being thrown cannot be caught by a
      try/catch block.
      
      Embedders may want to use other mechanisms than try/catch blocks to
      handle uncaught exceptions. For instance, Node.js has "domain" objects
      that have error handlers that can handle uncaught exception like
      following:
      
      var d = domain.create();
      
      d.on('error', function onError(err) {
        console.log('Handling error');
      });
      
      d.run(function() {
        throw new Error("boom");
      });
      
      These error handlers are called by isolates' message listeners.
      
      If --abort-on-uncaught-exception is *not* used, the isolate's
      message listener will be called, which will in turn call the domain's
      error handler. The process will output 'Handling error' and will exit
      successfully (not due to an uncaught exception). This is the behavior
      that Node.js users expect.
      
      However, if --abort-on-uncaught-exception is used and when throwing an
      error within a domain that has an error handler, the process will abort
      and the domain's error handler will not be called. This is not the
      behavior that Node.js users expect.
      
      Having a SetAbortOnUncaughtExceptionCallback API allows embedders to
      determine when it's not appropriate to abort and instead handle the
      exception via the isolate's message listener.
      
      In the example above, Node.js would set a custom callback with
      SetAbortOnUncaughtExceptionCallback that would be implemented as
      following (the sample code has been simplified to remove what's not
      relevant to this change):
      
      bool ShouldAbortOnUncaughtException(Isolate* isolate) {
        return !IsDomainActive();
      }
      
      Now when --abort-on-uncaught-exception is used, Isolate::Throw would
      call that callback and determine that it should not abort if a domain
      with an error handler is active. Instead, the isolate's message listener
      would be called and the error would be handled by the domain's error
      handler.
      
      I believe this can also be useful for other embedders.
      
      BUG=
      
      R=bmeurer@chromium.org
      
      Review URL: https://codereview.chromium.org/1375933003
      
      Cr-Commit-Position: refs/heads/master@{#31111}
      1ee712ab
    • dsinclair's avatar
      Add cstdarg header to log-utils.h · e89226a5
      dsinclair authored
      The log-utils.h file uses va_list but doesn't require the header. This CL
      adds the needed header to remove a compiler error we've seen when doing some
      bisecting.
      
      Review URL: https://codereview.chromium.org/1383483004
      
      Cr-Commit-Position: refs/heads/master@{#31110}
      e89226a5
    • littledan's avatar
      Ensure scopes are backed by blocks in the body of for loops · 2d408562
      littledan authored
      Clusterfuzz testing discovered that sloppy-mode block-scoped function
      declarations introduce lexically-scoped variables in scopes that were
      thrown away under the expectation that no lexically-scoped variables
      were introduced. These cases are:
      
        for (;;) function foo() {}
        for (x in y) function foo() {}
      
      This patch ensures that a block is created in those cases to hold the
      lexically scoped variable. Usually, scope analysis should discover that
      that block is not important, and it should not have a runtime
      representation.
      
      BUG=chromium:536750,chromium:536751
      LOG=Y
      R=adamk
      
      Review URL: https://codereview.chromium.org/1382123002
      
      Cr-Commit-Position: refs/heads/master@{#31109}
      2d408562
    • dusan.m.milosavljevic's avatar
      MIPS64: Improve write barriers to reduce split loads and stores. · 12d28873
      dusan.m.milosavljevic authored
      TEST=
      BUG=
      
      Review URL: https://codereview.chromium.org/1389653002
      
      Cr-Commit-Position: refs/heads/master@{#31108}
      12d28873
    • hpayer's avatar
      [heap] Prepare heap for smaller large object allocation limit than max allocatable memory. · c2bce747
      hpayer authored
      BUG=chromium:524425
      LOG=n
      
      Review URL: https://codereview.chromium.org/1361853005
      
      Cr-Commit-Position: refs/heads/master@{#31107}
      c2bce747