1. 24 Aug, 2016 18 commits
    • bmeurer's avatar
      [turbofan] Use ObjectIsReceiver directly for inlining. · 6646d73b
      bmeurer authored
      Don't bother using %_IsJSReceiver, which immediately gets lowered to
      ObjectIsReceiver anyways (by the JSIntrinsicLowering), but requires
      some complicated rewiring of effect/control chains.
      
      R=mstarzinger@chromium.org
      BUG=chromium:640369
      
      Review-Url: https://codereview.chromium.org/2271973003
      Cr-Commit-Position: refs/heads/master@{#38864}
      6646d73b
    • zhengxing.li's avatar
      [TurboFan] Avoid Gcc compilation fail by Initializing rest_index variable. · ce138669
      zhengxing.li authored
        The CL #38858 (https://codereview.chromium.org/2269293004) removed the parameter assignment code
        in rest_parameter(int* index) function in Class DeclarationScope.
      
        This caused the Gcc compilation fail at the following code in src/compiler/ast-graph-builder.cc, line 576.
        int rest_index;
        Variable* rest_parameter = scope->rest_parameter(&rest_index);
        BuildRestArgumentsArray(rest_parameter, rest_index);
      
        The error message was:
        ../src/compiler/ast-graph-builder.cc: In member function ‘void v8::internal::compiler::AstGraphBuilder::CreateGraphBody(bool)’:
        ../src/compiler/ast-graph-builder.cc:578:54: error: ‘rest_index’ may be used uninitialized in this function [-Werror=maybe-uninitialized]
        BuildRestArgumentsArray(rest_parameter, rest_index);
                                                            ^
      
        This CL fixed this issue by intializing rest_index to 0.
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2270363003
      Cr-Commit-Position: refs/heads/master@{#38863}
      ce138669
    • nikolaos's avatar
      [parser] Clean up (pre)parser traits, part 3 · c374d413
      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}
      c374d413
    • nikolaos's avatar
      [parser] Clean up (pre)parser traits, part 2 · 62630927
      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}
      62630927
    • bmeurer's avatar
      [turbofan] Improve fast case of JSInstanceOf lowering. · b5629a10
      bmeurer authored
      For O instanceof C, we only need to check the instance type while
      iterating the prototypes of O instead of checking both the instance
      type and the access check bit of the map. This is because we have
      the explicit range of "special object types", which include both
      JSProxy as well as the global object and proxy and all API objects
      that might have access checks or interceptors. Also restructure the
      loop exits somewhat to ensure that the branch cloning gets a chance
      to actually eliminate the bit materialization for the results.
      
      R=jarin@chromium.org
      
      Review-Url: https://codereview.chromium.org/2263273003
      Cr-Commit-Position: refs/heads/master@{#38860}
      b5629a10
    • marja's avatar
      Scopes: simplify scope creation. · 7eaeb5ae
      marja authored
      With scopes: Don't call the ctor which wants a ScopeInfo if we
      don't want to pass it, instead call a ctor which doesn't need it.
      
      In addition, remove inner_scope from ctors and adjust it
      explicitly afterwards. It's confusing that some ctors get passed
      inner scopes and some outer scopes.
      
      BUG=v8:5209
      
      Review-Url: https://codereview.chromium.org/2270743002
      Cr-Commit-Position: refs/heads/master@{#38859}
      7eaeb5ae
    • verwaest's avatar
      Replace rest_index_ with has_rest_ · 6e4d678d
      verwaest authored
      rest_index_ is implicitly params_.length() - 1, since it can only be the last.
      Add dchecks that no parameters are added after the rest parameter.
      
      BUG=v8:5209
      
      Review-Url: https://codereview.chromium.org/2269293004
      Cr-Commit-Position: refs/heads/master@{#38858}
      6e4d678d
    • zhengxing.li's avatar
      X87: [turbofan] Add Float32(Max|Min) machine operators. · 909641fd
      zhengxing.li authored
        port 2027b0be (r38784)
      
        original commit message:
        The new operators are implemented similar to the Float64(Max|Min) which
        already exist. The purpose of the new operators is the implementation
        of the F32Max and F32Min instructions in WebAssembly.
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2270193003
      Cr-Commit-Position: refs/heads/master@{#38857}
      909641fd
    • zhengxing.li's avatar
      X87: [interpreter] Fix self-healing with preserved bytecode. · 60908503
      zhengxing.li authored
        port 4598d913 (r38747)
      
        original commit message:
        This fixes the self-healing mechanism for closures in the interpreter
        entry trampoline not that bytecode can be preserved even when baseline
        code is already available.
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2273503003
      Cr-Commit-Position: refs/heads/master@{#38856}
      60908503
    • verwaest's avatar
      Store NonLocals in variables_ · 3a9c7b55
      verwaest authored
      Now that ordered_variables_ is used to find non-dynamic variables, and NonLocals are always stored in the scope that introduces them, we can rely on variables_ to also cache non-locals. This has 2 advantages:
      1) we don't need DynamicScopePart anymore, reducing all scopes by a pointer
      2) upon second lookup of a non-local we don't need to walk the entire chain anymore. The cached value will immediately be found.
      
      BUG=v8:5209
      
      Review-Url: https://codereview.chromium.org/2276483003
      Cr-Commit-Position: refs/heads/master@{#38855}
      3a9c7b55
    • jarin's avatar
      [turbofan] Change map to vector in loop variable analysis. · a5c29021
      jarin authored
      This recovers about 50% of the regression in compilation time.
      
      BUG=chromium:638208
      
      Review-Url: https://codereview.chromium.org/2274053002
      Cr-Commit-Position: refs/heads/master@{#38854}
      a5c29021
    • verwaest's avatar
      Annotate ScopeType with uint8_t · 920f5fcd
      verwaest authored
      BUG=v8:5209
      
      Review-Url: https://codereview.chromium.org/2270213002
      Cr-Commit-Position: refs/heads/master@{#38853}
      920f5fcd
    • jgruber's avatar
      Add new FrameArray type · 19e83802
      jgruber authored
      A FrameArray encodes information about a set of stack frames into a fixed
      array.
      
      This commit is a pure refactoring to make the structure of fixed array-encoded
      frames explicit.
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2270783002
      Cr-Commit-Position: refs/heads/master@{#38852}
      19e83802
    • hablich's avatar
      Revert of Update V8 DEPS. (patchset #1 id:1 of https://codereview.chromium.org/2276833002/ ) · 2053d142
      hablich authored
      Reason for revert:
      Breaks TSAN
      
      Original issue's description:
      > Update V8 DEPS.
      >
      > Rolling v8/build to b02fa16a7e5f43a2afb00b8cf56375a700f3ed0e
      >
      > Rolling v8/tools/clang to 82fffa46e8fedec2be06199c5f90410e7f2bffb8
      >
      > Rolling v8/tools/mb to 94f86dcf676fbf08448f662273aac62951365b2c
      >
      > TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org
      >
      > Committed: https://crrev.com/a796d69a9a093ca7773acbe9377865b7df680fe6
      > Cr-Commit-Position: refs/heads/master@{#38850}
      
      TBR=machenbach@chromium.org,vogelheim@chromium.org,v8-autoroll@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      
      Review-Url: https://codereview.chromium.org/2270293004
      Cr-Commit-Position: refs/heads/master@{#38851}
      2053d142
    • v8-autoroll's avatar
      Update V8 DEPS. · a796d69a
      v8-autoroll authored
      Rolling v8/build to b02fa16a7e5f43a2afb00b8cf56375a700f3ed0e
      
      Rolling v8/tools/clang to 82fffa46e8fedec2be06199c5f90410e7f2bffb8
      
      Rolling v8/tools/mb to 94f86dcf676fbf08448f662273aac62951365b2c
      
      TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org
      
      Review-Url: https://codereview.chromium.org/2276833002
      Cr-Commit-Position: refs/heads/master@{#38850}
      a796d69a
    • zhengxing.li's avatar
      X87: TurboFan: Introduce TaggedSigned and TaggedPointer representations. · 32e7b919
      zhengxing.li authored
        port d941b52d (r38657)
      
        original commit message:
        These new representations aren't used yet.
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2277473004
      Cr-Commit-Position: refs/heads/master@{#38849}
      32e7b919
    • mtrofin's avatar
      [wasm] Remember import indices · 5524cbf5
      mtrofin authored
      When compiling a wasm module, we initially generate placeholders for
      imports, which store the index corresponding to that import. Later,
      at instantiation time, we use that index to correctly link the
      provided import.
      
      In this scheme, supporting multiple instantiations requires we
      preserve a template (set of unlinked compiled wasm functions) which
      we clone for each instance. To avoid holding on to this template,
      which may be large (wasm compiled code should be expected to be in
      the order of tens of MB), we must enable cloning from an instance's
      linked wasm functions.
      
      This change is a step in that direction. Instead of assuming the wasm
      functions reference placeholders, we store a table of the code objects
      used for imports together with the compiled module, and use that
      information to determine the index of the import. Initially, that
      table contains placeholders. For instances, however, that table contains
      their actual imports.
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2269323002
      Cr-Commit-Position: refs/heads/master@{#38848}
      5524cbf5
    • littledan's avatar
      Change which ExceptionEvents are triggered by Promises · 013e49f7
      littledan authored
      To make async/await catch prediction work well, this patch regularizes
      the exception events sent to DevTools from various places in the Promise
      lifecycle. The core is that there should be an exception event when the
      rejection first starts, rather than when it is propagated.
      
      - Several cases within Promise code which propagate errors are
        modified to not trigger a new ExceptionEvent in that case, such
        as .then on a rejected Promise and returning a rejected Promise
        from .then, as well as Promise.race and Promise.all.
      - Make Promise.reject() create an ExceptionEvent, subject to catch
        prediction based on the Promise stack. This is important
        so that, e.g., if "await Promise.reject()" will trigger a new
        throw (rather than a silent rethrow of something that never
        triggered an event in the first place).
      
      BUG=v8:5167
      
      Review-Url: https://codereview.chromium.org/2244003003
      Cr-Commit-Position: refs/heads/master@{#38847}
      013e49f7
  2. 23 Aug, 2016 22 commits