Commit Graph

43650 Commits

Author SHA1 Message Date
Junliang Yan
fc1b3d8cfd s390x: adjust kHeaderPaddingSize
PPC/S390 has been droped 32/31-bit support.
So adjust the padding size for 64-bit only.

Change-Id: I3533ef4a90bee0b1e6f49aeb61498ce3054e85e7
Reviewed-on: https://chromium-review.googlesource.com/c/1397866
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#58598}
2019-01-07 16:31:08 +00:00
Jakob Kummerow
bc3be38f83 [ubsan] Avoid isolate == nullptr ExternalReference requests
When the InstructionSelector doesn't have a valid Isolate, it should
avoid using it to look up ExternalReferences. Fortunately, this is
easy, because the result is only used for a comparison, which in case
of invalid Isolate would always fail anyway.

Bug: v8:3770
Change-Id: Ie3d65235a22021b05cf0274bf27d91bb7af21023
Reviewed-on: https://chromium-review.googlesource.com/c/1397702
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58597}
2019-01-07 16:28:37 +00:00
Junliang Yan
fccd095552 PPC/s390: [nojit] Skip the on-heap trampoline for builtin calls
Port ccc068d5fd

Original Commit Message:

    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.

R=jgruber@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: I282a5711fdd481a1fde3569e72f0a6141ebcdf2a
Reviewed-on: https://chromium-review.googlesource.com/c/1396501
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58596}
2019-01-07 16:21:47 +00:00
Camillo Bruni
398ee1ce57 [interpreter] Reduce overhead in bytecode generator
- Directly use VisitFunctionLiteral where possible
- Take shortcut for StringLiterals in BuildLoadPropertyKey

Change-Id: Ib5c3de3d2bdd354acbfeb607415854ba90622e89
Reviewed-on: https://chromium-review.googlesource.com/c/1382750
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58595}
2019-01-07 16:10:41 +00:00
Clemens Hammacher
1099a5ff7f [platform] Refactor lazily initialized singletons
Use the new macro to define lazily initialized leaky singletons. Avoid
the clumsy LazyInstance, which we can hopefully remove soon.

R=mlippautz@chromium.org

Bug: v8:8600
Change-Id: Ib4d23f275c7ff5ca71fa9b47345284935330ead7
Reviewed-on: https://chromium-review.googlesource.com/c/1397711
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58594}
2019-01-07 15:57:42 +00:00
Camillo Bruni
53b9e1ed26 [parser] Rename PreParsedScopeData to PreparseData
We plan to store additional information that is not related to scopes.
The new name will reflect this fact better.

Change-Id: I4ddb1017bc255e6ad271e4448848ed630f367d5b
Reviewed-on: https://chromium-review.googlesource.com/c/1388538
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58591}
2019-01-07 14:49:21 +00:00
peterwmwong
400fe0690f [js] Remove Experimental Extras JS Natives
- Removes build step and bootstrapping associated with building/loading `EXPERIMENTAL_EXTRAS` JS natives.
- Removes `--experimental-extras` flag

Bug: v8:7624
Change-Id: I4c45fe70da42847545037d63e9f1da77f5957f8b
Reviewed-on: https://chromium-review.googlesource.com/c/1397906
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Peter Wong <peter.wm.wong@gmail.com>
Cr-Commit-Position: refs/heads/master@{#58590}
2019-01-07 14:43:41 +00:00
Jaroslav Sevcik
426312c88e [turbofan] Add missing heap object check
Bug: chromium:918763
Change-Id: Ic9faaed6b3194269748ba35740cda0dc8dde3241
Reviewed-on: https://chromium-review.googlesource.com/c/1397707
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58589}
2019-01-07 14:38:50 +00:00
Clemens Hammacher
23a85a3326 [Liftoff] Avoid quadratic behaviour in stack transfers
We currently iterate the list of unexecuted register moves repeatedly,
always executing the moves whose destination register is not being used
as source register any more. This can lead to quadratic execution times
if only a small number of moves is processed in every iteration.

This CL refactors this such that we iterate the moves at most three
times: Once for executing moves which can be executed right away (fast
path) and for computing the source register use counts. A second time
to execute all remaining non-cyclic moves, and a third time to execute
cyclic moves.
During the second and third iteration, whenever we decrement the source
register use count, we check whether it drops to zero and execute the
respective move right away.

R=ahaas@chromium.org

Bug: v8:6600, v8:8423
Change-Id: I503328f5ae5f0208e35d53c71b4c289d75799892
Reviewed-on: https://chromium-review.googlesource.com/c/1397703
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58588}
2019-01-07 14:23:39 +00:00
Clemens Hammacher
96671ab2e0 [Liftoff] Change the way we store stack transfers
Stack transfers consist of a number of register moves plus a number of
register loads. We currently store both in separate vectors. This CL
changes that to be stored in arrays indexed by the destination register
(such that it behaves like a map). This avoids any dynamically growing
structures.

Measured locally, this speeds up stack transfer processing by ~10%,
which translates to ~0.5% of overall Liftoff compilation time.

R=ahaas@chromium.org

Bug: v8:6600, v8:8423
Change-Id: Id532960dcc12f228507ed75e392ad4c57710593f
Reviewed-on: https://chromium-review.googlesource.com/c/1396278
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58587}
2019-01-07 13:38:33 +00:00
Jakob Kummerow
81becb8c10 [ubsan] Fix errors related to AsmType
The AsmType class uses a design similar to the old Object* model, where
arbitrary values (including 0) are reinterpret_cast to pointers. This
yields the following UBSan error, among others:

    src/asmjs/asm-parser.cc:2000:51: runtime error: member call on null
    pointer of type 'v8::internal::wasm::AsmType'

This patch does the smallest possible fix by turning the affected methods
into static functions. Longer-term, we should consider switching the
overall class design to a "struct wrapping an Address" model like the new
Object definition, which is a bit non-trivial because some AsmType types
are ZoneObject subclasses.

Bug: v8:3770
Change-Id: Ie2a7cdc9eab32c4c469d699212c84b0419480b4f
Reviewed-on: https://chromium-review.googlesource.com/c/1397663
Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58586}
2019-01-07 13:07:26 +00:00
Georg Neis
62302d6ca4 [turbofan] Brokerize (parts of) reduction of string.length load.
Bug: v8:7790
Change-Id: Ie8825227048a00892117e98cd4e591b3e5e06930
Reviewed-on: https://chromium-review.googlesource.com/c/1396090
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58584}
2019-01-07 12:37:20 +00:00
Georg Neis
e9c936392f [turbofan] Brokerize more pieces of JSNativeContextSpecialization.
Bug: v8:7790
Change-Id: I8cc88aadaaacca4cc6b87a6f5bead9129b8dfa14
Reviewed-on: https://chromium-review.googlesource.com/c/1394550
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58583}
2019-01-07 12:36:15 +00:00
Maya Lekova
2681ec65dc [turbofan] Introduce serializer for background compilation phase
Design doc:
https://docs.google.com/document/d/1vCQYhtFPqXafSMweSnGD8l0TKEIB6cPV5UGMHJtpy8k/edit?ts=5bf7d341

This CL only introduces a skeleton of the new phase that implements a bytecode
walker. The SUPPORTED_BYTECODE_LIST is supposed to be filled in gradually.

Bug:v8:7790

R=jarin@chromium.org, neis@chromium.org

Change-Id: I57fea91c55dca888581f2490bdf7b831fc61eda4
Reviewed-on: https://chromium-review.googlesource.com/c/1386872
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58582}
2019-01-07 12:26:28 +00:00
Georg Neis
3b6efcdc1b [turbofan] Make it explicit that module namespace map has proto info.
R=jarin@chromium.org

