1. 05 Apr, 2018 23 commits
  2. 04 Apr, 2018 17 commits
    • Jungshik Shin's avatar
      Reland "Implement a new spec for timezone offset calculation" · 1d3a87bd
      Jungshik Shin authored
      This is a reland of dbdede01
      after a webkit layout test (geolocation-api/timestamp.html) was
      fixed by
      https://chromium-review.googlesource.com/c/chromium/src/+/994343 .
      
      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}
      
      Bug: v8:3547, chromium:417640, v8:5714
      Change-Id: I47536c111143f75e3cfeecf5d9761c43a98a10f5
      Cq-Include-Trybots: luci.v8.try:v8_linux_noi18n_rel_ng;master.tryserver.blink:linux_trusty_blink_rel
      Reviewed-on: https://chromium-review.googlesource.com/995971
      Commit-Queue: Jungshik Shin <jshin@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52372}
      1d3a87bd
    • Aleksey Kozyatinskiy's avatar
      Revert "[debug] introduced runtime side effect check" · 539a2443
      Aleksey Kozyatinskiy authored
      This reverts commit 7a2c3713.
      
      Reason for revert: msan is broken
      
      Original change's description:
      > [debug] introduced runtime side effect check
      > 
      > This CL demonstrates minimum valuable addition to existing debug evaluate
      > without side effects mechanism.
      > With this CL user can evaluate expressions like:
      > [a,b] // create any kind of temporary array literals
      > [a,b].reduce((x,y) => x + y, 0); // use reduce method
      > [1,2,3].fill(2); // change temporary arrays
      > 
      > The core idea: any change of the object created during evaluation without
      > side effects is side effect free. As soon as we try to store this temporary
      > object to object existed before evaluation we will terminate execution.
      > 
      > Implementation:
      > - track all objects allocated during evaluation and mark them as temporary,
      > - patch all bytecodes which change objects.
      > 
      > A little more details (including performance analysis): [1].
      > 
      > [1] https://docs.google.com/document/d/10qqAtZADspPnpYa6SEdYRxrddfKIZJIzbLtGpsZQkRo/edit#
      > 
      > Bug: v8:7588
      > Change-Id: I69f7b96e1ebd7ad0022219e8213211c7be72a111
      > Reviewed-on: https://chromium-review.googlesource.com/972615
      > Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      > Reviewed-by: Yang Guo <yangguo@chromium.org>
      > Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52370}
      
      TBR=ulan@chromium.org,rmcilroy@chromium.org,yangguo@chromium.org,kozyatinskiy@chromium.org,leszeks@chromium.org
      
      Change-Id: Ied1739c6308b13a4981189e0999f5912316cf456
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7588
      Reviewed-on: https://chromium-review.googlesource.com/996135Reviewed-by: 's avatarAleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52371}
      539a2443
    • Alexey Kozyatinskiy's avatar
      [debug] introduced runtime side effect check · 7a2c3713
      Alexey Kozyatinskiy authored
      This CL demonstrates minimum valuable addition to existing debug evaluate
      without side effects mechanism.
      With this CL user can evaluate expressions like:
      [a,b] // create any kind of temporary array literals
      [a,b].reduce((x,y) => x + y, 0); // use reduce method
      [1,2,3].fill(2); // change temporary arrays
      
      The core idea: any change of the object created during evaluation without
      side effects is side effect free. As soon as we try to store this temporary
      object to object existed before evaluation we will terminate execution.
      
      Implementation:
      - track all objects allocated during evaluation and mark them as temporary,
      - patch all bytecodes which change objects.
      
      A little more details (including performance analysis): [1].
      
      [1] https://docs.google.com/document/d/10qqAtZADspPnpYa6SEdYRxrddfKIZJIzbLtGpsZQkRo/edit#
      
      Bug: v8:7588
      Change-Id: I69f7b96e1ebd7ad0022219e8213211c7be72a111
      Reviewed-on: https://chromium-review.googlesource.com/972615
      Commit-Queue: Aleksey Kozyatinskiy <kozyatinskiy@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52370}
      7a2c3713
    • Ross McIlroy's avatar
      [Compiler] Split up Unoptimized/Optimized CompilationInfo and CompilationJobs · 3a0419a6
      Ross McIlroy authored
      With the Ignition + Turbofan pipeline there is very little overlap between the data
      needed for unoptimized compilation and optimized compilation. As a result, it is
      cleaner to split up the CompilationInfo into UnoptimizedCompilationInfo and
      OptimizedCompilationInfo.
      
      Doing so also necessitate splitting up CompilationJob into UnoptimizedCompilationJob
      and OptimizedCompilationJob - again there is not much overlap so this seems cleaner.
      
      Change-Id: I1056ad520937b7f8582e4fc3ca8f4910742de30a
      Reviewed-on: https://chromium-review.googlesource.com/995895
      Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
      Reviewed-by: 's avatarLeszek Swirski <leszeks@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52369}
      3a0419a6
    • Eric Holk's avatar
      [wasm] enable StoreMem_offset_oob_i64 test with trap handlers · f56e2a02
      Eric Holk authored
      The first part of this change updates StoreMem_offset_oob_i64 to use one page of
      Wasm memory, rather than just a few bytes. Using less than a page was out of
      spec for Wasm anyway, so this is better.
      
      This required a small change in the test runner to set and clear the
      thread_in_wasm flag around Wasm calls. This was accomplished by a
      ThreadInWasmScope convenience class.
      
      The majority of the changes are because the cctest environment does not support
      runtime exceptions. In the code generator, where we used to throw a
      WasmMemOutOfBounds exception, we now need to call out to the test hook instead
      if runtime exceptions are not supported. This involved plumbing the
      runtime_exception_support flag down to the code generator. Rather than adding
      and shuffling around extra parameters everywhere, this CL packages the previous
      protected instruction list in a new WasmCompilationData object that now includes
      the runtime_exception_support flag as well.
      
      Bug: v8:5277
      Change-Id: Ic9c9e5a53a07a7773b58c0aee7c26bbd2ddf82f3
      Reviewed-on: https://chromium-review.googlesource.com/989017
      Commit-Queue: Eric Holk <eholk@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52368}
      f56e2a02
    • Erik Luo's avatar
      [debug] expose SideEffectType for whitelisting embedder callbacks · 6da12d42
      Erik Luo authored
      This exposes new flags to allow embedders to whitelist callbacks as
      side-effect-free during evaluation with throwOnSideEffect.
      
      Accessors and Functions/FunctionTemplates can take a new param on:
      - v8::Object::SetNativeDataProperty
      - v8::Object::SetLazyDataProperty
      - v8::Object::SetAccessor
      - v8::FunctionTemplate::New
      - v8::FunctionTemplate::NewWithCache
      - v8::Function::New
      
      While Interceptors can be created with an additional flag:
      PropertyHandlerFlag::kHasNoSideEffect
      
      Bug: v8:7515
      Cq-Include-Trybots: luci.chromium.try:linux_chromium_rel_ng
      Change-Id: I14823316bdd6de6d362a1104b65f13504d0db056
      Reviewed-on: https://chromium-review.googlesource.com/994550
      Commit-Queue: Erik Luo <luoe@chromium.org>
      Reviewed-by: 's avatarYang Guo <yangguo@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52367}
      6da12d42
    • Ulan Degenbaev's avatar
      [wasm] Use two-pass phantom callbacks for managed objects. · 96e83b78
      Ulan Degenbaev authored
      The phantom handle API requires that the first pass callback does not
      invoke any V8 API. The current code breaks this requirement by invoking
      AdjustAmountOfExternalAllocatedMemory, which can cause GC.
      
      This patch splits the existing callback into two parts. The first part
      only resets the handle and the second part performs native delete.
      
      Bug: chromium:827806
      Change-Id: I01eed09f94f5499cb9d13397066f4f908a0aa668
      Reviewed-on: https://chromium-review.googlesource.com/995796
      Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52366}
      96e83b78
    • Georgia Kouveli's avatar
      [wasm] Avoid manual relocation of target address · 125f8c81
      Georgia Kouveli authored
      In PatchTrampolineAndStubCalls, use a second iterator over the original
      relocation info, to avoid having to reconstruct the original target of
      the branch by manually applying the delta between the old and new code.
      
      This way, we do not need to make assumptions regarding how code targets are
      encoded.
      
      
      Change-Id: I551ad8a3a654ead63ea88c8ce1d8c9e1927436b0
      Reviewed-on: https://chromium-review.googlesource.com/995442Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Commit-Queue: Georgia Kouveli <georgia.kouveli@arm.com>
      Cr-Commit-Position: refs/heads/master@{#52365}
      125f8c81
    • Ben Titzer's avatar
      Revert "[wasm] Merge the WasmContext into WasmInstanceObject" · 8adb94fc
      Ben Titzer authored
      This reverts commit 57bf0bfe.
      
      Reason for revert: <INSERT REASONING HERE>
      
      Original change's description:
      > [wasm] Merge the WasmContext into WasmInstanceObject
      > 
      > This change makes lifetime management of WasmCode much simpler.
      > By using the WasmInstanceObject as the context for WASM code execution,
      > including the pointer to the memory base and indirect function tables,
      > this keeps the instance alive when WASM code is on the stack, since
      > the instance object is passed as a parameter and spilled onto the stack.
      > This is in preparation of sharing the code between instances and
      > isolates.
      > 
      > Bug: v8:7424
      > 
      > Change-Id: Ic2e4b7bcc2feb20001d0553a615a8a9dff36317e
      > Reviewed-on: https://chromium-review.googlesource.com/958520
      > Commit-Queue: Ben Titzer <titzer@chromium.org>
      > Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
      > Reviewed-by: Andreas Haas <ahaas@chromium.org>
      > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
      > Cr-Commit-Position: refs/heads/master@{#52361}
      
      TBR=mstarzinger@chromium.org,titzer@chromium.org,ahaas@chromium.org,clemensh@chromium.org
      
      Change-Id: I653e27b46dbc43ad773eda4292d521a508f42d79
      No-Presubmit: true
      No-Tree-Checks: true
      No-Try: true
      Bug: v8:7424
      Reviewed-on: https://chromium-review.googlesource.com/995418Reviewed-by: 's avatarBen Titzer <titzer@chromium.org>
      Commit-Queue: Ben Titzer <titzer@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52364}
      8adb94fc
    • Igor Sheludko's avatar
      [runtime] Make Map::GetOrCreatePrototypeChainValidityCell() return smi instead of empty handle. · b6021b98
      Igor Sheludko authored
      Bug: v8:5988
      Change-Id: I6f62199f062ea32e66903f5385fc109e47fed374
      Reviewed-on: https://chromium-review.googlesource.com/970822
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Reviewed-by: 's avatarCamillo Bruni <cbruni@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52363}
      b6021b98
    • Sathya Gunasekaran's avatar
      Reland "Reland "[test] Add JSTest benchmark for object literal spread"" · 31451710
      Sathya Gunasekaran authored
      This reverts commit 99c0410b.
      
      TBR=bmeurer@chromium.org
      
      Bug: v8:7611
      Change-Id: I3f75631e1d15173d2679a3bd37ef05e56e4a28e2
      Reviewed-on: https://chromium-review.googlesource.com/995581Reviewed-by: 's avatarSathya Gunasekaran <gsathya@chromium.org>
      Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52362}
      31451710
    • Ben L. Titzer's avatar
      [wasm] Merge the WasmContext into WasmInstanceObject · 57bf0bfe
      Ben L. Titzer authored
      This change makes lifetime management of WasmCode much simpler.
      By using the WasmInstanceObject as the context for WASM code execution,
      including the pointer to the memory base and indirect function tables,
      this keeps the instance alive when WASM code is on the stack, since
      the instance object is passed as a parameter and spilled onto the stack.
      This is in preparation of sharing the code between instances and
      isolates.
      
      Bug: v8:7424
      
      Change-Id: Ic2e4b7bcc2feb20001d0553a615a8a9dff36317e
      Reviewed-on: https://chromium-review.googlesource.com/958520
      Commit-Queue: Ben Titzer <titzer@chromium.org>
      Reviewed-by: 's avatarClemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52361}
      57bf0bfe
    • Clemens Hammacher's avatar
      [wasm] Fix BinOp tests for big endian systems · f81f301f
      Clemens Hammacher authored
      R=ahaas@chromium.org
      
      Bug: v8:6600
      Change-Id: I0f82f60dae124167d5dfb05b3ecb6f8b0be7c2f4
      Reviewed-on: https://chromium-review.googlesource.com/995458Reviewed-by: 's avatarAndreas Haas <ahaas@chromium.org>
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52360}
      f81f301f
    • Igor Sheludko's avatar
      [ic] Fix performance regression caused by LoadGlobalIC refactoring. · 7aa7c5dd
      Igor Sheludko authored
      Bug: chromium:798372
      Change-Id: I76d7317ef66dd5005250a10961d6732c39d4d108
      Reviewed-on: https://chromium-review.googlesource.com/995445Reviewed-by: 's avatarMythri Alle <mythria@chromium.org>
      Commit-Queue: Igor Sheludko <ishell@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52359}
      7aa7c5dd
    • Clemens Hammacher's avatar
      [wasm] Return MaybeHandle where allocation might fail · 77b076d1
      Clemens Hammacher authored
      We sometimes allow allocation to fail and return a null Handle in that
      case (e.g. for grow_memory). This refactors this code to return a
      MaybeHandle instead, to document that allocation might fail and to force
      the caller to handle this.
      
      R=mstarzinger@chromium.org
      
      Change-Id: Ia3ba65f840cfb1cf93e8dbd508a17375c19bae58
      Reviewed-on: https://chromium-review.googlesource.com/995438
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarMichael Starzinger <mstarzinger@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52358}
      77b076d1
    • Clemens Hammacher's avatar
      [wasm] Trigger GC two times before reporting OOM · b7d9672a
      Clemens Hammacher authored
      The first GC will collect dead JSArrayBuffers, but the release of the
      underlying JSArrayBuffer::Allocations might be delayed. Hence, a second
      GC might be needed.
      
      R=ulan@chromium.org
      
      Bug: v8:7621
      Change-Id: Iee714f05cb939bb084d064be6d31dfbab32ff4ba
      Reviewed-on: https://chromium-review.googlesource.com/995533
      Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
      Reviewed-by: 's avatarUlan Degenbaev <ulan@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52357}
      b7d9672a
    • Sigurd Schneider's avatar
      [turbofan] Migrate collections to JSCallReducer · 58b503c2
      Sigurd Schneider authored
      Bug: v8:7340, v8:7250
      Change-Id: I57f78fa5ad261f041b66986918c427821a57a6e1
      Reviewed-on: https://chromium-review.googlesource.com/995472Reviewed-by: 's avatarBenedikt Meurer <bmeurer@chromium.org>
      Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
      Cr-Commit-Position: refs/heads/master@{#52356}
      58b503c2