1. 04 Apr, 2018 24 commits
  2. 03 Apr, 2018 16 commits
    • Clemens Hammacher's avatar
      Revert "Implement a new spec for timezone offset calculation" · 965edc0e
      Clemens Hammacher authored
      This reverts commit dbdede01.
      
      Reason for revert: Fails webkit_tests, blocks roll: https://build.chromium.org/p/client.v8.fyi/builders/V8-Blink%20Linux%2064
      
      Original change's description:
      > Implement a new spec for timezone offset calculation
      > 
      > https://github.com/tc39/ecma262/pull/778 was recently merged
      > to Ecma 262.
      > 
      > It changes the way to convert between "local time" and UTC in such
      > a way that it'd work for all timezones whether or not there has
      > been any change in the timezone offset of the standard time. For
      > instance, Europe/Moscow and some parts of US state of Indiana have
      > changed the standard (non-DST) timezone offset a few times. The
      > previous spec assumes that the the standard timezone offset is
      > constant, but the new spec take into account the offset change
      > history.
      > 
      > In addition, it specifies a new way to calculate the timezone
      > offset during a timezone transition (either in and
      > out of DST or timezone offset shift).
      > 
      > During a negative transition (e.g.  fall backward / getting
      > out of DST), repeated times are to be interpreted as if the
      > offset before the transition is in effect.
      > 
      > During a positive transition (e.g. spring forward / getting
      > into DST), skipped times are to be treated similarly. That
      > is, they are to be interpreted as if the offset before the
      > transition is in effect.
      > 
      > With icu-timezone-data, v8 is compliant to the new spec for the
      > past and the future as well as now whether or not the standard
      > timezone offset of a given timezone has changed over time
      > (e.g. Europe/Moscow, Pacific/Apia). With icu-timezone-data,
      > Australia/Lord_Howe (30 minute DST change) also works per spec.
      > 
      > Without icu-timezone-data, it works only for timezones of which
      > the standard timezone offset is the same as the current offset
      > (e.g. most North American timezones other than parts of Indiana)
      > and of which the DST shift is an hour. For instance, it doesn't work
      > for Europe/Moscow in 2010 when the standard timezone offset was
      > +4h because the current (2018) standard timezone offset is +3h. Neither
      > does it for Lord Howe in Australia with the DST shift of 0.5 hr.
      > 
      > This CL used to require one of the two ICU CLs below, but not
      > any more.
      > 
      >   https://chromium-review.googlesource.com/c/chromium/deps/icu/+/572652
      >   https://chromium-review.googlesource.com/851265  (a proposed CL to the
      >   upstream ICU).
      > 
      > Bug: v8:3547,chromium:417640,v8:5714
      > Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      > Change-Id: Ib162295da5bee31b2390bd0918157014aebd3e33
      > Reviewed-on: https://chromium-review.googlesource.com/572148
      > Commit-Queue: Jungshik Shin <jshin@chromium.org>
      > Reviewed-by: Daniel Ehrenberg <littledan@chromium.org>
      > Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52332}
      
      TBR=adamk@chromium.org,littledan@chromium.org,mlippautz@chromium.org,jshin@chromium.org
      
      Change-Id: I6b3bf4427c761b106280d565a3912cd8e25cf87e
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:3547, chromium:417640, v8:5714
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Reviewed-on: https://chromium-review.googlesource.com/994192Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52338}
      965edc0e
    • Sathya Gunasekaran's avatar
      Reland "[test] Add JSTest benchmark for object literal spread" · 2ade52e9
      Sathya Gunasekaran authored
      This reverts commit cd1dd34f.
      
      Patchset 1 is the original CL that was reverted. Patchset 2 has the
      fix.
      
      TBR=bmeurer@chromium.org
      
      Bug: v8:7611
      Change-Id: I15291175ab894ef667c001e1b21b8b220e1f9b48
      Reviewed-on: https://chromium-review.googlesource.com/993995Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52337}
      2ade52e9
    • Nico Weber's avatar
      Remove `pragma optimize` from v8. · d8840043
      Nico Weber authored
      This instance of `pragma optimize` was from long ago when we built with
      frame pointers disabled. We always build with frame pointers on these
      days.
      
      (Also, clang-cl ignores this pragma and will warn about it.)
      
      Bug: chromium:505314
      Change-Id: Ia125c9c54e6ec486247241102de1cb62c72d268b
      Reviewed-on: https://chromium-review.googlesource.com/993423
      Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
      Reviewed-by: 's avatarJakob Kummerow <jkummerow@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52336}
      d8840043
    • Ben Smith's avatar
      [wasm] Implement WebAssembly.Global object · 2e197ba6
      Ben Smith authored
      This change implements the WebAssembly.Global object and constructor,
      but none of the accessors or functions.
      
      There is a new flag to enable this: --experimental-wasm-mut-global.
      
      Change-Id: Ifeb270d57392d7ca0900c80c0038932c96ee8b61
      Reviewed-on: https://chromium-review.googlesource.com/989296
      Commit-Queue: Ben Smith <binji@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52335}
      2e197ba6
    • Eric Holk's avatar
      Revert "[wasm] Always enable guard regions on 64-bit platforms" · 76e79f0f
      Eric Holk authored
      This reverts commit 0cd7468b.
      
      Reason for revert: Blocks v8 roll into chromium: https://crbug.com/828499
      
      Original change's description:
      > [wasm] Always enable guard regions on 64-bit platforms
      > 
      > This change makes full 8 GiB guard regions always enabled on 64-bit
      > platforms.
      > 
      > Additionally, since all Wasm memory allocation paths have some form of
      > guard regions, this removes and simplifies most of the logic around
      > whether to enable guard regions.
      > 
      > R=​gdeepti@chromium.org
      > 
      > Change-Id: Idf3fbcc11ac70ea2ee7eb88c2173d6a1410395e1
      > Reviewed-on: https://chromium-review.googlesource.com/985142
      > Commit-Queue: Eric Holk <eholk@chromium.org>
      > Reviewed-by: Brad Nelson <bradnelson@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52310}
      
      TBR=bradnelson@chromium.org,gdeepti@chromium.org,eholk@chromium.org
      
      # Not skipping CQ checks because original CL landed > 1 day ago.
      
      Change-Id: I126b5afe283a4fe08adfa301e637d2641c29cccd
      Reviewed-on: https://chromium-review.googlesource.com/993160Reviewed-by: 's avatarEric Holk <eholk@chromium.org>
      Commit-Queue: Eric Holk <eholk@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52334}
      76e79f0f
    • Ulan Degenbaev's avatar
      [heap] Optimize for memory usage near OOM. · cf52c101
      Ulan Degenbaev authored
      This patch enables ShouldOptimizeForMemoryUsage if the old generation
      size is within 1/8th of the max old generation size.
      
      This patch also passes the reduce-memory flag to incremental marking
      whenever ShouldOptimizeForMemoryUsage is enabled.
      
      Bug: chromium:824214
      Change-Id: I5cfc0566ca0e23dfa1b8c0439a4e67424ddc852d
      Reviewed-on: https://chromium-review.googlesource.com/973524
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52333}
      cf52c101
    • Jungshik Shin's avatar
      Implement a new spec for timezone offset calculation · dbdede01
      Jungshik Shin authored
      https://github.com/tc39/ecma262/pull/778 was recently merged
      to Ecma 262.
      
      It changes the way to convert between "local time" and UTC in such
      a way that it'd work for all timezones whether or not there has
      been any change in the timezone offset of the standard time. For
      instance, Europe/Moscow and some parts of US state of Indiana have
      changed the standard (non-DST) timezone offset a few times. The
      previous spec assumes that the the standard timezone offset is
      constant, but the new spec take into account the offset change
      history.
      
      In addition, it specifies a new way to calculate the timezone
      offset during a timezone transition (either in and
      out of DST or timezone offset shift).
      
      During a negative transition (e.g.  fall backward / getting
      out of DST), repeated times are to be interpreted as if the
      offset before the transition is in effect.
      
      During a positive transition (e.g. spring forward / getting
      into DST), skipped times are to be treated similarly. That
      is, they are to be interpreted as if the offset before the
      transition is in effect.
      
      With icu-timezone-data, v8 is compliant to the new spec for the
      past and the future as well as now whether or not the standard
      timezone offset of a given timezone has changed over time
      (e.g. Europe/Moscow, Pacific/Apia). With icu-timezone-data,
      Australia/Lord_Howe (30 minute DST change) also works per spec.
      
      Without icu-timezone-data, it works only for timezones of which
      the standard timezone offset is the same as the current offset
      (e.g. most North American timezones other than parts of Indiana)
      and of which the DST shift is an hour. For instance, it doesn't work
      for Europe/Moscow in 2010 when the standard timezone offset was
      +4h because the current (2018) standard timezone offset is +3h. Neither
      does it for Lord Howe in Australia with the DST shift of 0.5 hr.
      
      This CL used to require one of the two ICU CLs below, but not
      any more.
      
        https://chromium-review.googlesource.com/c/chromium/deps/icu/+/572652
        https://chromium-review.googlesource.com/851265  (a proposed CL to the
        upstream ICU).
      
      Bug: v8:3547,chromium:417640,v8:5714
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng
      Change-Id: Ib162295da5bee31b2390bd0918157014aebd3e33
      Reviewed-on: https://chromium-review.googlesource.com/572148
      Commit-Queue: Jungshik Shin <jshin@chromium.org>
      Reviewed-by: 's avatarDaniel Ehrenberg <littledan@chromium.org>
      Reviewed-by: 's avatarMichael Lippautz <mlippautz@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52332}
      dbdede01
    • Igor Sheludko's avatar
      [builtins] Fix fast path of Function.prototype.bind. · ef01379e
      Igor Sheludko authored
      Bug: chromium:827013
      Change-Id: I07a04cbe278b35dcd822d71d0a39a19aa9b46eb3
      Reviewed-on: https://chromium-review.googlesource.com/993053
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52331}
      ef01379e
    • Ben Smith's avatar
      [wasm] Reloc external refs when deserializing · fae8a588
      Ben Smith authored
      This is a follow-up to https://chromium-review.googlesource.com/981687.
      
      When a wasm function has a large stack frame, the x64 code generator
      performs the stack overflow check before constructing the frame. This
      requires the use of the `address_of_real_stack_limit` external
      reference.
      
      This reference is thread local, so if it is not relocated the stack
      overflow check will always fail.
      
      Bug: chromium:808848
      Change-Id: I0edf3fe5a006242fc50d0bff44cd9dd0e7d85bd9
      Reviewed-on: https://chromium-review.googlesource.com/982906
      Commit-Queue: Ben Smith <binji@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52330}
      fae8a588
    • Clemens Hammacher's avatar
      [Liftoff] Add test for binops on different registers · 229ce29a
      Clemens Hammacher authored
      This adds a systematic test for binary operations on different sets of
      registers. By loading a number of values from memory to locals, we
      create a cache state where all registers are used to hold local
      variables. We then pick two of them and perform a binary operation on
      them.
      
      R=titzer@chromium.org
      
      Bug: v8:7589, v8:6600
      Change-Id: I2a4855810bb5c39247688c43cbe9d12d64fbc181
      Reviewed-on: https://chromium-review.googlesource.com/992412
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52329}
      229ce29a
    • Erik Luo's avatar
      [debug] use flag to decide whether CallHandlerInfo has side effect · ce066032
      Erik Luo authored
      Makes CallHandlerInfo its own instance type, with an additional
      map to distinguish side-effect-free handlers. In a followup, we
      can expose an API flag to set the map.
      
      This CL does not support whitelisting calls to ObjectTemplates
      that use SetCallAsFunctionHandler().
      
      Bug: v8:7515
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
      Change-Id: Ie32fe144046a9fae3e3b1ea5602b0da3db8a5616
      Reviewed-on: https://chromium-review.googlesource.com/965741Reviewed-by: 's avatarHannes Payer <hpayer@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Commit-Queue: Erik Luo <luoe@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52328}
      ce066032
    • Clemens Hammacher's avatar
      [Liftoff][ia32] Avoid register overwrite on 64 bit shift · c83af36f
      Clemens Hammacher authored
      On ia32, the implementation of 64-bit shifts first moved {src} into
      {dst}, then {amount} into {ecx}. This fails if {dst} overlaps {amount},
      because {amount} would be overwritten before being used. Just changing
      the order to these two moves would also not be correct, since {src} can
      contain {ecx}.
      Thus, implement this via a general parallel register move, which
      resolves cycles automatically.
      
      R=titzer@chromium.org
      
      Bug: v8:7589, v8:6600
      Change-Id: I2556b9aa66a89a067372b7713dbbb3d71d2f923f
      Reviewed-on: https://chromium-review.googlesource.com/981134
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52327}
      c83af36f
    • Sergiy Byelozyorov's avatar
      [tools] Whitespace CL · 80d587d7
      Sergiy Byelozyorov authored
      TBR=sergiyb@chromium.org
      
      Bug: chromium:773297
      Change-Id: Icbff53ed84b72d74f1db9884b3b846b8ff72686b
      No-Try: true
      No-Presubmit: true
      Reviewed-on: https://chromium-review.googlesource.com/992317Reviewed-by: 's avatarSergiy Byelozyorov <sergiyb@chromium.org>
      Commit-Queue: Sergiy Byelozyorov <sergiyb@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52326}
      80d587d7
    • Ulan Degenbaev's avatar
      [wasm] Fix phantom handle clearing in destructors. · 68be8909
      Ulan Degenbaev authored
      The destructor of the owner of a phantom handle must clear the phantom
      handle first before calling any function that can trigger GC.
      
      Bug: chromium:827806
      Change-Id: I20141d0d710c486aec3d92e729d76a53069e16fd
      Reviewed-on: https://chromium-review.googlesource.com/992093Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52325}
      68be8909
    • Ivica Bogosavljevic's avatar
      MIPS[64]: Rewrite floating point conditional branches · 9a882c7e
      Ivica Bogosavljevic authored
      Summary of work done:
      * Simplify complicated CompareAndBranch instructions
      * Mark BC1EQZ and BC1NEZ as compact branches in simulator
      * Remove unneeded nops for BC1EQZ and BC1NEZ
      * Block trampolines for delay slot of BC1T and BC1F
      
      Change-Id: I86f3a497e6e9ac73075bb51653c2d4c6ab8454b9
      Reviewed-on: https://chromium-review.googlesource.com/986260
      Commit-Queue: Ivica Bogosavljevic <ivica.bogosavljevic@mips.com>
      Reviewed-by: 's avatarSreten Kovacevic <sreten.kovacevic@mips.com>
      Cr-Commit-Position: refs/heads/master@{#52324}
      9a882c7e
    • Sigurd Schneider's avatar
      Revert "[heap] fix Sweeper::kNumberOfSweepingSpaces" · 4b46522a
      Sigurd Schneider authored
      This reverts commit 12420537.
      
      Reason for revert: MSAN complains
      https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20arm64%20-%20sim%20-%20MSAN/builds/20527
      
      Original change's description:
      > [heap] fix Sweeper::kNumberOfSweepingSpaces
      > 
      > When indexing into vectors of sweeping spaces, convert the
      > AllocationSpace to an index (by subtracting FIRST_GROWABLE_PAGED_SPACE)
      > to avoid wasted space at the start.
      > 
      > Change-Id: Ia23fe6dae42d5accea9f7fe7ec5c3b303ef857b4
      > Reviewed-on: https://chromium-review.googlesource.com/978242
      > Reviewed-by: Hannes Payer <hpayer@chromium.org>
      > Commit-Queue: Dan Elphick <delphick@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52320}
      
      TBR=hpayer@chromium.org,delphick@chromium.org
      
      Change-Id: I9894dc10f122c9fab409e08b2a45389f1f51748f
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Reviewed-on: https://chromium-review.googlesource.com/992152Reviewed-by: 's avatarSigurd Schneider <sigurds@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52323}
      4b46522a