Change-Id: I08ecc5c86aa098a566c57e8ac8575504c9c36361
Reviewed-on: https://chromium-review.googlesource.com/c/1397667
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58581}
2019-01-07 12:25:13 +00:00
Jakob Kummerow
4737de1f0a [ubsan] Fix "division by zero" UBSan reports
The C++ spec does not guarantee IEEE-754 behavior for doubles, in
particular it says that dividing by zero is undefined behavior,
and UBSan complains about it when it happens.

Bug: v8:3770
Change-Id: I79e52c0e11ebfb581191f6f1c3ff95eb747dd97f
Reviewed-on: https://chromium-review.googlesource.com/c/1391751
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58580}
2019-01-07 12:24:08 +00:00
peterwmwong
263dce9b57 [js] Remove CORE JS Natives (prologue.js), port extra utils to C++/Torque
- Removes the last `CORE` JS native script: `prologue.js`.
- Removes build step and bootstrapping associated with building/loading `CORE` JS natives.
- Removes `natives_utils_object` from context.
- Deprecates `--expose-natives-as` flag.
- Ports extra utils functions to C++ (`uncurryThis`) or Torque
  (`createPrivateSymbol`, `markPromiseAsHandled`, and `promiseState`).
- Move extra utils constants initialization into bootstrapper
  (`kPROMISE_PENDING`, `kPROMISE_FULFILLED`, `kPROMISE_REJECTED`).
- Removes unused extra utils functions `log` and `logStackTrace`.

Drive-by: Added test coverage for Array#includes being an unscopeable.

Bug: v8:7624
Change-Id: I5d983f8d11b76cb4dd3c2c67592ce1dc88364cd9
Reviewed-on: https://chromium-review.googlesource.com/c/1381672
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Peter Wong <peter.wm.wong@gmail.com>
Cr-Commit-Position: refs/heads/master@{#58577}
2019-01-07 11:57:46 +00:00
Toon Verwaest
76f8893699 [parser] Create arrow function scopes while parsing the head
This simplifies NextArrowFunctionInfo, allows us to Scope::Snapshot::Reparent
directly rather than moving it, and allows us to skip reparenting in the simple
parameter arrow function cases.

This is a reland of https://chromium-review.googlesource.com/c/v8/v8/+/1397664,
simply splitting out the arrow-function-name-inferring part.

Change-Id: I640d911a9607edc3bbb0e5ff3bf992094e4159e4
Reviewed-on: https://chromium-review.googlesource.com/c/1397701
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58570}
2019-01-07 11:13:31 +00:00
Clemens Hammacher
b962c07107 [Liftoff] Restructure execution of stack transfers
This is a fully semantically preserving CL, it just moves code around a
bit to make the follow-up CL easier to review.

R=ahaas@chromium.org

Bug: v8:6600, v8:8423
Change-Id: I0de80b18faa3ae570894cbd8073c495a5731d255
Reviewed-on: https://chromium-review.googlesource.com/c/1396096
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58569}
2019-01-07 10:58:31 +00:00
Ross McIlroy
69e36a95be [Parser] Remove aborting of preparsing for trivial long functions.
Real world websites don't benifit from aborting preparsing to eagerly compile
long trivial functions, and it adds unecessary complexity to the parser and
doesn't work well with bytecode flushing, so we remove it.

Perf Sheriffs: this is expected to regress the MandreelLatency benchmark on
Octane.

BUG=v8:8395

Change-Id: Ia60cd67d4dd100376d2a366939a1d2a97cbc2b0d
Reviewed-on: https://chromium-review.googlesource.com/c/1394297
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58568}
2019-01-07 10:50:41 +00:00
Toon Verwaest
095343926b Reland "[parser] Simplify ParseFunctionBody"
This is a reland of 2963f1b2e3

Original change's description:
> [parser] Simplify ParseFunctionBody
> 
> - Merge is_simple branches at the top
> - Remove block around inner_body parsing. Always merge fully at the end.
> - Remove conditional inner block adding to outer body. Simply add it to the
>   inner body making merge push it to the parent.
> 
> Change-Id: I1f062918a7abac354b949136463517bd0440984f
> Reviewed-on: https://chromium-review.googlesource.com/c/1386111
> Commit-Queue: Toon Verwaest <verwaest@chromium.org>
> Reviewed-by: Igor Sheludko <ishell@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58390}

Change-Id: I145f0cb1eda1dca4dd047b55e54b2b1bb704ecf8
Reviewed-on: https://chromium-review.googlesource.com/c/1397662
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58567}
2019-01-07 10:44:31 +00:00
Georg Neis
af0b5af182 [turbofan] Extend list of operators that only produce HeapObjects
Change-Id: If8763d2a46a13e75722f2f5314ba50dc9df281e0
Reviewed-on: https://chromium-review.googlesource.com/c/1396089
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58565}
2019-01-07 09:41:39 +00:00
Clemens Hammacher
3c54b7a496 Revert "Reland: [Compiler] Ensure unoptimized code generation is context independent."
This reverts commit dcd75706c0.

Reason for revert: Breaks layout tests, blocks roll, see
https://crrev.com/c/1396602; there are wasm CLs in this range too,
but this CL looks like the most likely culprit.

Original change's description:
> Reland: [Compiler] Ensure unoptimized code generation is context independent.
> 
> Now that Asm.js code is also context independent, move code to ensure context independence
> from BytecodeGenerator to FinalizeUnoptimizedCode.
> 
> Reland of CL: https://chromium-review.googlesource.com/c/v8/v8/+/1349236
> 
> Change-Id: I718090850870c61733e0719d4091ec60bc080ebb
> Reviewed-on: https://chromium-review.googlesource.com/c/1396201
> Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
> Reviewed-by: Dan Elphick <delphick@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58558}

TBR=rmcilroy@chromium.org,delphick@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: I5f547319f31f87777165361747dd42d223fc0b0e
Reviewed-on: https://chromium-review.googlesource.com/c/1396427
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58564}
2019-01-07 08:25:56 +00:00
Benedikt Meurer
b6bcf3210a [async] The Promise.all() fast-path must check @@species protector.
We cannot take the fast-path if the user messed with the Symbol.species
property on the Promise.prototype, as that makes the internal promises
observable.

Bug: chromium:917076
Change-Id: I928e0bd17836ca78cf88591610526aa7bc1d293c
Reviewed-on: https://chromium-review.googlesource.com/c/1396426
Commit-Queue: Benedikt Meurer <bmeurer@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58563}
2019-01-07 08:22:56 +00:00
Yang Guo
61f4c2251e Assume flat string when checking CompileFunctionInContext arguments.
R=jkummerow@chromium.org

Change-Id: I54c6137a3c6e14d4102188f154aa7216e7414dbc
Reviewed-on: https://chromium-review.googlesource.com/c/1388533
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58562}
2019-01-07 07:19:06 +00:00
Ross McIlroy
dcd75706c0 Reland: [Compiler] Ensure unoptimized code generation is context independent.
Now that Asm.js code is also context independent, move code to ensure context independence
from BytecodeGenerator to FinalizeUnoptimizedCode.

Reland of CL: https://chromium-review.googlesource.com/c/v8/v8/+/1349236

Change-Id: I718090850870c61733e0719d4091ec60bc080ebb
Reviewed-on: https://chromium-review.googlesource.com/c/1396201
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58558}
2019-01-04 16:29:38 +00:00
Andreas Haas
122d8b5103 [wasm][anyref] Add support for importing anyref globals
With this CL it is possible to import any JavaScript object as an anyref
global. The exception is WasmGlobalObject, which cannot hold anyref
globals yet.

R=clemensh@chromium.org

