1. 17 Feb, 2017 20 commits
  2. 16 Feb, 2017 20 commits
    • dcheng's avatar
      Make instance checks understand remote contexts. · 692cccce
      dcheng authored
      https://crrev.com/2500363002 updated FunctionTemplate::HasInstance to
      follow the hidden prototype chain of a global proxy to the global
      object. However, remote contexts don't have a global object to check;
      instead, teach the instance check knows about the conventions of
      global proxy setup and have it also check the constructor's prototype.
      
      Similarly, also teach Object::FindInstanceInPrototypeChain about the
      unusual conventions for remote contexts.
      
      BUG=527190
      
      Review-Url: https://codereview.chromium.org/2698683003
      Cr-Commit-Position: refs/heads/master@{#43263}
      692cccce
    • jwolfe's avatar
      Implement new Function.prototype.toString --harmony-function-tostring · d1d4b9ce
      jwolfe authored
      For functions declared in source code, the .toString() representation
      will be an excerpt of the source code.
      * For functions declared with the "function" keyword, the excerpt
        starts at the "function" or "async" keyword and ends at the final "}".
        The previous behavior would start the excerpt at the "(" of the
        parameter list, and prepend a canonical `"function " + name` or
        similar, which would discard comments and formatting surrounding the
        function's name. Anonymous functions declared as function expressions
        no longer get the name "anonymous" in their toString representation.
      * For methods, the excerpt starts at the "get", "set", "*" (for
        generator methods), or property name, whichever comes first.
        Previously, the toString representation for methods would use a
        canonical prefix before the "(" of the parameter list. Note that any
        "static" keyword is omitted.
      * For arrow functions and class declarations, the excerpt is unchanged.
      
      For functions created with the Function, GeneratorFunction, or
      AsyncFunction constructors:
      * The string separating the parameter text and body text is now
        "\n) {\n", where previously it was "\n/*``*/) {\n" or ") {\n".
      * At one point, newline normalization was required by the spec here,
        but that was removed from the spec, and so this CL does not do it.
      
      Included in this CL is a fix for CreateDynamicFunction parsing. ')'
      and '`' characters in the parameter string are no longer disallowed,
      and Function("a=function(", "}){") is no longer allowed.
      
      BUG=v8:4958, v8:4230
      
      Review-Url: https://codereview.chromium.org/2156303002
      Cr-Commit-Position: refs/heads/master@{#43262}
      d1d4b9ce
    • jkummerow's avatar
      [stubs] KeyedStoreGeneric: overwrite existing fast properties directly · 0393b11d
      jkummerow authored
      Without relying on the stub cache.
      
      Review-Url: https://codereview.chromium.org/2696993002
      Cr-Commit-Position: refs/heads/master@{#43261}
      0393b11d
    • Daniel Clifford's avatar
      [ignition] Optimize reloading of registers before Dispatch · bd21c2bd
      Daniel Clifford authored
      Before this patch, the registers needed for bytecode dispatch in interpreter
      handlers were inconsistently stored in the interpreter frame and/or kept in
      values that remained live across calls.
      
      After this patch, these registers are explicitly reloaded after calls, making it
      possible to elide the spills of those registers before the call in many cases.
      
      Some highlights from the CL:
      
      * Added methods to the CSA and InterpreterAssembler to efficiently store and
        load Smis values and Smi interpreter registers on x64 without explicit
        tagging/untagging.
      
      * Created Variables for all of the interpreter-internal values that need to be
        reloaded before bytecode dispatch at the end of an interpreter handler.
      
      * The bytecode offset can be written out early in a handler by marking it
        has having a call along it's critical path. By moving this early in a
        handler, it becomes possible to use memory operands for pushes used to
        marshall parameters when making calls.
      
      Change-Id: Icf8d7798789f88a4489e06a7092616bbbb881577
      Reviewed-on: https://chromium-review.googlesource.com/442566
      Commit-Queue: Daniel Clifford <danno@chromium.org>
      Reviewed-by: 's avatarRoss McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#43260}
      bd21c2bd
    • adamk's avatar
      [parser cleanup] Simplify statement parsing logic · ad2a30a9
      adamk authored
      This changes most callers of ParseScopedStatement to call a new, simpler form
      of ParseStatement, which takes only |labels| and |ok|. This allows us to remove
      the |legacy| attribute from ParseScopedStatement.
      
      The only remaining caller of ParseScopedStatement is ParseIfStatement.
      
      This patch is a strict refactoring, and should change no behavior.
      
      R=littledan@chromium.org
      
      Review-Url: https://codereview.chromium.org/2699793002
      Cr-Commit-Position: refs/heads/master@{#43259}
      ad2a30a9
    • vabr's avatar
      Raise SyntaxError on let [ starting an ExpressionStatement · 94bf354a
      vabr authored
      ES2017 forbids the sequence of tokens "let [" in in expression statements [1].
      
      This CL makes ParserBase report those instances as SyntaxError. It also adds a
      customised error message for that, because the standard "Unexpected token" is
      not applicable: "let" itself is not forbidden in those context, only the
      sequence of "let [".
      
      [1] https://tc39.github.io/ecma262/#sec-expression-statement
      
      BUG=v8:5686
      
      Review-Url: https://codereview.chromium.org/2694003002
      Cr-Commit-Position: refs/heads/master@{#43258}
      94bf354a
    • Michael Achenbach's avatar
      [test] Implement results processor for perf runner. · b593f1a5
      Michael Achenbach authored
      This adds the possibility to specify a python script for post-processing stdout.
      
      This also adds some system tests for testing the new feature.
      
      NOTRY=true
      
      Change-Id: I0383afb3e23513629508feeb639ed2dfce56b54a
      Reviewed-on: https://chromium-review.googlesource.com/443449Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#43257}
      b593f1a5
    • Michael Starzinger's avatar
      [turbofan] Improve checkpoint elision during graph building. · 9c068209
      Michael Starzinger authored
      This improves the filter deciding whether a checkpoint needs to be
      created. We now keep track of whether a node having an observable
      side-effect has been created, allowing to elide checkpoint that are
      provably effect-dominated by another checkpoint already.
      
      By now the initial graphs contain an increasing amount of nodes marked
      with {Operator::kNoWrite}, making this optimization worthwhile.
      
      R=jarin@chromium.org
      
      Change-Id: Ie7ffb67e1ab081ef7aa3017675afbe5f9e7601ab
      Reviewed-on: https://chromium-review.googlesource.com/443466Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Commit-Queue: Michael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#43256}
      9c068209
    • Michael Achenbach's avatar
      [test] Upgrade gcmole plugin · 7eb022c8
      Michael Achenbach authored
      This upgrades to a precompiled plugin version including:
      https://chromium.googlesource.com/v8/v8/+/4b0edcf7
      
      BUG=v8:5970
      TBR=clemensh@chromium.org,mstarzinger@chromium.org
      
      Change-Id: I28ecdd568e4bc075533b3d14b7946a4a7ce5f9e0
      Reviewed-on: https://chromium-review.googlesource.com/443648
      Commit-Queue: Michael Achenbach <machenbach@chromium.org>
      Reviewed-by: 's avatarMichael Achenbach <machenbach@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#43255}
      7eb022c8
    • gsathya's avatar
      [mjsunit] Exit on hitting unreachable code instead of throwing · 7ee77b9b
      gsathya authored
      Errors are swallowed by promises, so just exit with stack trace.
      
      Review-Url: https://codereview.chromium.org/2693383004
      Cr-Commit-Position: refs/heads/master@{#43254}
      7ee77b9b
    • littledan's avatar
      [intl] Fall back on an invalid default locale to "und" · 3059138b
      littledan authored
      The default locale can be changed in some environments with environment
      variables. These environment variables used to allow the system to get
      into an invalid state, where the default locale was unsupported. This
      patch detects that case and falls back to "und" as the default locale
      if there is an Intl service which does not support the locale that ICU
      reports as the default. It also has a slight cleanup of surrounding code.
      
      I haven't gone through the work to set up an automated test, as triggering
      the case requires setting environment variables, which our tests don't tend
      to do, but I tested interactively as follows:
      
      dehrenberg@dehrenberg:~/v8/v8$ LC_ALL="tlh-FR" rlwrap out/Release/d8
      V8 version 5.7.0 (candidate)
      d8> new Intl.NumberFormat("foo").resolvedOptions().locale
      "und"
      d8> new Intl.NumberFormat().resolvedOptions().locale
      "und"
      d8>
      
      dehrenberg@dehrenberg:~/v8/v8$ LC_ALL="de" rlwrap out/Release/d8
      V8 version 5.7.0 (candidate)
      d8> new Intl.NumberFormat().resolvedOptions().locale
      "de"
      d8> new Intl.NumberFormat("foo").resolvedOptions().locale
      "de"
      d8>
      
      BUG=v8:4216
      
      Review-Url: https://codereview.chromium.org/2646593002
      Cr-Commit-Position: refs/heads/master@{#43253}
      3059138b
    • mvstanton's avatar
      This is a workaround for the fact that %SetCode can "lose" the script for a js... · ae8f2820
      mvstanton authored
      This is a workaround for the fact that %SetCode can "lose" the script for a js native. If the js native is re-initialized (for a Realm or something), then the source SharedFunctionInfo won't have a script anymore. Nonetheless, we may want to optimize the function. If we've compiled bytecode, then we can compile optimized code without a script.
      
      Here, we carve out a special exception for this case, so that we can turn on the --mark-shared-functions-for-tier-up.
      
      BUG=v8:5946
      R=leszeks@chromium.org
      
      Review-Url: https://codereview.chromium.org/2684033007
      Cr-Original-Commit-Position: refs/heads/master@{#43240}
      Committed: https://chromium.googlesource.com/v8/v8/+/4123a3dd790495c40cf839990318a85c146e057d
      Review-Url: https://codereview.chromium.org/2684033007
      Cr-Commit-Position: refs/heads/master@{#43252}
      ae8f2820
    • clemensh's avatar
      [gcmole] Fixes for unreachable code · 4b0edcf7
      clemensh authored
      Enforce the invariant that unreachable implicates an empty live set and
      fix the implementation of |= and &= operator.
      This is a fix-up for http://crrev.com/2694103005.
      
      R=vegorov@chromium.org
      CC=mstarzinger@chromium.org, machenbach@chromium.org
      BUG=v8:5970
      
      Review-Url: https://codereview.chromium.org/2691103008
      Cr-Commit-Position: refs/heads/master@{#43251}
      4b0edcf7
    • rossberg's avatar
      [wasm] Inspect right control frames for unreachable flag · e2b83fbb
      rossberg authored
      We were looking at the unreachable flag or stack_depth of the target frame
      instead of the current one in a couple of places (most notably BreakTo).
      This change fixes these bugs and makes us pass the latest spec tests for
      br_table validation. Also need to ensure that br_table targets have consistent
      types, which is not implied if the stack is polymorphic.
      
      R=titzer@chromium.org
      BUG=
      
      Review-Url: https://codereview.chromium.org/2696813002
      Cr-Commit-Position: refs/heads/master@{#43250}
      e2b83fbb
    • jbroman's avatar
      ValueDeserializer: Only allow valid keys when deserializing object properties. · 8990399d
      jbroman authored
      The serializer won't ever write a more complex object. Not validating this
      allows other things to be used as keys, and converted to string when the
      property set actually occurs. It turns out this gives an opportunity to trigger
      OOM by giving an object a key which is a very large sparse array (whose string
      representation is very large).
      
      This case is now rejected by the deserializer.
      
      BUG=chromium:686511
      
      Review-Url: https://codereview.chromium.org/2697023002
      Cr-Commit-Position: refs/heads/master@{#43249}
      8990399d
    • neis's avatar
      [compiler] Remove dead code. · 67544daa
      neis authored
      The SpeculativeNumberOp helper lives now in js-type-hint-lowering.cc and
      is no longer needed in js-typed-lowering.cc.
      
      R=mstarzinger@chromium.org
      BUG=
      
      Review-Url: https://codereview.chromium.org/2701643002
      Cr-Commit-Position: refs/heads/master@{#43248}
      67544daa
    • Peter Marshall's avatar
      [x87] Add missing push label in builtins. · 9801429b
      Peter Marshall authored
      BUG=v8:5974
      
      Change-Id: If79ff5c29bea79ebf8019c4a8e72d2bd7c6b9029
      Reviewed-on: https://chromium-review.googlesource.com/443448
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#43247}
      9801429b
    • littledan's avatar
      [builtins] Move non-i18n String case conversion functions to C++ · aeeacdda
      littledan authored
      BUG=v8:5880
      CQ_INCLUDE_TRYBOTS=master.tryserver.v8:v8_linux_noi18n_rel_ng
      
      Review-Url: https://codereview.chromium.org/2689283008
      Cr-Commit-Position: refs/heads/master@{#43246}
      aeeacdda
    • Andreas Haas's avatar
      [turbofan] For Word32Shl optimizations only consider the last 5 bits of the shift · 5f1661aa
      Andreas Haas authored
      One optimization in the machine-operator-reducer did not consider that
      that word32 shift left instructions only consider the last 5 bits of
      the shift input.
      
      The issue only occurs for WebAssembly because in JavaScript we always
      add a "& 0xf" on the shift value to the TurboFan graph.
      
      For additional background: The JavaScript and WebAssembly spec both
      say that only the last 5 bits of the shift value are used in the
      word32-shift-left operation. This means that an "x << 0x29", in the
      code is actually executed as "x << 0x09". Therefore the changes in
      this CL are okay because they mask the last 5 bit of the shift value.
      
      BUG=chromium:689450
      
      Change-Id: Id92f298ed6d7f1714b109b3f4fbcecd5ac6d30f7
      Reviewed-on: https://chromium-review.googlesource.com/439312Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Commit-Queue: Andreas Haas <ahaas@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#43245}
      5f1661aa
    • jgruber's avatar
      [debug] Handle OOM events in debugger tests · e9f5e1e9
      jgruber authored
      Map OOM breaks generated by inspector to DebugEvent.OOM.
      This avoids generating unintentional DebugEvent.Break events.
      
      Also be more future-proof in event categorization.
      
      On a related note, this CL also fixes a DCHECK in
      Runtime::GetFrameDetails.
      
      The receiver needs to be grabbed from the inlined frame, not
      the outer optimized frame. Optimized frames only provide the
      receiver on a best-effort basis.
      
      BUG=v8:5950
      
      Review-Url: https://codereview.chromium.org/2696173002
      Cr-Commit-Position: refs/heads/master@{#43244}
      e9f5e1e9