1. 17 Oct, 2016 2 commits
  2. 06 Oct, 2016 1 commit
  3. 05 Oct, 2016 1 commit
  4. 28 Sep, 2016 1 commit
  5. 23 Sep, 2016 1 commit
  6. 20 Sep, 2016 1 commit
  7. 16 Sep, 2016 1 commit
    • ishell's avatar
      [stubs] Port StoreTransitionStub and ElementsTransitionAndStoreStub to TurboFan. · 130d9893
      ishell authored
      This CL also cleans up related interface descriptors:
      1) unused StoreTransitionDescriptor is removed and VectorStoreTransitionDescriptor is
      renamed to StoreTransitionDescriptor.
      2) on ia32/x87 architectures slot and vector are passed on the stack (dispatcher/handlers
      cleanup will be addressed in a separate CL).
      
      These two stub ports have to be combined in one CL because:
      1) without changing the StoreTransitionDescriptor TF was not able to compile them
      on ia32/x87 (because of lack of registers),
      2) it was not possible to change the descriptor first because Crankshaft was not able
      to deal with the stack allocated parameters in case of a stub failure.
      
      TBR=jkummerow@chromium.org
      BUG=v8:5269
      
      Review-Url: https://codereview.chromium.org/2313093002
      Cr-Commit-Position: refs/heads/master@{#39476}
      130d9893
  8. 15 Sep, 2016 1 commit
  9. 21 Jul, 2016 1 commit
  10. 20 Jul, 2016 1 commit
    • ishell's avatar
      [ic] Fix megamorphic stub cache probing on some platforms. · 7da34f8a
      ishell authored
      This CL fixes weird performance implications when changing layout of Code::flags field:
      it happened that the unused ICStateField with MONOMORPHIC value in the handlers' flags
      was accidentally offsetting the underflow bug in stub cache probing code on arm, arm64,
      mips and mips64.
      
      Stub cache tests now work even when snapshot is enabled.
      
      Drive-by-change: Fixed counters manipulation on arm64 and mips64.
      
      BUG=chromium:618701
      
      Review-Url: https://codereview.chromium.org/2161153002
      Cr-Commit-Position: refs/heads/master@{#37910}
      7da34f8a
  11. 15 Jul, 2016 1 commit
  12. 14 Jul, 2016 2 commits
  13. 13 Jul, 2016 2 commits
  14. 07 Jul, 2016 1 commit
    • ishell's avatar
      [runtime] Better encapsulation of dictionary objects handling in lookup iterator. · 3fbb4521
      ishell authored
      Now LookupIterator follows the same pattern of prepare transition, apply transition
      and write value when adding new properties to dictionary objects.
      
      JSGlobalObject case:
      * Prepare transition phase ensures that there is a "transition" property cell
        prepared for receiving a value.
      * Apply transition phase does nothing.
      * Prepare for data property phase ensures that the existing property cell can
        receive the value.
      * Write value phase writes value directly to the current property cell.
      
      JSObject case:
      * Prepare transition phase prepares the object for receiving a data value (which
        could switch an object to dictionary mode).
      * Apply transition phase migrates object to a transition map. If the map happened
        to be a dictionary mode object's map then an uninitialized entry added to the
        properties dictionary.
      * Prepare for data property phase does nothing.
      * Write value phase just puts value to the properties dictionary.
      
      BUG=chromium:576312
      
      Review-Url: https://codereview.chromium.org/2127583002
      Cr-Commit-Position: refs/heads/master@{#37585}
      3fbb4521
  15. 14 Jun, 2016 1 commit
  16. 13 Jun, 2016 1 commit
    • jkummerow's avatar
      [--runtime-call-stats] Fix ACCESSOR handler computation · 31ca317a
      jkummerow authored
      When running with FLAG_runtime_call_stats, native accessor accesses must
      go through the runtime for accurate accounting. Previously the slow_stub()
      was used as a handler in order to accomplish this, but it could never be
      looked up from the code cache successfully due to mismatched code flags,
      which could cause more handler recompilations than in normal operation.
      This patch fixes that by emitting a runtime call into the compiled
      handler instead of using the slow_stub().
      
      Drive-by cleanup: drop the unused StoreIC_Megamorphic builtin.
      
      Review-Url: https://codereview.chromium.org/2054133002
      Cr-Commit-Position: refs/heads/master@{#36926}
      31ca317a
  17. 06 Jun, 2016 1 commit
  18. 24 May, 2016 1 commit
  19. 23 May, 2016 1 commit
  20. 22 Apr, 2016 1 commit
  21. 20 Apr, 2016 2 commits
  22. 19 Apr, 2016 1 commit
  23. 14 Apr, 2016 1 commit
  24. 11 Apr, 2016 1 commit
  25. 06 Apr, 2016 1 commit
    • verwaest's avatar
      Use a dictionary-mode code cache on the map rather than a dual system. · d2eb555e
      verwaest authored
      The previous code cache system required stubs to be marked with a StubType, causing them to be inserted either into a fixed array or into a dictionary-mode code cache. This could cause names to be in both cases, and lookup would just find the "fast" one first. Given that we clear out the caches on each GC, the memory overhead shouldn't be too bad. Additionally, the dictionary itself should just stay linear for small arrays; that's faster anyway.
      
      This CL additionally deletes some dead IC code.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1846963002
      
      Cr-Commit-Position: refs/heads/master@{#35291}
      d2eb555e
  26. 01 Apr, 2016 1 commit
    • bmeurer's avatar
      [ic] Use the CallFunction builtin to invoke accessors. · 6df9a22c
      bmeurer authored
      The HandlerCompiler did not properly handle the weird edge case when a
      sloppy mode function was installed as an accessor on one of the value
      wrapper prototypes and then accessed via a load from a primitive value.
      In this case we just passed the primitive value untouched instead of
      properly wrapping it first. The CallFunction builtin properly deals with
      all the funny edge cases, so we use it instead of duplicating almost all
      of the logic here (the performance difference is neglible).
      
      R=verwaest@chromium.org
      BUG=chromium:599073, v8:4413
      LOG=n
      
      Review URL: https://codereview.chromium.org/1845243005
      
      Cr-Commit-Position: refs/heads/master@{#35187}
      6df9a22c
  27. 21 Mar, 2016 1 commit
  28. 10 Mar, 2016 1 commit
  29. 09 Mar, 2016 3 commits
    • vogelheim's avatar
      Rework CallApi*Stubs. · 5096492f
      vogelheim authored
      - Eliminate stubs with a variable number of arguments.
        (That only worked due to their very limited use. These
         stubs' interface descriptors were basically lying
         about their number of args, which will fail when used
         generically.)
      - Fix all CallApi*Stubs' interface descriptors to no
        longer lie about their arguments.
      - Unify CallApi*Stub, for * in Function, Accessor,
        FunctionWithFixedArgs.
        (Since these are now all doing the same thing.)
      - Rename the unified stub (and interface descriptors) to
        *ApiCallback*, since that's really what they're doing.
      - Refuse inlining an API callback if its number of
        parameters exceeds the supported number of args.
      
      BUG=
      
      Committed: https://crrev.com/d238b953a474272c0e3ea22ef6a9b63fa9729340
      Cr-Commit-Position: refs/heads/master@{#34614}
      
      Review URL: https://codereview.chromium.org/1748123003
      
      Cr-Commit-Position: refs/heads/master@{#34627}
      5096492f
    • vogelheim's avatar
      Revert of Rework CallApi*Stubs. (patchset #5 id:100001 of... · 52a741d1
      vogelheim authored
      Revert of Rework CallApi*Stubs. (patchset #5 id:100001 of https://codereview.chromium.org/1748123003/ )
      
      Reason for revert:
      Breaks Chromium.
      
      Original issue's description:
      > Rework CallApi*Stubs.
      >
      > - Eliminate stubs with a variable number of arguments.
      >   (That only worked due to their very limited use. These
      >    stubs' interface descriptors were basically lying
      >    about their number of args, which will fail when used
      >    generically.)
      > - Fix all CallApi*Stubs' interface descriptors to no
      >   longer lie about their arguments.
      > - Unify CallApi*Stub, for * in Function, Accessor,
      >   FunctionWithFixedArgs.
      >   (Since these are now all doing the same thing.)
      > - Rename the unified stub (and interface descriptors) to
      >   *ApiCallback*, since that's really what they're doing.
      > - Refuse inlining an API callback if its number of
      >   parameters exceeds the supported number of args.
      >
      > BUG=
      >
      > Committed: https://crrev.com/d238b953a474272c0e3ea22ef6a9b63fa9729340
      > Cr-Commit-Position: refs/heads/master@{#34614}
      
      TBR=danno@chromium.org,jkummerow@chromium.org,mstarzinger@chromium.org
      # Skipping CQ checks because original CL landed less than 1 days ago.
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      BUG=
      
      Review URL: https://codereview.chromium.org/1775933005
      
      Cr-Commit-Position: refs/heads/master@{#34624}
      52a741d1
    • vogelheim's avatar
      Rework CallApi*Stubs. · d238b953
      vogelheim authored
      - Eliminate stubs with a variable number of arguments.
        (That only worked due to their very limited use. These
         stubs' interface descriptors were basically lying
         about their number of args, which will fail when used
         generically.)
      - Fix all CallApi*Stubs' interface descriptors to no
        longer lie about their arguments.
      - Unify CallApi*Stub, for * in Function, Accessor,
        FunctionWithFixedArgs.
        (Since these are now all doing the same thing.)
      - Rename the unified stub (and interface descriptors) to
        *ApiCallback*, since that's really what they're doing.
      - Refuse inlining an API callback if its number of
        parameters exceeds the supported number of args.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1748123003
      
      Cr-Commit-Position: refs/heads/master@{#34614}
      d238b953
  30. 08 Mar, 2016 1 commit
    • danno's avatar
      [runtime] Unify and simplify how frames are marked · 9dcd0857
      danno authored
      Before this CL, various code stubs used different techniques
      for marking their frames to enable stack-crawling and other
      access to data in the frame. All of them were based on a abuse
      of the "standard" frame representation, e.g. storing the a
      context pointer immediately below the frame's fp, and a
      function pointer after that. Although functional, this approach
      tends to make stubs and builtins do an awkward, unnecessary
      dance to appear like standard frames, even if they have
      nothing to do with JavaScript execution.
      
      This CL attempts to improve this by:
      
      * Ensuring that there are only two fundamentally different
        types of frames, a "standard" frame and a "typed" frame.
        Standard frames, as before, contain both a context and
        function pointer. Typed frames contain only a minimum
        of a smi marker in the position immediately below the fp
        where the context is in standard frames.
      * Only interpreted, full codegen, and optimized Crankshaft and
        TurboFan JavaScript frames use the "standard" format. All
        other frames use the type frame format with an explicit
        marker.
      * Typed frames can contain one or more values below the
        type marker. There is new magic macro machinery in
        frames.h that simplifies defining the offsets of these fields
        in typed frames.
      * A new flag in the CallDescriptor enables specifying whether
        a frame is a standard frame or a typed frame. Secondary
        register location spilling is now only enabled for standard
        frames.
      * A zillion places in the code have been updated to deal with
        the fact that most code stubs and internal frames use the
        typed frame format. This includes changes in the
        deoptimizer, debugger, and liveedit.
      * StandardFrameConstants::kMarkerOffset is deprecated,
        (CommonFrameConstants::kContextOrFrameTypeOffset
        and StandardFrameConstants::kFrameOffset are now used
        in its stead).
      
      LOG=N
      
      Review URL: https://codereview.chromium.org/1696043002
      
      Cr-Commit-Position: refs/heads/master@{#34571}
      9dcd0857
  31. 17 Feb, 2016 1 commit
  32. 16 Feb, 2016 1 commit
  33. 09 Feb, 2016 1 commit
  34. 08 Feb, 2016 1 commit