Bug: v8:7581
Change-Id: I5b0fc686a4ec5c579d1d635b53be5ccdf0a78f27
Reviewed-on: https://chromium-review.googlesource.com/c/1382452
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58557}
2019-01-04 16:10:18 +00:00
Clemens Hammacher
5ac88bfca6 Revert "Remove trap handler fallback for sanitizers"
This reverts commit 26a78061af.

Reason for revert: Not all fuzzers support custom segfault handlers yet, see https://crbug.com/918949

Original change's description:
> Remove trap handler fallback for sanitizers
> 
> Since https://crrev.com/c/1335572, our sanitizers allow to set custom
> segfault handlers. Thus remove special code that was added to handle
> sanitizers that prevent installation of segfault handlers. Instead,
> CHECK that the signal handler was installed correctly.
> 
> R=​ahaas@chromium.org, mseaborn@chromium.org, mark@chromium.org
> 
> Bug: chromium:830894
> Change-Id: I3bd66e33efdceb3e8469f3f4a09fbde90cb3d7ec
> Reviewed-on: https://chromium-review.googlesource.com/c/1392199
> Reviewed-by: Andreas Haas <ahaas@chromium.org>
> Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58513}

TBR=mseaborn@chromium.org,ahaas@chromium.org,mark@chromium.org,clemensh@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: chromium:830894, chromium:918949
Change-Id: Ide545860cf7729139ac50c0dd2e85facca49b0b1
Reviewed-on: https://chromium-review.googlesource.com/c/1396277
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58556}
2019-01-04 16:08:38 +00:00
Peter Marshall
a0572f0bc7 [cpu-profiler] Reduce the size of inlining information
Previously we stored the source position table, which stored a mapping
of pc offsets to line numbers, and the inline_locations, which stored a
mapping of pc offsets to stacks of {CodeEntry, line_number} pairs. This
was slightly wasteful because we had two different tables which were
both keyed on the pc offset and contained some overlapping information.

This CL combines the two tables in a way. The source position table now
maps a pc offset to a pair of {line_number, inlining_id}. If the
inlining_id is valid, then it can be used to look up the inlining stack
which is stored in inline_locations, but is now keyed by inlining_id
rather than pc offset. This also has the nice effect of de-duplicating
inline stacks which we previously duplicated.

The new structure is similar to how this data is stored by the compiler,
except that we convert 'source positions' (char offset in a file) into
line numbers as we go, because we only care about attributing ticks to
a given line.

Also remove the helper RecordInliningInfo() as this is only actually
used to add inline stacks by one caller (where it is now inlined). The
other callers would always bail out or are only called from
test-cpu-profiler.

Remove AddInlineStack and replace it with SetInlineStacks which adds all
of the stacks at once. We need to do it this way because the source pos
table is passed into the constructor of CodeEntry, so we need to create
it before the CodeEntry, but the inline stacks are not (they are part of
rare_data which is not always present), so we need to add them after
construction. Given that we calculate both the source pos table and the
inline stacks before construction, it's just easier to add them all at
once.

Also add a print() method to CodeEntry to make future debugging easier
as I'm constantly rewriting this locally.

Bug: v8:8575, v8:7719, v8:7203

Change-Id: I39324d6ea13d116d5da5d0a0d243cae76a749c79
Reviewed-on: https://chromium-review.googlesource.com/c/1392195
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58554}
2019-01-04 15:05:55 +00:00
Clemens Hammacher
f5e1353f06 [wasm] Finish compilation units from background
"Finishing" currently only means decrementing a counter and notifying
users via the callback if baseline compilation or tier-up finished.
We can totally do this from background, if we spawn foreground tasks to
actually call the callback.

R=ahaas@chromium.org

Bug: v8:7921, v8:8423
Change-Id: I815964d07a4d9111248097c41ebbd650842304c3
Cq-Include-Trybots: luci.v8.try:v8_linux64_tsan_rel
Reviewed-on: https://chromium-review.googlesource.com/c/1375662
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58547}
2019-01-04 12:25:31 +00:00
Peter Marshall
af0428aca9 [cpu-profiler] Add source positions for inlined function calls
Currently in both kCallerLineNumbers and kLeafNodeLineNumbers modes, we
correctly capture inline stacks. In leaf number mode, this is simple as
we simply add the path onto the existing tree. For caller line numbers
mode this is more complex, because each path through various inlined
function should be represented in the tree, even when there are
multiple callsites to the same function inlined.

Currently we don't correctly show line numbers for inlined functions.
We do actually have this information though, which is generated by
turbofan and stored in the source_position_table data structure on the
code object.

This also changes the behavior of the SourcePositionTable class. A
problem we uncovered is that the PC that the sampler provides for every
frame except the leaf is the return address of the calling frame. This
address is *after* the call has already happened. It can be attributed
to the next line of the function, rather than the calling line, which
is wrong. We fix that here by using lower_bound in GetSourceLineNumber.

The same problem happens in GetInlineStack - the PC of the caller is
actually the instruction after the call. The information turbofan
generates assumes that the instruction after the call is not part of
the call (fair enough). To fix this we do the same thing as above - use
lower_bound and then iterate back by one.

TBR=alph@chromium.org

Bug: v8:8575, v8:8606
Change-Id: Idc4bd4bdc8fb70b70ecc1a77a1e3744a86f83483
Reviewed-on: https://chromium-review.googlesource.com/c/1374290
Commit-Queue: Peter Marshall <petermarshall@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58545}
2019-01-04 11:12:06 +00:00
Clemens Hammacher
3512fab37d Refactor lazily initialized singletons in simulators
Use the slimmer base::LeakyObject instead of base::LazyInstance.

R=tebbi@chromium.org

Bug: v8:8600
Change-Id: I71755db9fe3ea9c61be2cdf009a006947ef5560a
Reviewed-on: https://chromium-review.googlesource.com/c/1392203
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58544}
2019-01-04 10:49:26 +00:00
Predrag Rudic
aaec5fd51e MIPS: Fix broken build
Redefinition of GetHalfStackSlot after commit 5ea59597cf.

Change-Id: Ib2b1fe6bd130c6737a73ef55b09dc80f4cd9b3fb
Reviewed-on: https://chromium-review.googlesource.com/c/1396077
Reviewed-by: Sreten Kovacevic <skovacevic@wavecomp.com>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Predrag Rudic <prudic@wavecomp.com>
Cr-Commit-Position: refs/heads/master@{#58543}
2019-01-04 10:19:06 +00:00
Clemens Hammacher
5ed7dff356 [Liftoff][ia32] Fix i64 sign extension on non-byte register
The {movsx_b} instruction can only take byte registers (or operands) as
source. Ensure that for i8 sign extensions to i64, the src register is
moved to a temporary byte register first, similar to the same operation
on i32 a few lines above.

R=ahaas@chromium.org

Bug: chromium:918149, v8:6600
Change-Id: I17bc942127baee57279a7fc0caac9d82bd7c6bfb
Reviewed-on: https://chromium-review.googlesource.com/c/1394555
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58542}
2019-01-04 10:12:06 +00:00
Mathias Bynens
214282249f [harmony] Add flat/flatMap to Array.prototype[Symbol.unscopables]
https://github.com/tc39/proposal-flatMap/issues/74
https://github.com/tc39/proposal-flatMap/pull/75

BUG=v8:7220

Change-Id: I93ce66bddbb429beaa7486311f120ec32d6a35fb
Reviewed-on: https://chromium-review.googlesource.com/c/1390125
Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
Commit-Queue: Mathias Bynens <mathias@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58537}
2019-01-04 08:12:28 +00:00
Frank Tang
3a72cd090b [Intl] Fix CHECK fail in Intl::ToLanguageTag()
Make the function return Maybe<std::string> to propagate error.

