1. 19 Feb, 2019 1 commit
  2. 18 Feb, 2019 1 commit
  3. 15 Feb, 2019 1 commit
  4. 13 Feb, 2019 1 commit
    • Benedikt Meurer's avatar
      [builtins] Improve CallApiCallback calling convention. · c142e0a2
      Benedikt Meurer authored
      Refactor the CallApiCallback builtin to
      
      - pass the context as with other stubs, and
      - pass holder and call data in registers.
      
      This avoids having to place holder and call data onto the stack, and
      thus makes it possible to easily call the CallApiCallback builtin from
      other builtins while just forwarding the (stack) arguments. The idea
      is to use this in the future to optimize the general case of calling
      into any API method via a FunctionTemplateInfo and doing appropriate
      security and/or interface checks upfront as necessary (eventually making
      the HandleApiCall C++ builtin obsolete at some point).
      
      Bug: v8:8820, chromium:913553
      Change-Id: I10c0065016df4d0c24bac3d46945ea597b65ed02
      Cq-Include-Trybots: luci.chromium.try:linux-blink-rel
      Reviewed-on: https://chromium-review.googlesource.com/c/1469821
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59551}
      c142e0a2
  5. 12 Feb, 2019 1 commit
  6. 11 Feb, 2019 2 commits
  7. 08 Feb, 2019 1 commit
    • Gus Caplan's avatar
      Reland^2 "[builtins] [turbofan] Refactor Float64Pow to use single implementation" · 98453126
      Gus Caplan authored
      This is a reland of d7def900
      
      Original change's description:
      > Reland "[builtins] [turbofan] Refactor Float64Pow to use single implementation"
      >
      > This is a reland of I968a08cef6a6d49350aa79185b2c6fb856d15f23
      >
      > Original change's description:
      > > [builtins] [turbofan] Refactor Float64Pow to use single implementation
      > >
      > > Remove platform-specific Float64Pow implementations and utils Pow in
      > > favor of a base::ieee754::pow implementation.
      > >
      > > This unifies the implementation of pow for the compiler, wasm, and
      > > runtime.
      > >
      > > Bug: v8:5848, v8:5086
      > > Change-Id: I968a08cef6a6d49350aa79185b2c6fb856d15f23
      > > Reviewed-on: https://chromium-review.googlesource.com/c/1403018
      > > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > > Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
      > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#59229}
      >
      > Bug: v8:5848, v8:5086
      > Change-Id: I92f22ae03adafd9ad042e8d4bb406cbd5b5fb51e
      > Cq-Include-Trybots: luci.chromium.try:linux_chromium_ubsan_rel_ng
      > Reviewed-on: https://chromium-review.googlesource.com/c/1447854
      > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#59411}
      
      Tbr: neis@chromium.org, bmeurer@chromium.org, jkummerow@chromium.org
      Bug: v8:5848, v8:5086
      Change-Id: I42972b29b8830ed47a00b2b1d408d3005a810c0e
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_ubsan_rel_ng
      Cq-Include-Trybots: luci.v8.try:v8_linux64_ubsan_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/c/1456302Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59454}
      98453126
  8. 06 Feb, 2019 2 commits
    • Sigurd Schneider's avatar
      Revert "Reland "[builtins] [turbofan] Refactor Float64Pow to use single implementation"" · d691fde3
      Sigurd Schneider authored
      This reverts commit d7def900.
      
      Reason for revert: Breaks UBSan:
      https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux64%20UBSan/4542
      
      Besides undefined behavior, things were looking good!
      
      
      Original change's description:
      > Reland "[builtins] [turbofan] Refactor Float64Pow to use single implementation"
      > 
      > This is a reland of I968a08cef6a6d49350aa79185b2c6fb856d15f23
      > 
      > Original change's description:
      > > [builtins] [turbofan] Refactor Float64Pow to use single implementation
      > >
      > > Remove platform-specific Float64Pow implementations and utils Pow in
      > > favor of a base::ieee754::pow implementation.
      > >
      > > This unifies the implementation of pow for the compiler, wasm, and
      > > runtime.
      > >
      > > Bug: v8:5848, v8:5086
      > > Change-Id: I968a08cef6a6d49350aa79185b2c6fb856d15f23
      > > Reviewed-on: https://chromium-review.googlesource.com/c/1403018
      > > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > > Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
      > > Reviewed-by: Georg Neis <neis@chromium.org>
      > > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > > Cr-Commit-Position: refs/heads/master@{#59229}
      > 
      > Bug: v8:5848, v8:5086
      > Change-Id: I92f22ae03adafd9ad042e8d4bb406cbd5b5fb51e
      > Cq-Include-Trybots: luci.chromium.try:linux_chromium_ubsan_rel_ng
      > Reviewed-on: https://chromium-review.googlesource.com/c/1447854
      > Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
      > Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#59411}
      
      TBR=jkummerow@chromium.org,jarin@chromium.org,neis@chromium.org,jgruber@chromium.org,clemensh@chromium.org,bmeurer@chromium.org,me@gus.host
      
      Change-Id: I65c4bbd3ab7aaa1c396d182467c5a1fe6a639df5
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:5848, v8:5086
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_ubsan_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/c/1456107Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59419}
      d691fde3
    • Gus Caplan's avatar
      Reland "[builtins] [turbofan] Refactor Float64Pow to use single implementation" · d7def900
      Gus Caplan authored
      This is a reland of I968a08cef6a6d49350aa79185b2c6fb856d15f23
      
      Original change's description:
      > [builtins] [turbofan] Refactor Float64Pow to use single implementation
      >
      > Remove platform-specific Float64Pow implementations and utils Pow in
      > favor of a base::ieee754::pow implementation.
      >
      > This unifies the implementation of pow for the compiler, wasm, and
      > runtime.
      >
      > Bug: v8:5848, v8:5086
      > Change-Id: I968a08cef6a6d49350aa79185b2c6fb856d15f23
      > Reviewed-on: https://chromium-review.googlesource.com/c/1403018
      > Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Georg Neis <neis@chromium.org>
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#59229}
      
      Bug: v8:5848, v8:5086
      Change-Id: I92f22ae03adafd9ad042e8d4bb406cbd5b5fb51e
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_ubsan_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/c/1447854
      Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarGeorg Neis <neis@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#59411}
      d7def900
  9. 05 Feb, 2019 1 commit
  10. 31 Jan, 2019 2 commits
  11. 17 Jan, 2019 1 commit
  12. 10 Jan, 2019 1 commit
    • tzik's avatar
      Shuffle the parameter ordering of JSEntry · 7efa02a3
      tzik authored
      This moves |root_register_value| parameter of JSEntryFunction to the
      first. I.e. the type of entry function will be changed from
       Object*(Object* new_target, Object* target, Object* receiver,
               int argc, Object*** args,
               Address root_register_value)
      to
       Object*(Address root_register_value,
               Object* new_target, Object* target, Object* receiver,
               int argc, Object*** args),
      and moves all parameter handling except for |root_register_value| from
      JSEntryVariant to JSEntryTrampolineHelper.
      
      This is a preparation to add another JS entry point for RunMicrotasks,
      whose type will be
       Object*(Address root_register_value, MicrotaskQueue*).
      The new entry point requires |root_register_value| to be the first to
      share the implementation of the EntryFrame setup with existing ones.
      
      Bug: v8:8124
      Change-Id: I675376a2ccd240f61cf04eea6fe9a91031e06ede
      Reviewed-on: https://chromium-review.googlesource.com/c/1372857
      Commit-Queue: Taiju Tsuiki <tzik@chromium.org>
      Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58683}
      7efa02a3
  13. 08 Jan, 2019 1 commit
    • tzik's avatar
      Pass argc of JSEntry as intptr_t · 088f9c60
      tzik authored
      |argc| parameter of JSEntry is passed as int from C++ code, and loaded
      into a register on the asm code. As int is 32 bit, and registers are
      64 bit on 64 bit platforms, upper 32 bits of the loaded value may be
      contaminated by a random value if it's passed as a stack parameter.
      
      For now, |argc| is passed as a register parameter on all platforms, and
      the upper 32 bits of |argc| is filled by zero, fortunately. However, if
      we shuffle the order of parameters, |argc| can be passed as a stack
      parameter and its value may be broken.
      
      Specifically on x64 Windows, the first 4 parameters are passed as
      register parameters and the rest are stack parameters. As |argc| is the
      4th parameter, if we prepend another parameter and shift |argc| to
      the 5th parameter, |argc| will become a stack parameter and its load
      to 64 bit register breaks the value.
      
      This CL converts the type of the |argc| parameter to intptr_t, so that
      it's safe to load from stack to full width registers.
      
      Bug: v8:8124
      Change-Id: Ie7407cf5e6252ed7323a9c42389db387b0064673
      Reviewed-on: https://chromium-review.googlesource.com/c/1400326Reviewed-by: 's avatarJakob Gruber <jgruber@chromium.org>
      Commit-Queue: Taiju Tsuiki <tzik@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58614}
      088f9c60
  14. 26 Dec, 2018 1 commit
  15. 21 Dec, 2018 4 commits
    • Jakob Gruber's avatar
      [nojit] Skip the on-heap trampoline for builtin calls · ccc068d5
      Jakob Gruber authored
      This CL does two things:
      
      1. It introduces Call/JumpCodeObject as the bottleneck for all calls
         to non-heap-constant Code objects; and
      2. it dispatches directly to the off-heap entry point for all embedded
         code.
      
      Codegen at runtime remains unchanged to preserve the shorter,
      branch-less calling sequence.
      
      Bug: v8:7777
      Change-Id: I15fdcb51625209904c6a56737f085a23219319b9
      Reviewed-on: https://chromium-review.googlesource.com/c/1382461
      Commit-Queue: Jakob Gruber <jgruber@chromium.org>
      Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58440}
      ccc068d5
    • Sigurd Schneider's avatar
      Reland "[deoptimizer] Refactor GenerateDeoptimizationEntries" · 2a72b8ac
      Sigurd Schneider authored
      This is a reland of f63a657e
      
      Original change's description:
      > [deoptimizer] Refactor GenerateDeoptimizationEntries
      >
      > This reduces preprocessor-expanded source size by 64,359 from
      >
      > gen         (   21 files):    71,570 to    1,613,100 (   23x)
      > src         (  624 files):   367,830 to   52,964,659 (  144x)
      > test        (  392 files):   490,924 to   37,360,916 (   76x)
      > third_party (  432 files):   239,085 to    9,547,902 (   40x)
      > total       ( 1521 files): 1,184,093 to  102,461,098 (   87x)
      >
      > to
      >
      > gen         (   21 files):    71,570 to    1,613,100 (   23x)
      > src         (  624 files):   367,837 to   52,919,005 (  144x)
      > test        (  392 files):   490,924 to   37,342,211 (   76x)
      > third_party (  432 files):   239,085 to    9,547,902 (   40x)
      > total       ( 1521 files): 1,184,100 to  102,396,739 (   86x)
      >
      > Bug: v8:8562
      > Change-Id: Iee474e22ababa1e080b8d6359af4d0076903e59a
      > Reviewed-on: https://chromium-review.googlesource.com/c/1384091
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#58424}
      
      TBR=jarin@chromium.org,ulan@chromium.org
      
      Bug: v8:8562
      Change-Id: I7a8a350414941f49c6155ff43e36e0cb0b2006e5
      Reviewed-on: https://chromium-review.googlesource.com/c/1387497Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58437}
      2a72b8ac
    • Sigurd Schneider's avatar
      Revert "[deoptimizer] Refactor GenerateDeoptimizationEntries" · 4b4175d7
      Sigurd Schneider authored
      This reverts commit f63a657e.
      
      Reason for revert: breaks compile on lite mode:
      
      https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket.appspot.com/8926535782549686576/+/steps/build/0/steps/compile/0/stdout
      
      
      Original change's description:
      > [deoptimizer] Refactor GenerateDeoptimizationEntries
      > 
      > This reduces preprocessor-expanded source size by 64,359 from
      > 
      > gen         (   21 files):    71,570 to    1,613,100 (   23x)
      > src         (  624 files):   367,830 to   52,964,659 (  144x)
      > test        (  392 files):   490,924 to   37,360,916 (   76x)
      > third_party (  432 files):   239,085 to    9,547,902 (   40x)
      > total       ( 1521 files): 1,184,093 to  102,461,098 (   87x)
      > 
      > to
      > 
      > gen         (   21 files):    71,570 to    1,613,100 (   23x)
      > src         (  624 files):   367,837 to   52,919,005 (  144x)
      > test        (  392 files):   490,924 to   37,342,211 (   76x)
      > third_party (  432 files):   239,085 to    9,547,902 (   40x)
      > total       ( 1521 files): 1,184,100 to  102,396,739 (   86x)
      > 
      > Bug: v8:8562
      > Change-Id: Iee474e22ababa1e080b8d6359af4d0076903e59a
      > Reviewed-on: https://chromium-review.googlesource.com/c/1384091
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
      > Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#58424}
      
      TBR=ulan@chromium.org,jarin@chromium.org,sigurds@chromium.org
      
      Change-Id: I06e6f95255a3cea6a428713e9e841781425dffe8
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:8562
      Reviewed-on: https://chromium-review.googlesource.com/c/1387494Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58425}
      4b4175d7
    • Sigurd Schneider's avatar
      [deoptimizer] Refactor GenerateDeoptimizationEntries · f63a657e
      Sigurd Schneider authored
      This reduces preprocessor-expanded source size by 64,359 from
      
      gen         (   21 files):    71,570 to    1,613,100 (   23x)
      src         (  624 files):   367,830 to   52,964,659 (  144x)
      test        (  392 files):   490,924 to   37,360,916 (   76x)
      third_party (  432 files):   239,085 to    9,547,902 (   40x)
      total       ( 1521 files): 1,184,093 to  102,461,098 (   87x)
      
      to
      
      gen         (   21 files):    71,570 to    1,613,100 (   23x)
      src         (  624 files):   367,837 to   52,919,005 (  144x)
      test        (  392 files):   490,924 to   37,342,211 (   76x)
      third_party (  432 files):   239,085 to    9,547,902 (   40x)
      total       ( 1521 files): 1,184,100 to  102,396,739 (   86x)
      
      Bug: v8:8562
      Change-Id: Iee474e22ababa1e080b8d6359af4d0076903e59a
      Reviewed-on: https://chromium-review.googlesource.com/c/1384091Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarJaroslav Sevcik <jarin@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58424}
      f63a657e
  16. 20 Dec, 2018 1 commit
  17. 17 Dec, 2018 3 commits
  18. 12 Dec, 2018 1 commit
  19. 11 Dec, 2018 1 commit
    • Ross McIlroy's avatar
      [SFI] Add support for flushing old Bytecode from SharedFunctionInfos. · a55803a1
      Ross McIlroy authored
      This change makes the SFI to bytecode link pseudo-weak. The marking visitors
      check whether the bytecode is old, and if so, don't mark it and instead
      push the SFI onto a bytecode_flushing_candidates worklist. Once marking
      is complete, this list is walked, and for any of the candidates who's bytecode
      has not been marked (i.e., is only referenced by the shared function info),
      the bytecode is flushed and the SFI has the function data replaced with
      an UncompiledData (which overwrites the flushed bytecode array).
      
      Since we don't track JSFunctions, these can still think the underlying
      function is compiled, and so calling them will invoke
      InterpreterEntryTrampoline. As such, logic is added to
      InterpreterEntryTrampoline to detect flushed functions, and enter
      CompileLazy instead.
      
      BUG=v8:8395
      
      Change-Id: I4afba79f814ca9a92dec45d59485935845a6669d
      Reviewed-on: https://chromium-review.googlesource.com/c/1348433
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#58158}
      a55803a1
  20. 07 Dec, 2018 4 commits
  21. 06 Dec, 2018 1 commit
  22. 05 Dec, 2018 2 commits
  23. 26 Nov, 2018 1 commit
  24. 20 Nov, 2018 1 commit
  25. 19 Nov, 2018 1 commit
  26. 16 Nov, 2018 1 commit
  27. 09 Nov, 2018 1 commit
  28. 05 Nov, 2018 1 commit