1. 28 Sep, 2015 2 commits
  2. 25 Sep, 2015 1 commit
  3. 24 Sep, 2015 2 commits
    • danno's avatar
      Revert of Remove register index/code indirection (patchset #17 id:320001 of... · 3ac27431
      danno authored
      Revert of Remove register index/code indirection (patchset #17 id:320001 of https://codereview.chromium.org/1287383003/ )
      
      Reason for revert:
      Failures on greedy RegAlloc, Fuzzer
      
      Original issue's description:
      > Remove register index/code indirection
      >
      > 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.
      >
      > Committed: https://crrev.com/80bc6f6e11f79524e3f1ad05579583adfd5f18b2
      > Cr-Commit-Position: refs/heads/master@{#30913}
      
      TBR=akos.palfi@imgtec.com,bmeurer@chromium.org,jarin@chromium.org,paul.lind@imgtec.com,titzer@chromium.org
      NOPRESUBMIT=true
      NOTREECHECKS=true
      NOTRY=true
      
      Review URL: https://codereview.chromium.org/1365073002
      
      Cr-Commit-Position: refs/heads/master@{#30914}
      3ac27431
    • danno's avatar
      Remove register index/code indirection · 80bc6f6e
      danno authored
      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.
      
      Review URL: https://codereview.chromium.org/1287383003
      
      Cr-Commit-Position: refs/heads/master@{#30913}
      80bc6f6e
  4. 22 Sep, 2015 1 commit
    • dpranke's avatar
      Split the GN 'snapshot_toolchain' logic out into an include file. · 7d5d1570
      dpranke authored
      We need to build parts of v8 with a toolchain that might be different
      from both the default (target) toolchain and the regular host toolchain,
      because we need the snapshot to have the same bit-width as the target.
      V8's build defines a 'snapshot_toolchain' setting for this.
      
      It turns out that we need the value of this toolchain to be exposed
      to the Chromium build because some of the test targets (in browser_tests)
      depend on d8 and need to be able to built using the same toolchain.
      
      R=brett@chromium.org, jochen@chromium.org
      BUG=
      
      Review URL: https://codereview.chromium.org/1350223004
      
      Cr-Commit-Position: refs/heads/master@{#30854}
      7d5d1570
  5. 18 Sep, 2015 2 commits
  6. 15 Sep, 2015 2 commits
  7. 14 Sep, 2015 1 commit
  8. 11 Sep, 2015 1 commit
    • brettw's avatar
      Optionally use new GN optimization config. · ea8cfa92
      brettw authored
      The GN default optimization flag is changing from being specific to the
      debug/release status of the build to always being "default_optimization" so
      it's easier to override without being conditional on the exact setup in
      BUILDCONFIG.gn. See https://codereview.chromium.org/1324623005/
      
      Since V8 is DEPS-ed in, it will need to support both modes to allow a landing.
      This patch uses a temporary transitional flag I added to BUILDCONFIG to
      indicate which variant should be used. After the patch is landed, we can remove
      the new conditions and just remove default_optimization.
      
      Review URL: https://codereview.chromium.org/1333963002
      
      Cr-Commit-Position: refs/heads/master@{#30703}
      ea8cfa92
  9. 10 Sep, 2015 2 commits
  10. 08 Sep, 2015 2 commits
    • ulan's avatar
      Use idle task to perform incremental marking steps. · 057514d3
      ulan authored
      This moves incremental marking steps from gc-idle-time-handler and heap to the new incremental marking task.
      
      BUG=chromium:490559
      LOG=NO
      
      Review URL: https://codereview.chromium.org/1265423002
      
      Cr-Commit-Position: refs/heads/master@{#30641}
      057514d3
    • vogelheim's avatar
      Remove all gyp BUILD rules with multiple outputs. · 244cc0a6
      vogelheim authored
      - Modify js2c to accept --js and --nojs,
      - modify mksnapshot to accept --startup_src
        (instead of a positional parameter, so that it can be omitted),
      - modify v8.gyp to use the above so that no target has multiple
        output dependencies, and
      - update GN to use the switches above.
      
      (I have not succeeded in fixing the GYP->make translator to properly map
       multi-output rules, so that they work as expected in all edge cases.
       This CL signals defeat on that front, and instead I rewrite the GYP
       file to avoid that situation in the first place.)
      
      R=jochen@chromium.org
      BUG=v8:4382
      LOG=N
      
      Review URL: https://codereview.chromium.org/1310273009
      
      Cr-Commit-Position: refs/heads/master@{#30640}
      244cc0a6
  11. 07 Sep, 2015 2 commits
  12. 03 Sep, 2015 1 commit
    • mlippautz's avatar
      Adds atomic utilities (based on raw atomic operations) for your convenience: · 47d42a9a
      mlippautz authored
      {AtomicValue}: A simple integer value that can be atomically
      read/set/incremented.
      
      {AtomicEnumSet}: Similar to EnumSet this set basically represents an atomic
      bitfield based on enums. Atomic operations guarantee that setting one bit does
      not race with setting other bits.
      
      {AtomicEnumFlag}: A flag that is based on an enum that can be read and
      (attempted to be) changed atomically.
      
      BUG=chromium:524425
      LOG=N
      
      Review URL: https://codereview.chromium.org/1310993004
      
      Cr-Commit-Position: refs/heads/master@{#30560}
      47d42a9a
  13. 02 Sep, 2015 1 commit
  14. 01 Sep, 2015 3 commits
  15. 28 Aug, 2015 1 commit
  16. 26 Aug, 2015 1 commit
  17. 25 Aug, 2015 1 commit
    • mtrofin's avatar
      [turbofan] Deferred blocks splintering. · 5d954d65
      mtrofin authored
      This change encompasses what is necessary to enable stack checks in loops without suffering large regressions.
      
      Primarily, it consists of a new mechanism for dealing with deferred blocks by "splintering", rather than splitting, inside deferred blocks.
      
      My initial change was splitting along deferred block boundaries, but the regression introduced by stackchecks wasn't resolved conclusively. After investigation, it appears that just splitting ranges along cold block boundaries leads to a greater opportunity for moves on the hot path, hence the suboptimal outcome.
      
      The alternative "splinters" ranges rather than splitting them. While splitting creates 2 ranges and links them (parent-child), in contrast, splintering creates a new independent range with no parent-child relation to the original. The original range appears as if it has a liveness hole in the place of the splintered one. All thus obtained ranges are then register allocated with no change to the register allocator.
      
      The splinters (cold blocks) do not conflict with the hot path ranges, by construction. The hot path ones have less pressure to split, because we remove a source of conflicts. After allocation, we merge the splinters back to their original ranges and continue the pipeline. We leverage the previous changes made for deferred blocks (determining where to spill, for example).
      
      Review URL: https://codereview.chromium.org/1305393003
      
      Cr-Commit-Position: refs/heads/master@{#30357}
      5d954d65
  18. 24 Aug, 2015 1 commit
  19. 21 Aug, 2015 1 commit
  20. 20 Aug, 2015 2 commits
    • mstarzinger's avatar
      Separate UnicodeCache out into an own file. · 4e39437a
      mstarzinger authored
      This make inclusion of unicode-inl.h in object.h absolete. Now most
      compilation units don't require that header. It also breaks a cycle
      within declarations of the scanner.h header.
      
      This tries to remove includes of "-inl.h" headers from normal ".h"
      headers, thereby reducing the chance of any cyclic dependencies and
      decreasing the average size of our compilation units.
      
      Note that this change still leaves 3 violations of that rule in the
      code, checked with the "tools/check-inline-includes.sh" tool.
      
      R=yangguo@chromium.org
      
      Review URL: https://codereview.chromium.org/1287893006
      
      Cr-Commit-Position: refs/heads/master@{#30268}
      4e39437a
    • domenic's avatar
      Add experimental, non-snapshotted V8 extras · 6f582f08
      domenic authored
      Embedders would use these for features which must be able to be turned
      off at runtime, despite being compiled into V8. They can be turned on
      and off by the embedder using the --experimental_extras flag, e.g. via
      v8::SetFlagsFromString.
      
      R=yangguo@chromium.org, mlippautz@chromium.org, hpayer@chromium.org
      BUG=chromium:507137
      LOG=Y
      
      Review URL: https://codereview.chromium.org/1284413002
      
      Cr-Commit-Position: refs/heads/master@{#30260}
      6f582f08
  21. 18 Aug, 2015 5 commits
    • mstarzinger's avatar
      Remove empty string-search.cc file. · e1ad0237
      mstarzinger authored
      R=titzer@chromium.org
      
      Review URL: https://codereview.chromium.org/1295333002
      
      Cr-Commit-Position: refs/heads/master@{#30234}
      e1ad0237
    • danno's avatar
      [turbofan] Unify referencing of stack slots · cbbaf9ea
      danno authored
      Previously, it was not possible to specify StackSlotOperands for all
      slots in both the caller and callee stacks. Specifically, the region
      of the callee's stack including the saved return address, frame
      pointer, function pointer and context pointer could not be addressed
      by the register allocator/gap resolver.
      
      In preparation for better tail call support, which will use the gap
      resolver to reconcile outgoing parameters, this change makes it
      possible to address all slots on the stack, because slots in the
      previously inaccessible dead zone may become parameter slots for
      outgoing tail calls. All caller stack slots are accessible as they
      were before, with slot -1 corresponding to the last stack
      parameter. Stack slot indices >= 0 access the callee stack, with slot
      0 corresponding to the callee's saved return address, 1 corresponding
      to the saved frame pointer, 2 corresponding to the current function
      context, 3 corresponding to the frame marker/JSFunction, and slots 4
      and above corresponding to spill slots.
      
      The following changes were specifically	needed:
      
      * Frame	has been changed to explicitly manage three areas of the
        callee frame, the fixed header, the spill slot area, and the
        callee-saved register area.
      * Conversions from stack slot indices to fp offsets all now go through
        a common bottleneck: OptimizedFrame::StackSlotOffsetRelativeToFp
      * The generation of deoptimization translation tables has been changed
        to support the new stack slot indexing scheme. Crankshaft, which
        doesn't support the new slot numbering in its register allocator,
        must adapt the indexes when creating translation tables.
      * Callee-saved parameters are now kept below spill slots, not above,
        to support saving only the optimal set of used registers, which is
        only known after register allocation is finished and spill slots
        have been allocated.
      
      Review URL: https://codereview.chromium.org/1261923007
      
      Cr-Commit-Position: refs/heads/master@{#30224}
      cbbaf9ea
    • mstarzinger's avatar
      Remove inline header includes from natives.h header. · 366262e6
      mstarzinger authored
      R=yangguo@chromium.org
      
      Review URL: https://codereview.chromium.org/1303463002
      
      Cr-Commit-Position: refs/heads/master@{#30222}
      366262e6
    • oth's avatar
      [Interpreter] Minimal bytecode generator. · 238397c1
      oth authored
      Bytecode generator for local assignment and basic binary operations.
      
      Command-line flag for printing bytecodes.
      
      BUG=v8:4280
      LOG=N
      
      Review URL: https://codereview.chromium.org/1294543002
      
      Cr-Commit-Position: refs/heads/master@{#30221}
      238397c1
    • yangguo's avatar
      Native context: run prologue.js before runtime.js · f3059c43
      yangguo authored
      R=mvstanton@chromium.org
      
      Review URL: https://codereview.chromium.org/1294803004
      
      Cr-Commit-Position: refs/heads/master@{#30217}
      f3059c43
  22. 14 Aug, 2015 1 commit
    • vogelheim's avatar
      Rework startup-data-util. · c69e2eae
      vogelheim authored
      - Make the API look like v8::V8::InitializeICU.
        (That is: A static method call, not an object to be created on the stack.)
      - Fix path separator on Windows, by calling base::OS::isPathSeparator.
      - Move into API, so that it can be called by hello-world & friends.
      - Actually call it from hello-world and friends.
      
      R=jochen@chromium.org
      BUG=
      
      Review URL: https://codereview.chromium.org/1292053002
      
      Cr-Commit-Position: refs/heads/master@{#30174}
      c69e2eae
  23. 13 Aug, 2015 1 commit
  24. 12 Aug, 2015 1 commit
  25. 07 Aug, 2015 1 commit
  26. 06 Aug, 2015 1 commit