Bug: chromium:917151
Change-Id: I4330b0c54c122b1eddd3b37e21e0f387cb5d803a
Reviewed-on: https://chromium-review.googlesource.com/c/1392205
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58535}
2019-01-04 01:33:26 +00:00
Junliang Yan
bc344e38c5 PPC/s390: [ubsan] Port HeapObject to the new design
Port 9302db480e

Original Commit Message:

    Merging the temporary HeapObjectPtr back into HeapObject.

R=jkummerow@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: I4f92282b7b4c66bb73da30e076a8378e0cf24836
Reviewed-on: https://chromium-review.googlesource.com/c/1394813
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#58534}
2019-01-03 23:50:12 +00:00
Junliang Yan
643cb5f995 PPC/s390: [ubsan] Use Address parameters for calling generated code
Port 42b4180d20

Original Commit Message:

    The simulated C++ signature for generated code entry points should
    rely on primitive values (as opposed to ObjectPtr).

R=jkummerow@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: I55c67e8d42d97b45d5b0eb878ddd6ab3cf872942
Reviewed-on: https://chromium-review.googlesource.com/c/1394755
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#58533}
2019-01-03 22:39:04 +00:00
Junliang Yan
ac2a9f136e PPC/s390: Don't embed CompileLazyDeoptimizedCode
Port 71180e5447

Original Commit Message:

    This changes the CompileLazyDeoptimizedCode call to use the standard
    builtin calling sequence, which (for optimized code) creates an
    inlined off-heap trampoline instead of embedding a CODE_TARGET.

    missing only for the case of inlined trampolines.

R=jgruber@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: Ie81856899dd5d1b1e745b748ed714d98b4dab7ac
Reviewed-on: https://chromium-review.googlesource.com/c/1394806
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#58532}
2019-01-03 21:04:53 +00:00
Junliang Yan
657d979f60 PPC/s390: [ubsan] Let Runtime functions return a plain Address
Port f1cb51ad4e

Original Commit Message:

    instead of Object* (which is deprecated) or ObjectPtr (which is
    unsuitable for cases where we need to control the ABI exactly).
    Callers in generated code expect a plain tagged value, so return
    precisely that. Same for C++ Builtins.

R=jkummerow@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: I8055c9a9c99dbe8716f810c6b6cc1967bed9c3de
Reviewed-on: https://chromium-review.googlesource.com/c/1393920
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#58531}
2019-01-03 17:44:26 +00:00
Junliang Yan
9f68ab2441 PPC/s390: [nojit] Change builtin pointers to use Smis underneath
Port fa3cbf60d5

Original Commit Message:

    This changes Torque's builtin pointers to use a Smi representation
    underneath instead of storing the Code target object. Callsites look
    up the target entry point through IsolateData::builtin_entry_table.

    The notable effect of this CL is that builtin pointer calls no longer
    call any on-heap Code.

R=jgruber@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: I49bb08de916fd93e576936a56b0e1a0e21072289
Reviewed-on: https://chromium-review.googlesource.com/c/1394301
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#58530}
2019-01-03 17:43:20 +00:00
Ulan Degenbaev
731ff0b897 [heap] Add V8_NOEXCEPT annotation for GCCallbackTuple
Bug: v8:8616
Change-Id: I0998b437712037277b81eb5d04b734826aabcd46
Reviewed-on: https://chromium-review.googlesource.com/c/1391754
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58529}
2019-01-03 16:50:10 +00:00
Clemens Hammacher
9f90c8dc43 [wasm] Force GC earlier to avoid running OOM
We currently trigger a GC when creating a module while the remaining
uncommitted code space is below 32MB. For bigger modules, this is not
enough. Instead, make this limit relative: Trigger GC if we fall below
50% of the available code space, and re-adjust this limit after each GC
to avoid repeated GCs that do not free anything.

R=ahaas@chromium.org

Bug: v8:8624
Change-Id: I7abfad3b57663d528a26d29232ad6bc2dc63cef4
Reviewed-on: https://chromium-review.googlesource.com/c/1391753
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58527}
2019-01-03 16:07:53 +00:00
Georg Neis
ef29f4b9a5 [turbofan] Improve UpdateType debug output.
This is a partial reland of d3d13e4bb1, which
made an incorrect assumption about how the typer visits the graph.

Bug: chromium:906567
Change-Id: I55b70fdf7e655973e6ae33b64e127252c745517f
Reviewed-on: https://chromium-review.googlesource.com/c/1394549
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58526}
2019-01-03 16:00:43 +00:00
Junliang Yan
4812f2afdf PPC/s390: [nojit] Add a kCallBuiltinPointer call kind
Port f323a5f415

Original Commit Message:

    Currently, Torque's builtin pointers store a Code target underneath and
    callsites generate a kArchCallCodeObject opcode. When embedded builtins
    are enabled, the call thus first calls the on-heap trampoline, which
    finally jumps to the target off-heap builtin code.

    This will no longer be possible in jitless mode, since on-heap code must
    not be executable.

    As a step towards changing the way builtin pointers are called
    (function pointers will hold the builtin index as a Smi, and callsites
    look up the off-heap target address and jump there), this CL adds a
    dedicated opcode for builtin pointer calls to the compiler pipeline.

    The calling mechanism itself is unchanged, changes there will happen
    in a follow-up.

R=jgruber@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: I2d2229227e1c62e7c2515d4f5cb3d4dae49b3dd4
Reviewed-on: https://chromium-review.googlesource.com/c/1393913
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#58525}
2019-01-03 15:44:51 +00:00
Clemens Hammacher
0f8676445b [Liftoff] Use int for liftoff register codes
The number of registers is very small, so any integer type is big
enough anyway. Just use the simplest one, which is int.

R=ahaas@chromium.org

Bug: v8:6600
Change-Id: I9762a5c934848b810b7937ee603cd183f883d557
Reviewed-on: https://chromium-review.googlesource.com/c/1394548
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58524}
2019-01-03 15:29:50 +00:00
Junliang Yan
3bf55e7889 PPC: fix offset overflow and dcheck failure
R=joransiu@ca.ibm.com

Change-Id: I0587b286f3132347172f353cbce405158ef1c403
Reviewed-on: https://chromium-review.googlesource.com/c/1393910
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#58523}
2019-01-03 14:53:31 +00:00
Clemens Hammacher
20b6330037 [Liftoff] Keep consistent register mapping in non-merged regions
We currently de-duplicate used registers also in regions which do not
need merging. In those regions though it can never happen that we need
to pass different values from any merge input. Apart from introducing
unnecessary register moves, this also causes a DCHECK to fail, because
we might later want to merge back different registers into one.

Assume this initial stack state (where each letter is a register):
[A B B C]
If in any child block the two Bs get de-duplicated so something like
[A B D C]
then we run into trouble when merging back this state into the parent
state, because both B and D would need to be put into B.
In this case we can statically infer that B and D must hold the same
value anyway, but having this situation does not make much sense in the
first place, so the DCHECK fires correctly.

R=titzer@chromium.org

Bug: v8:8423, chromium:917412
Change-Id: I24c36b062e04a134cf7051725afab98126753f31
Reviewed-on: https://chromium-review.googlesource.com/c/1392190
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58522}
2019-01-03 14:37:48 +00:00
Clemens Hammacher
14faced4c0 [Liftoff] Fix moving stack values
On x64 the {kScratchRegister} cannot be held in a {LiftoffRegister},
since it is not a valid cache register. Also, the code unnecessarily
checked whether there is an unused cache register, but then didn't use
it. Simplify the logic to always use the scratch register, just
distinguish between 4-byte and 8-byte moves.
On ia32 we did not move 64-bit values correctly if we didn't have
unused registers and needed to move via the stack.

R=titzer@chromium.org

