1. 19 Aug, 2016 1 commit
  2. 16 Aug, 2016 1 commit
  3. 10 Aug, 2016 1 commit
    • marija.antic's avatar
      MIPS: Implement Bovc and Bnvc instruction macros. · 93809055
      marija.antic authored
      Implement Bovc and Bnvc instruction macros in macro assembler.
      
      The change 6f920d7d revealed an issue with AddBranchOvf for mips R6.
      All branching instructions other than BOVC and BNVC are handled by Branch macro, which assures
      correct handling of long and short branches. As a consequence, AddBranchOvf for R6 was working correctly
      only before trampoline was emitted, but the case of long branch was not handled at all. Implemented
      instruction macros enable proper handling of BOVC and BNVC in cases when long branching is needed.
      
      TEST=test/intl/general/case-mapping.js
      
      BUG=
      
      Review-Url: https://codereview.chromium.org/2225323002
      Cr-Commit-Position: refs/heads/master@{#38513}
      93809055
  4. 26 Jul, 2016 1 commit
  5. 14 Jul, 2016 1 commit
  6. 08 Jul, 2016 1 commit
  7. 30 Jun, 2016 1 commit
    • jgruber's avatar
      [builtins] New frame type for exits to C++ builtins · 5febc27b
      jgruber authored
      Prior to this commit, calls to C++ builtins created standard exit
      frames, which are skipped when constructing JS stack traces. In order to
      show these calls on traces, we introduce a new builtin exit frame type.
      
      Builtin exit frames contain target and new.target on the stack and are
      not skipped during stack trace construction.
      
      BUG=v8:4815
      R=bmeurer@chromium.org, yangguo@chromium.org
      CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel;tryserver.v8:v8_linux_nosnap_dbg
      
      Committed: https://crrev.com/3c60c6b105f39344f93a8407f41534e5e60cf19a
      Review-Url: https://codereview.chromium.org/2090723005
      Cr-Original-Commit-Position: refs/heads/master@{#37384}
      Cr-Commit-Position: refs/heads/master@{#37416}
      5febc27b
  8. 29 Jun, 2016 2 commits
  9. 27 Jun, 2016 1 commit
  10. 20 Jun, 2016 1 commit
  11. 10 May, 2016 1 commit
  12. 30 Apr, 2016 1 commit
    • bmeurer's avatar
      [turbofan] Run everything after representation selection concurrently. · d1b3d426
      bmeurer authored
      Further refactor the pipeline to even run the first scheduler (part of
      the effect control linearization) concurrently. This temporarily
      disables most of the write barrier elimination, but we will get back to
      that later.
      
      Drive-by-fix: Remove the dead code from ChangeLowering, and stack
      allocate the Typer in the pipeline. Also migrate the AllocateStub to a
      native code builtin, so that we have the code object + a handle to it
      available all the time.
      
      CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux64_tsan_rel
      R=mstarzinger@chromium.org
      BUG=v8:4969
      LOG=n
      
      Review-Url: https://codereview.chromium.org/1926023002
      Cr-Commit-Position: refs/heads/master@{#35918}
      d1b3d426
  13. 28 Apr, 2016 1 commit
  14. 26 Apr, 2016 1 commit
  15. 19 Apr, 2016 1 commit
  16. 06 Apr, 2016 1 commit
    • bmeurer's avatar
      [generators] Decouple generator resume from fullcodegen. · 974721c6
      bmeurer authored
      Introduce a ResumeGeneratorTrampoline, which does the actual stack state
      reconstruction (currently always restores a fullcodegen frame), and
      introduce appropriate TurboFan builtins for %GeneratorPrototype%.next,
      %GeneratorPrototype%.return and %GeneratorPrototype%.throw based on
      this native builtin.
      
      Also unify the flooding in case of step-in to always work based on
      JSFunction and remove the special casing for JSGeneratorObject.
      
      R=mstarzinger@chromium.org, neis@chromium.org
      TBR=rossberg@chromium.org
      BUG=chromium:513471
      LOG=n
      
      Review URL: https://codereview.chromium.org/1865833002
      
      Cr-Commit-Position: refs/heads/master@{#35283}
      974721c6
  17. 31 Mar, 2016 1 commit
  18. 30 Mar, 2016 1 commit
    • Miran.Karic's avatar
      MIPS64: Replace JR/JALR with JIC/JIALC for r6. · a3f941ae
      Miran.Karic authored
      Port of changes that replace JR and JALR instructions with JIC and JIALC
      for mips64r6. Macroassembler Jump and Call functions now use JIC and
      JIALC if branch delay slot is not used. Code patching is adjusted to
      work with new changes. Jr and Jalr macroassembler functions are removed.
      Other changes where mips32r6 uses jr/jalr are not done because mips64r6
      uses j/jal instructions.
      
      BUG=
      
      Review URL: https://codereview.chromium.org/1830133002
      
      Cr-Commit-Position: refs/heads/master@{#35141}
      a3f941ae
  19. 25 Mar, 2016 1 commit
  20. 21 Mar, 2016 1 commit
    • bmeurer's avatar
      [stubs] Split ToNumberStub into reusable subparts. · b7aa4c3a
      bmeurer authored
      Split ToNumberStub into the entry ToNumberStub, and two new stubs,
      StringToNumberStub and NonNumberToNumberStub, which can be used when we
      already know something about the input (i.e. in various branches of the
      code stubs, or in TurboFan graphs).
      
      Also introduce an appropriate StringToNumber simplified operator for
      TurboFan, that is pure and is lowered to an invocation of the newly
      added StringToNumberStub.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1818923002
      
      Cr-Commit-Position: refs/heads/master@{#34922}
      b7aa4c3a
  21. 11 Mar, 2016 1 commit
  22. 10 Mar, 2016 1 commit
  23. 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
  24. 07 Mar, 2016 1 commit
    • ishell's avatar
      [crankshaft] Support ES6 tail call elimination. · 22938040
      ishell authored
      HInvokeFunction and HApplyArguments instructions now support tail calling.
      
      Inlining of calls at tail position is not supported yet and therefore still disabled.
      
      The tail-call-megatest was modified so that the usages of "arguments" object do not disable Crankshaft.
      
      TBR=bmeurer@chromium.org
      BUG=v8:4698
      LOG=N
      
      Review URL: https://codereview.chromium.org/1760253003
      
      Cr-Commit-Position: refs/heads/master@{#34542}
      22938040
  25. 03 Mar, 2016 2 commits
  26. 25 Feb, 2016 1 commit
  27. 24 Feb, 2016 1 commit
  28. 19 Feb, 2016 1 commit
    • bmeurer's avatar
      [stubs] Introduce a dedicated FastNewObjectStub. · ba2077aa
      bmeurer authored
      Move the already existing fast case for %NewObject into a dedicated
      FastNewObjectStub that we can utilize in places where we would otherwise
      fallback to %NewObject immediately, which is rather expensive.
      
      Also use FastNewObjectStub as the generic implementation of JSCreate,
      which should make constructor inlining based on SharedFunctionInfo (w/o
      specializing to a concrete closure) viable soon.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1708313002
      
      Cr-Commit-Position: refs/heads/master@{#34136}
      ba2077aa
  29. 18 Feb, 2016 2 commits
  30. 10 Feb, 2016 2 commits
    • verwaest's avatar
      Mark null and undefined as undetectable, and use it to handle abstract... · 3ce9e808
      verwaest authored
      Mark null and undefined as undetectable, and use it to handle abstract equality comparison in the generic compare ic
      
      Marking as undetectable makes abstract equality of null, undefined, and
      other undetectable objects easier. Supporting it in the generic compare
      IC significantly speeds up dynamic comparison between those values and
      JSReceivers by not falling back to the runtime.
      
      MIPS port contributed by Balazs Kilvady <balazs.kilvady@imgtec.com>
      
      Review URL: https://codereview.chromium.org/1683643002
      
      Cr-Commit-Position: refs/heads/master@{#33858}
      3ce9e808
    • mlippautz's avatar
      [heap] Move to page lookups for SemiSpace, NewSpace, and Heap containment methods · cfbd2561
      mlippautz authored
      Preparing the young generation for (real) non-contiguous backing memory, this
      change removes object masks that are used to compute containment in semi and new
      space. The masks are replaced by lookups for object tags and page headers, where
      possible.
      
      Details:
      - Use the fast checks (page header lookups) for containment in regular code.
      - Use the slow version that masks out the page start adress and iterates all
        pages of a space for debugging/verification.
      - The slow version works for off-heap/unmapped memory.
      - Encapsulate all checks for the old->new barrier in Heap::RecordWrite().
      
      BUG=chromium:581412
      LOG=N
      
      Review URL: https://codereview.chromium.org/1632913003
      
      Cr-Commit-Position: refs/heads/master@{#33857}
      cfbd2561
  31. 04 Feb, 2016 1 commit
  32. 03 Feb, 2016 1 commit
  33. 21 Jan, 2016 1 commit
    • bmeurer's avatar
      [for-in] Sanitize for-in optimizations and fix bailout points. · f48bf12f
      bmeurer authored
      The PrepareId bailout location was used incorrectly in Crankshaft and,
      as it turns out, is not required anyway (once you do it right). Also
      there was some premature optimization going on with the CheckEnumCache
      (trying to load null from roots only once), plus we can be smarter about
      the null/undefined check anyway.
      
      The idea behind this changes is to prepare unification of the two
      different ForInPrepare implementations that we now have, with the end
      result being that we only use the new implementation that was recently
      added for the interpreter.
      
      R=jarin@chromium.org
      BUG=v8:3650
      LOG=n
      
      Review URL: https://codereview.chromium.org/1618613002
      
      Cr-Commit-Position: refs/heads/master@{#33426}
      f48bf12f
  34. 20 Jan, 2016 1 commit
  35. 15 Jan, 2016 1 commit
    • rmcilroy's avatar
      [Interpreter] Add ForInPrepare runtime function which returns a ObjectTriple. · 84f8a506
      rmcilroy authored
      Adds a ForInPrepare Runtime function which returns a triple of
      cache_type, cache_array and cache_length.
      
      This requires adding support to CEntryStub to call runtime functions
      which return a ObjectTriple - a struct containing three Object*
      pointers. Also did some cleanup of the x64 CEntryStub to avoid
      replicated code.
      
      Replaces the interpreter's use of the ad-hock InterpreterForInPrepare
      Runtime function with ForInPrepare in preparation for fixing deopt in
      BytecodeGraphBuilder for ForIn (which will be done in a followup CL).
      
      MIPS port contributed by Balazs Kilvady <balazs.kilvady@imgtec.com>.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1576093004
      
      Cr-Commit-Position: refs/heads/master@{#33334}
      84f8a506
  36. 13 Jan, 2016 1 commit
    • bmeurer's avatar
      [builtins] Migrate Number constructor similar to String constructor. · 322ffda3
      bmeurer authored
      Also migrate the Number constructor to a native builtin, using the
      same mechanism already used by the String constructor. Otherwise just
      parsing and compiling the Number constructor to optimized code already
      eats 2ms on desktop for no good reason, and the resulting optimized
      code is not even close to awesome.
      
      Drive-by-fix: Use correct context for the [[Construct]] case of the
      String constructor as well, and share some code with it.
      
      R=jarin@chromium.org
      
      Review URL: https://codereview.chromium.org/1573243009
      
      Cr-Commit-Position: refs/heads/master@{#33265}
      322ffda3