Bug: v8:6600, chromium:917588, chromium:917450
Change-Id: I0bbe946c6ac8fca62f85711ae47afdac9c02ae6b
Reviewed-on: https://chromium-review.googlesource.com/c/1391755
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58521}
2019-01-03 14:25:47 +00:00
Georg Neis
09ca8f76f6 Revert "[turbofan] Improve UpdateType debug output."
This reverts commit d3d13e4bb1.

Reason for revert: Makes an incorrect assumption.

Original change's description:
> [turbofan] Improve UpdateType debug output.
> 
> R=​jarin@chromium.org
> 
> Bug: chromium:906567
> Change-Id: Ic99c7a240ecb37c7b032b388f604d3f256d335b3
> Reviewed-on: https://chromium-review.googlesource.com/c/1392196
> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
> Commit-Queue: Georg Neis <neis@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58497}

TBR=jarin@chromium.org,neis@chromium.org

Change-Id: I1bfc6d38f1c6cb67ef403d8be84070aa2c0effb6
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: chromium:906567
Reviewed-on: https://chromium-review.googlesource.com/c/1394546
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58519}
2019-01-03 13:05:01 +00:00
Clemens Hammacher
4339f5f179 [base] Refactor STATIC_CHAR_VECTOR into a template
Templates are nicer than macros, and in this case it's not more complex.

R=tebbi@chromium.org

Bug: v8:8562
Change-Id: I3aea7b4138f144166418c0827dd7c58ea459c670
Reviewed-on: https://chromium-review.googlesource.com/c/1392200
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58518}
2019-01-03 12:55:15 +00:00
Clemens Hammacher
0b25bbbe5f Remove deprecated 'throw()' specifier
This specifier is deprecated and will be removed in C++20. Replace it
with V8_NOEXCEPT where is makes sense and remove it otherwise. Also
remove redundant constructors.

R=tebbi@chromium.org

Bug: v8:8562
Change-Id: I1335dcac5cac14b62b655cfd507decd4de653043
Reviewed-on: https://chromium-review.googlesource.com/c/1392204
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58517}
2019-01-03 12:54:10 +00:00
Clemens Hammacher
5ea59597cf [Liftoff] Remove all computation of "half indexes"
Instead, always pass an index and an enum pointing to either half.

R=titzer@chromium.org

Bug: v8:6600, v8:8562
Change-Id: I7e73bd97bfc7ebf644b242980aa0a73cd5f18949
Reviewed-on: https://chromium-review.googlesource.com/c/1392189
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58516}
2019-01-03 12:09:09 +00:00
Mythri
fa844bdbee Set the correct scope when initializing parameters.
If the parameter list contains class declarations we should use the
block scope corresponding to the class when rewriting the initializers.

Bug: chromium:917988
Change-Id: I7fcd44a264b7c0113cbd821b759e0bee6c9345a0
Reviewed-on: https://chromium-review.googlesource.com/c/1392240
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Mythri Alle <mythria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58515}
2019-01-03 10:18:11 +00:00
Clemens Hammacher
84bda68fff [Liftoff][mips] Clean up "half stack slot" accesses
Bring mips in line with the ia32 and arm implementions. Instead of
computing the "half index" manually, pass the index and an enum
pointing to either half.

R=titzer@chromium.org

Bug: v8:6600
Change-Id: Id8812114df84fbddd4aa2570306526d291bface6
Reviewed-on: https://chromium-review.googlesource.com/c/1392188
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58514}
2019-01-03 10:02:57 +00:00
Clemens Hammacher
26a78061af Remove trap handler fallback for sanitizers
Since https://crrev.com/c/1335572, our sanitizers allow to set custom
segfault handlers. Thus remove special code that was added to handle
sanitizers that prevent installation of segfault handlers. Instead,
CHECK that the signal handler was installed correctly.

R=ahaas@chromium.org, mseaborn@chromium.org, mark@chromium.org

Bug: chromium:830894
Change-Id: I3bd66e33efdceb3e8469f3f4a09fbde90cb3d7ec
Reviewed-on: https://chromium-review.googlesource.com/c/1392199
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58513}
2019-01-03 09:53:17 +00:00
Leszek Swirski
00a2481a24 [ignition] Move destructuring assignments to bytecode generation
Instead of de-sugaring destructuring assignment in the parser (using the
pattern rewriter), pass the Object/ArrayLiterals through to the bytecode
generator, which can desugar them in-place.

This allows us to decrease the amount of AST node creation, and improve
the generated bytecode using domain-specific knowledge. As a side effect
we partially fix an old execution ordering spec bug.

Currently only implemented for assignments, not declarations, as the
latter has some additional complexity.

Bug: v8:4951
Change-Id: I3d69d232bea2968ef20df68a74014d9e05808cfe
Reviewed-on: https://chromium-review.googlesource.com/c/1375660
Commit-Queue: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58512}
2019-01-03 09:41:27 +00:00
Frank Tang
74d00a9b34 [Intl] Implement ApplyOptionsToTag in Intl.Locale
Bug: v8:7684
Change-Id: Ibe7db0ef1baacb33d07a45234e6bda4f69e95643
Reviewed-on: https://chromium-review.googlesource.com/c/1381732
Commit-Queue: Frank Tang <ftang@chromium.org>
Reviewed-by: Jungshik Shin <jshin@chromium.org>
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58511}
2019-01-03 06:17:10 +00:00
Junliang Yan
3e7fa30ba2 PPC/s390: [builtins] Remove InternalArray and reduce InternalPackedArray constructors.
Port 640d3adf5f

Original Commit Message:

    InternalPackedArray now only has one constructor variant that expects no
    arguments (Chrome's only usage of InternalPackedArray). As such, these TFC
    builtins are no longer used and were removed:
    - InternalArrayNoArgumentConstructor_Holey
    - InternalArraySingleArgumentConstructor_Packed
    - InternalArraySingleArgumentConstructor_Holey

    On x64.release, this reduces builtins size by ~1.2KB.

R=peter.wm.wong@gmail.com, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: I46d86178c33e47acf2fb75fd3de743686641caa1
Reviewed-on: https://chromium-review.googlesource.com/c/1393825
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#58509}
2019-01-03 02:47:00 +00:00
Junliang Yan
3136b4f5ba PPC/s390: [SFI] Add support for flushing old Bytecode from SharedFunctionInfos.
Port a55803a15d

Original Commit Message:

    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.

R=rmcilroy@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=v8:8395
LOG=N

Change-Id: I4a913d318363a584d79aa6d7f4ee09f04a89bbbe
Reviewed-on: https://chromium-review.googlesource.com/c/1393824
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#58508}
2019-01-03 02:17:30 +00:00
Fabrice de Gans-Riberi
f225a474bc Add support for different host/target platform in mksnapshot.
This Mac/Fuchsia build was broken as the generated assembly file must
follow Linux-style calling conventions.

Change-Id: I05d946e77690e97f05d57a3d5ba04cd2e63fbb9d
Reviewed-on: https://chromium-review.googlesource.com/c/1377230
Commit-Queue: Fabrice de Gans-Riberi <fdegans@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Sergiy Belozorov <sergiyb@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58507}
2019-01-03 01:41:14 +00:00
Frank Tang
5182e1ad11 Revert "[Intl] Validate u extension type"
This reverts commit 8d0942499c.

Reason for revert: Cause Memory regression

TBR=gsathya@chromium.org

Original change's description:
> [Intl] Validate u extension type
>
> Fix intl402/*/ignore-invalid-unicode-ext-values
> Add tests for other valid/invalid -u- ext values.
>
> Bug: v8:7481
> Change-Id: I429effd071bb03599a1e767bb2a9e9918a91b850
> Reviewed-on: https://chromium-review.googlesource.com/c/1351307
> Commit-Queue: Frank Tang <ftang@chromium.org>
> Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58173}

TBR=cira@chromium.org,jshin@chromium.org,gsathya@chromium.org,ftang@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: v8:7481
Change-Id: Idabf2183684f264271ebe2b8c0ca10ae8e30d811
Reviewed-on: https://chromium-review.googlesource.com/c/1393499
Reviewed-by: Frank Tang <ftang@chromium.org>
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58506}
2019-01-03 01:40:09 +00:00
Sathya Gunasekaran
707bfecad0 [dict] Fix printing of dicts
These are FixedArrays, not ObjectHashTable

Change-Id: I8f5a4d8c16bc0f566719815fbea6be51b6bd8ec5
Reviewed-on: https://chromium-review.googlesource.com/c/1387864
Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58505}
2019-01-02 21:01:52 +00:00
Junliang Yan
4af9ec6a9d PPC/s390: Reland "[nojit] Remove code stubs"
Port 24e766168b

Original Commit Message:

    This is a reland of f849396c3a

    Original change's description:
    > [nojit] Remove code stubs
    >
    > All stubs have been migrated to builtins. This CL removes most related
    > code.
    >
    > Bug: v8:7777, v8:5784
    > Change-Id: I4470cfef34788e6c8e0fd5fd09e40e250d088dad
    > Reviewed-on: https://chromium-review.googlesource.com/c/1365284
    > Commit-Queue: Jakob Gruber <jgruber@chromium.org>
    > Reviewed-by: Benedikt Meurer <bmeurer@chromium.org>
    > Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
    > Reviewed-by: Michael Starzinger <mstarzinger@chromium.org>
    > Reviewed-by: Yang Guo <yangguo@chromium.org>
    > Cr-Commit-Position: refs/heads/master@{#58093}

R=jgruber@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: Ie05463245c24975804a8bb7ffdf902c70e042127
Reviewed-on: https://chromium-review.googlesource.com/c/1393302
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#58504}
2019-01-02 20:08:17 +00:00
Junliang Yan
65c11d3938 PPC/s390: [nojit] Migrate JSEntry variants to builtins
Port b89d4249c0

Original Commit Message:

    This migrates the JSEntryStub to three dedicated builtins:

    JSEntry
    JSConstructEntry
    JSRunMicrotasksEntry

    correct macro assembler method to load and store external references
    through the kRootRegister).
    kRootRegister is initialized, so we first reserve the slot and later
    load its value.

R=jgruber@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: Ib84feca5e88d032307b5fab42377c56d074faf7f
Reviewed-on: https://chromium-review.googlesource.com/c/1393296
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#58503}
2019-01-02 19:50:37 +00:00
Tobias Tebbi
554dcb70a8 [torque] infrastructore to inline macros in the IR
This CL doesn't change anything, but builds the infrastructure to inline
selected macros into the Torque IR.

Bug: v8:7793
Change-Id: Icdaa014633edfb314f9263c1a8ad84de4a9e9f97
Reviewed-on: https://chromium-review.googlesource.com/c/1392202
Commit-Queue: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Daniel Clifford <danno@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58502}
2019-01-02 19:28:45 +00:00
Clemens Hammacher
224d87d77b [Liftoff][ia32] Clean up "half stack slot" accesses
Bring ia32 in line with the arm implemention. Instead of computing the
"half index" manually, pass the index and an enum pointing to either
half.

R=titzer@chromium.org

Bug: v8:6600
Change-Id: Ia3799a42fe2b9890aa4076d2e09947380331348e
Reviewed-on: https://chromium-review.googlesource.com/c/1391758
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58501}
2019-01-02 17:49:00 +00:00
Clemens Hammacher
088bdc00e4 Store TypeCache as pointer instead of reference
Apart from being more in-line with the style guide, this allows to use
DEFINE_LAZY_LEAKY_OBJECT_GETTER for defining {TypeCache::Get}.

R=tebbi@chromium.org

Bug: v8:8562
Change-Id: I016b28624950ce9404180fc1ca1a232551f75cd0
Reviewed-on: https://chromium-review.googlesource.com/c/1392201
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58500}
2019-01-02 17:13:39 +00:00
Junliang Yan
080416f091 PPC/s390: [nojit] Explicitly pass the root register value to JSEntry
Port f7f18b0f1e

Original Commit Message:

    In preparation for converting JSEntry into a builtin. The root register
    used to be initialized by an embedded external reference, which is not
    isolate-independent. Pass in its value explicitly instead.

R=jgruber@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=
LOG=N

Change-Id: I447c880c7f840a012e53870e28e2bd3bfa552040
Reviewed-on: https://chromium-review.googlesource.com/c/1393288
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#58499}
2019-01-02 16:42:36 +00:00
Clemens Hammacher
a9468782ca Remove leaks in default page allocator
The first leak only happens if the default platform does not provide a
page allocator, which is never the case in d8. I am not sure why the
second leak was not detected so far. Anyway, this CL removes it.

R=tebbi@chromium.org

Change-Id: I215435f28a498298034e1657e7d2ebb8db8450c4
Reviewed-on: https://chromium-review.googlesource.com/c/1392197
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58498}
2019-01-02 14:40:11 +00:00
Georg Neis
d3d13e4bb1 [turbofan] Improve UpdateType debug output.
R=jarin@chromium.org

Bug: chromium:906567
Change-Id: Ic99c7a240ecb37c7b032b388f604d3f256d335b3
Reviewed-on: https://chromium-review.googlesource.com/c/1392196
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58497}
2019-01-02 14:38:01 +00:00
Vasili Skurydzin
fdc32cd222 s390x, ppc: Corrections to CallApiCallback calling convention
Related:
c6b0e12e4e [nojit] Refactor CallApiCallback calling convention
a31338aa08 PPC/s390: [nojit] Refactor CallApiCallback calling convention


Change-Id: I8f96c7b9a32ba3dde9dbbabb115d79fa36a0db46
Reviewed-on: https://chromium-review.googlesource.com/c/1380991
Reviewed-by: Junliang Yan <jyan@ca.ibm.com>
Reviewed-by: Joran Siu <joransiu@ca.ibm.com>
Commit-Queue: Junliang Yan <jyan@ca.ibm.com>
Cr-Commit-Position: refs/heads/master@{#58496}
2019-01-02 14:33:01 +00:00
Clemens Hammacher
45b1f8caaf [base] Simplify and extend VectorOf method
And use it in several places in wasm.

R=tebbi@chromium.org

Bug: v8:8562
Change-Id: I1e857baf33e99849eb32ac2c94e39d7f27b180c8
Reviewed-on: https://chromium-review.googlesource.com/c/1391757
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58495}
2019-01-02 14:20:30 +00:00
Clemens Hammacher
94ba6c6f40 Replace some LazyInstances by standard C++ methods
Introduce a LeakyObject template and use that to implement static
lazily initialized objects that never get destructed. This was done in a
hand-crafted and complex way before via LazyInstance and
LazyStaticInstance.

R=tebbi@chromium.org

Bug: v8:8600, v8:8562
Change-Id: Id160996753b2cb1baf0f4b2cec9e1727f1d01512
Reviewed-on: https://chromium-review.googlesource.com/c/1388539
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58494}
2019-01-02 12:49:18 +00:00
peterwmwong
75ca843c5c [typedarray] Check for a detached buffer before each iteration of TypedArray.p.join.
Bug: chromium:917980
Change-Id: Ia9b68f492bb9f0769dc6ee1706baf8b09de49968
Reviewed-on: https://chromium-review.googlesource.com/c/1392070
Commit-Queue: Peter Wong <peter.wm.wong@gmail.com>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58490}
2018-12-31 18:27:51 +00:00
Clemens Hammacher
65da8bf06d [wasm] Inline Pop methods for performance
This improves validation time by 7-8% and Liftoff compilation time by
2-3% while increasing binary size by ~12kB.

R=mvstanton@chromium.org

Bug: v8:8423
Change-Id: I08961097fb61f4a218522138efe51a9165a7c62b
Reviewed-on: https://chromium-review.googlesource.com/c/1391748
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58486}
2018-12-28 09:29:53 +00:00
Deepti Gandluri
29c1c5d6ca [wasm] Validate prefixed opcode reads
Identify validation fails to read the index of prefixed opcodes, and not
continue to decode the next bytes.

Change-Id: I2c737af55615ba69ba0c5f5adf18a06c6cdb951a
Bug: chromium:905815
Reviewed-on: https://chromium-review.googlesource.com/c/1390927
Commit-Queue: Deepti Gandluri <gdeepti@chromium.org>
Reviewed-by: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58485}
2018-12-28 07:07:11 +00:00
Ulan Degenbaev
7ca8acd0a5 [heap] Support fixed arrays with progress bar in the concurrent marker
Currently the concurrent marker visits any fixed array in one go
ignoring the progress bar and does not expect seeing black arrays
in the worklist. For this reason, if the main thread marker starts
visiting a large array with the progress bar, then it has to re-push
the array in the bailout worklist. So all subsequent visitations of
the array happen on the main thread.

This patch makes the progress bar thread-safe and allows the
concurrent marker to visit arrays in chunks.

Change-Id: I5e8867077ed2908b7f9c5d8bde34d0401f7fe446
Reviewed-on: https://chromium-review.googlesource.com/c/1385164
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58484}
2018-12-28 06:57:38 +00:00
Alexei Filippov
4eae3bb140 [inspector] Make InjectedScript::getProperties respect custom formatters
BUG=chromium:917136

Change-Id: I02696a3315c22b34705bbc48cddaeb9e6c59fa9f
Reviewed-on: https://chromium-review.googlesource.com/c/1391749
Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
Commit-Queue: Alexei Filippov <alph@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58482}
2018-12-27 23:17:57 +00:00
Alexei Filippov
0d0f0c51c5 Revert "[inspector] Add extra debug code to investigate crbug/897816"
This reverts commit 0fbe27171e.

Reason for revert: Debug data has been collected. Removing debug code.

Original change's description:
> [inspector] Add extra debug code to investigate crbug/897816
> 
> BUG=chromium:897816
> 
> Change-Id: Ie28efcab73ccbcb6d8b1a7508b99aec59f3a3ae3
> Reviewed-on: https://chromium-review.googlesource.com/c/1384795
> Reviewed-by: Dmitry Gozman <dgozman@chromium.org>
> Commit-Queue: Alexei Filippov <alph@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58383}

TBR=dgozman@chromium.org,alph@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Bug: chromium:897816
Change-Id: I6b2b5dae2b7e42843d72573ba598e5acfec3514b
Reviewed-on: https://chromium-review.googlesource.com/c/1390926
Reviewed-by: Alexei Filippov <alph@chromium.org>
Commit-Queue: Alexei Filippov <alph@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58481}
2018-12-27 22:54:28 +00:00
Clemens Hammacher
e2b129ea3d [liftoff][arm] Prevent aliasing in I64 Shiftops
Prevent aliasing between problematic registers for
shift operations with int64 values in the arm port
of Liftoff.

Bug: v8:6600, chromium:912592
Change-Id: I905f0a657626fdfac3e41fe2878e918e3c779a8f
Reviewed-on: https://chromium-review.googlesource.com/c/1388564
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58480}
2018-12-27 18:55:02 +00:00
Clemens Hammacher
c430bd1c4e [compiler] Avoid creating redundant register moves
They will later be detected as redundant again, but we can save memory
and performance by just not adding them in the first place.

R=mvstanton@chromium.org

Bug: v8:8423
Change-Id: I11d88642333681612e2f8f4eaee7ba700cbf64d5
Reviewed-on: https://chromium-review.googlesource.com/c/1390132
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58479}
2018-12-27 15:02:50 +00:00
Clemens Hammacher
4e9682bda6 [base] Add missing V8_NOEXCEPT annotations
This silences the new presubmit check for all base classes.

R=tebbi@chromium.org

Bug: v8:8616
Change-Id: I389fedde1b44d9c583dd2fb75e6c8af138c4feb0
Reviewed-on: https://chromium-review.googlesource.com/c/1387491
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58478}
2018-12-27 13:14:16 +00:00
Ulan Degenbaev
a71ac627f2 [heap] Add V8_NOEXCEPT annotation to LocalAllocationBuffer.
Bug: v8:8616
Change-Id: I2774bf86b3446afddb7cf269e88ba128e53ae7f6
Reviewed-on: https://chromium-review.googlesource.com/c/1390130
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58477}
2018-12-27 12:24:55 +00:00
Igor Sheludko
90698aee18 [ptr-compr] Support decompression in include/v8.h and include/v8-internal.h
Bug: v8:7703
Change-Id: I2cc5ceb7b70a9b53d5bcc90b32276c011f89ffbe
Reviewed-on: https://chromium-review.googlesource.com/c/1388530
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58476}
2018-12-27 11:07:24 +00:00
Ulan Degenbaev
030550f4ae Revert "Reland^2 "[turbofan] Use feedback when reducing global loads/stores.""
This reverts commit 2d2c137492.

Reason for revert: layout test timeout - crbug.com/917714

Original change's description:
> Reland^2 "[turbofan] Use feedback when reducing global loads/stores."
> 
> This reverts commit ac85ab0a3d. A
> chromium test caused trouble and was taken care of in
> https://chromium-review.googlesource.com/c/1384064.
> 
> Original change's description:
> > [turbofan] Use feedback when reducing global loads/stores.
> >
> > We already record the script context location or the property cell
> > as feedback of the global load/store IC, so Turbofan doesn't need
> > to do the lookups again.
> 
> TBR=sigurds@chromium.org
> 
> Change-Id: I58bcd9bceec2f9cf401f7b0fc4460a6da6cd0abc
> Reviewed-on: https://chromium-review.googlesource.com/c/1386404
> Commit-Queue: Georg Neis <neis@chromium.org>
> Reviewed-by: Georg Neis <neis@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58393}

TBR=neis@chromium.org,sigurds@chromium.org

# Not skipping CQ checks because original CL landed > 1 day ago.

Change-Id: I9003135cfc5cc3ffb8bbf06ca35c9773adac93e7
Reviewed-on: https://chromium-review.googlesource.com/c/1390129
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58475}
2018-12-27 10:05:00 +00:00
Igor Sheludko
2a6b9fe2da [cleanup][interpreter] Fix kPointerSize usages in src/interpreter/
Bug: v8:8477, v8:8562
Change-Id: Id97f5b53fe6e6a696d8955acc1ab1bc5ac2f4052
Reviewed-on: https://chromium-review.googlesource.com/c/1388527
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58474}
2018-12-27 05:01:15 +00:00
Igor Sheludko
4a44cf83b0 [cleanup][csa] Introduce Times[SystemPointer|Tagged]Size instead of TimesPointerSize
Bug: v8:8477, v8:8562
Change-Id: I54b857cdacf9360b95d64147a486a0d5fa1ffe10
Reviewed-on: https://chromium-review.googlesource.com/c/1388526
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58473}
2018-12-27 03:48:55 +00:00
Igor Sheludko
19b361e301 [cleanup][csa] Fix kPointerSize usages in CSA
Bug: v8:8477, v8:8562
Change-Id: I6ef4291ebd6c2bb6acc4b525014ec02a88d45281
Reviewed-on: https://chromium-review.googlesource.com/c/1388525
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58471}
2018-12-27 03:14:42 +00:00
Jakob Kummerow
056f927861 [ubsan] Port Object to the new design
Tbr: ahaas@chromium.org,leszeks@chromium.org,verwaest@chromium.org
Bug: v8:3770
Change-Id: Ia6530fbb70dac05e9972283781c3550d8b50e1eb
Reviewed-on: https://chromium-review.googlesource.com/c/1390116
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Alexei Filippov <alph@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58470}
2018-12-26 20:54:07 +00:00
Jakob Kummerow
444741ac11 Revert "[error] extend error stack w/ function parameters"
This reverts commit 97628eeeb9.

Reason for revert: breaks compilation in Lite mode, which does not allow overriding of certain flags. See https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket.appspot.com/8926078411629093216/+/steps/build/0/steps/compile/0/stdout.

Original change's description:
> [error] extend error stack w/ function parameters
> 
> Extend FrameArray to hold weak references to parameters for functions in
> the call stack. The goal here is to provide more metadata for postmortem
> tools (such as llnode), especially in cases of rethrowing (this will be
> particularly useful when using postmortem with promises on Node.js).
> 
> Besides postmortem, these changes allow us to print a more detailed
> stack trace for errors with parameters types (or even values), which can
> be useful since JavaScript functions can receive any number of
> parameters of any type, and having a function behave differently
> according to the number of parameters received as well as their types is
> a common pattern on JS libraries and frameworks.
> 
> R=​bmeurer@google.com, yangguo@google.com
> 
> Change-Id: Idf0984d0dbac16041f11d738d4b1c095a8eecd61
> Reviewed-on: https://chromium-review.googlesource.com/c/1289489
> Commit-Queue: Yang Guo <yangguo@chromium.org>
> Reviewed-by: Yang Guo <yangguo@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58468}

TBR=yangguo@chromium.org,bmeurer@google.com,bmeurer@chromium.org,mat@mmarchini.me

Change-Id: Ide0a434c1521ab2bbeca6821397ff63ba7d40fe5
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/1390128
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58469}
2018-12-26 19:03:45 +00:00
Matheus Marchini
97628eeeb9 [error] extend error stack w/ function parameters
Extend FrameArray to hold weak references to parameters for functions in
the call stack. The goal here is to provide more metadata for postmortem
tools (such as llnode), especially in cases of rethrowing (this will be
particularly useful when using postmortem with promises on Node.js).

Besides postmortem, these changes allow us to print a more detailed
stack trace for errors with parameters types (or even values), which can
be useful since JavaScript functions can receive any number of
parameters of any type, and having a function behave differently
according to the number of parameters received as well as their types is
a common pattern on JS libraries and frameworks.

R=bmeurer@google.com, yangguo@google.com

Change-Id: Idf0984d0dbac16041f11d738d4b1c095a8eecd61
Reviewed-on: https://chromium-review.googlesource.com/c/1289489
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58468}
2018-12-26 11:54:17 +00:00
Ulan Degenbaev
d7b08b6da2 [heap] Support concurrent marking of maps
The concurrent marker can now visit maps and mark the subset of
descriptors that a map requires.

Bug: v8:8486
Change-Id: I184442ec90a8f60c73cfe16d6e9d66f4efa92a01
Reviewed-on: https://chromium-review.googlesource.com/c/1384320
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58466}
2018-12-24 11:49:49 +00:00
Ulan Degenbaev
9a0fcfd848 [heap] Fix benign data race with string length.
Factory::NewRawOneByteString initializes the string length without
atomic accessor. This leads to data race if the string is pretenured
and black allocated because the concurrent marker loads the string
length before checking the string markbits.

This patch changes the order to check the markbits first.

Bug: v8:8579
Change-Id: Ic434f7dde9baa6264fe133499d2394c0d4cc5394
Reviewed-on: https://chromium-review.googlesource.com/c/1388542
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58465}
2018-12-24 11:00:36 +00:00
Aleksandar Rikalo
0f1b611277 [mips] InterpreterEntryTrampoline improvement
Logic is added to InterpreterEntryTrampoline to detect flushed functions,
and enter CompileLazy instead. Get the bytecode array from the function
object and load it. The bytecode array could have been flushed from the
shared function info, if so, call into CompileLazy.

This fixes:

   cctest/test-heap/TestBytecodeFlushing
   cctest/test-heap/TestOptimizeAfterBytecodeFlushingCandidate
   debugger/debug/lazy-deopt-then-flush-bytecode

[mips] Macro-assembler fix

Fix massive failing of tests after fa3cbf6.

Change-Id: Ic1978b5233eefc743fd7b020f65153630ffa281f
Reviewed-on: https://chromium-review.googlesource.com/c/1388528
Reviewed-by: Sreten Kovacevic <skovacevic@wavecomp.com>
Commit-Queue: Sreten Kovacevic <skovacevic@wavecomp.com>
Cr-Commit-Position: refs/heads/master@{#58463}
2018-12-24 10:00:07 +00:00
Aleksandar Rikalo
d7493fb1ab [mips] Fix broken build after 9302db4.
Change-Id: Ic156eefa7ee2de568a368c44eca0ba80ab8828b0
Reviewed-on: https://chromium-review.googlesource.com/c/1388567
Reviewed-by: Sreten Kovacevic <skovacevic@wavecomp.com>
Commit-Queue: Sreten Kovacevic <skovacevic@wavecomp.com>
Cr-Commit-Position: refs/heads/master@{#58462}
2018-12-24 09:57:27 +00:00
Jakob Gruber
83f70c7592 Revert "Seasonal greetings"
This reverts commit 28275cd412.

Reason for revert: Ho ho.. oh :{

Original change's description:
> Seasonal greetings
> 
> Ho ho ho.
> 
> Tbr: santa@chromium.org
> No-presubmit: true
> Change-Id: Ida950937a352f32ccf8127907f623e92332f4806
> Reviewed-on: https://chromium-review.googlesource.com/c/1390119
> Reviewed-by: Jakob Gruber <jgruber@chromium.org>
> Commit-Queue: Jakob Gruber <jgruber@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58459}

TBR=jgruber@chromium.org

Change-Id: I2f7d0a92d0af95e814a2d6cb04ceaf445d57023a
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://chromium-review.googlesource.com/c/1390121
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58460}
2018-12-24 09:44:15 +00:00
Jakob Gruber
28275cd412 Seasonal greetings
Ho ho ho.

Tbr: santa@chromium.org
No-presubmit: true
Change-Id: Ida950937a352f32ccf8127907f623e92332f4806
Reviewed-on: https://chromium-review.googlesource.com/c/1390119
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58459}
2018-12-24 09:33:33 +00:00
Jakob Gruber
0ae25272c6 [nojit] Fix noembed bot failures
noembed bots have started failing since https://crrev.com/c/1382461.

The reason was that inline_offheap_trampolines option was set to true
even in noembed builds, and the assembler tried to inline trampolines
to non-existent embedded builtins.

Tbr: sigurds@chromium.org
Bug: v8:7777
Change-Id: I483dd8b77269b8684e57f8da6e659a9648b1657b
Reviewed-on: https://chromium-review.googlesource.com/c/1390117
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58458}
2018-12-24 08:47:41 +00:00
Bill Budge
fc479d516b [api] Change Wasm ModuleCompiled notification
- Removes ModuleCompiledCallback typedef and Set function.
- Adds WasmStreaming::Client abstraction and Set function.

Bug: chromium:719172
Change-Id: I8a207b628394a7660bda73cde560da1e461248a7
Reviewed-on: https://chromium-review.googlesource.com/c/1377450
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Commit-Queue: Bill Budge <bbudge@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58454}
2018-12-21 23:32:29 +00:00