Commit Graph

43622 Commits

Author SHA1 Message Date
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
Adam Klein
644b26e684 [parser] Remove dead BuildIteratorClose() method
Presumably this was obsoleted when this functionality moved to
the BytecodeGenerator.

Change-Id: I691fdaa01610ea050511825b5ad1f3ba4963421c
Reviewed-on: https://chromium-review.googlesource.com/c/1387991
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Commit-Queue: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58453}
2018-12-21 20:55:57 +00:00
Adam Klein
a70e537272 [d8] Remove unnecessary calls to v8::Global::Reset() in Realm teardown
Change-Id: Id4f99539b8583cef56fd33d2e939a2d6024384f9
Reviewed-on: https://chromium-review.googlesource.com/c/1387989
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Commit-Queue: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58452}
2018-12-21 20:54:51 +00:00
Sathya Gunasekaran
646051f901 [class] Remove unncessary check for private field
A computed property can never be a private field. That's a SyntaxError.

Change the check to a DCHECK.

Bug: v8:5368
Change-Id: I6701b60f3193639f3ccffacda25074d32d5de5b8
Reviewed-on: https://chromium-review.googlesource.com/c/1385267
Reviewed-by: Mythri Alle <mythria@chromium.org>
Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58451}
2018-12-21 19:56:17 +00:00
Adam Klein
f88d169e51 [cleanup] Remove redundant DONT_ENUM arguments to SimpleInstallFunction
Change-Id: I8292b10afd2494199b5db11a5e3d64912cff919b
Reviewed-on: https://chromium-review.googlesource.com/c/1387988
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58450}
2018-12-21 17:26:41 +00:00
Adam Klein
c969a81be8 [cleanup] Remove unneeded grouping of context fields
NATIVE_CONTEXT_IMPORTED_FIELDS are no longer different from other
NATIVE_CONTEXT_FIELDS, so this CL joins them together.

While doing so, removed the OBJECT_VALUE_OF slot, which is not
referenced anywhere.

Change-Id: I79c46e6e6cc92c90e90e68165cf7b0ae31e8151d
Reviewed-on: https://chromium-review.googlesource.com/c/1387631
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58449}
2018-12-21 17:19:41 +00:00
Adam Klein
43fff3d7b1 [runtime] Remove %AddNamedProperty and %AddElement
%AddNamedProperty was only used by regression tests, and is easily
replaced by Object.defineProperty (or deleted, in the case of a
cctest that was designed to test it directly).

%AddElement was unused (probably due to the death of array.js).

Bug: v8:7624
Change-Id: Icc17fd7a7419aa649275414a351f176f104040e2
Reviewed-on: https://chromium-review.googlesource.com/c/1387990
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58448}
2018-12-21 16:56:12 +00:00
Adam Klein
ceaaaf14a2 [ast] Remove dead code identified by coverage reports
Change-Id: I8283ddf96dc178f12e52d9412db1858acfe46650
Reviewed-on: https://chromium-review.googlesource.com/c/1387966
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Commit-Queue: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58447}
2018-12-21 16:55:08 +00:00
Maya Lekova
9bb78e3279 Revert "[parser] Create arrow function scopes while parsing the head"
This reverts commit 3411e7c3e8.

Reason for revert: Breaks test expecations - https://ci.chromium.org/p/chromium/builders/luci.chromium.try/linux_chromium_rel_ng/260731

Original change's description:
> [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 CL additionally fixes arrow function name inferring.
> 
> Change-Id: Ie3e5ea778f3d7b84b2a10d4f4ff73931cfc9384a
> Reviewed-on: https://chromium-review.googlesource.com/c/1386147
> Reviewed-by: Igor Sheludko <ishell@chromium.org>
> Commit-Queue: Toon Verwaest <verwaest@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58405}

TBR=ishell@chromium.org,verwaest@chromium.org

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

Change-Id: I8f31b96f844f0673364bf435fa6c809e40d62fa3
Reviewed-on: https://chromium-review.googlesource.com/c/1388541
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58446}
2018-12-21 16:09:25 +00:00
Toon Verwaest
84bad8ec6f [parser] Minor simplification to for in/of scope handling
Always pass in the target scope for the body, and check whether we're in
LexicalVariableMode instead to distinguish for(let/const from for(var.

Change-Id: Idf59423466f45eebe7c9d716f8eb6ccd92235abc
Reviewed-on: https://chromium-review.googlesource.com/c/1388534
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58445}
2018-12-21 16:04:05 +00:00
Jakob Gruber
9365d0904e [coverage] Rework continuation counter handling
This changes a few bits about how continuation counters are handled.

It introduces a new mechanism that allows removal of a continuation
range after it has been created. If coverage is enabled, we run a first
post-processing pass on the AST immediately after parsing, which
removes problematic continuation ranges in two situations:

1. nested continuation counters - only the outermost stays alive.
2. trailing continuation counters within a block-like structure are
   removed if the containing structure itself has a continuation.

R=bmeurer@chromium.org, jgruber@chromium.org, yangguo@chromium.org

Bug: v8:8381, v8:8539
Change-Id: I6bcaea5060d8c481d7bae099f6db9f993cc30ee3
Reviewed-on: https://chromium-review.googlesource.com/c/1339119
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58443}
2018-12-21 15:29:48 +00:00
George Wort
491eff86b5 [liftoff][arm] GetUnusedRegister before Acquire
Ensure that GetUnusedRegister is always called before
acquiring the scratch register in case it is needed
for spilling the value of the used register.

Bug: v8:6600, chromium:910824
Change-Id: I93ae684ad504584807dfa6227b6af14609c6bcf5
Reviewed-on: https://chromium-review.googlesource.com/c/1387498
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58442}
2018-12-21 14:57:18 +00:00
Camillo Bruni
37273c5aac [parser] More PreParsedScopeData cleanup
- Use overflow-proof HasRemainingBytes
- Add DCHECK to catch index_ OOB in RemainingBytes

Change-Id: I65c47c42438c93c9b4673f09fed4b8ef4685f257
Reviewed-on: https://chromium-review.googlesource.com/c/1388535
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58441}
2018-12-21 14:48:56 +00:00
Jakob Gruber
ccc068d5fd [nojit] Skip the on-heap trampoline for builtin calls
This CL does two things:

1. It introduces Call/JumpCodeObject as the bottleneck for all calls
   to non-heap-constant Code objects; and
2. it dispatches directly to the off-heap entry point for all embedded
   code.

Codegen at runtime remains unchanged to preserve the shorter,
branch-less calling sequence.

Bug: v8:7777
Change-Id: I15fdcb51625209904c6a56737f085a23219319b9
Reviewed-on: https://chromium-review.googlesource.com/c/1382461
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58440}
2018-12-21 14:43:16 +00:00
Ulan Degenbaev
5fc0b46622 [snapshot, heap] Move clearing of marked descriptors to deserializer
Since code serializer also serializers descriptor arrays, the clearing
has to be done in deserializer.

Bug: v8:8486
Change-Id: Ic2c5848e5add80176a6f7191c56e7af9e9a6019f
Reviewed-on: https://chromium-review.googlesource.com/c/1388532
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58439}
2018-12-21 14:41:36 +00:00
Ulan Degenbaev
6c740734c4 [heap] Add a regression test for v8:8617
This also adjusts debug printing of descriptor arrays and adds a check
to the code serializer.

Bug: v8:8617
Tbr: mlippautz@chromium.org
Change-Id: Ic04f01abf9f7ed5a310b9e51a22c04fda108f563
Reviewed-on: https://chromium-review.googlesource.com/c/1387501
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58438}
2018-12-21 14:38:36 +00:00
Sigurd Schneider
2a72b8acee Reland "[deoptimizer] Refactor GenerateDeoptimizationEntries"
This is a reland of f63a657ed9

Original change's description:
> [deoptimizer] Refactor GenerateDeoptimizationEntries
>
> This reduces preprocessor-expanded source size by 64,359 from
>
> gen         (   21 files):    71,570 to    1,613,100 (   23x)
> src         (  624 files):   367,830 to   52,964,659 (  144x)
> test        (  392 files):   490,924 to   37,360,916 (   76x)
> third_party (  432 files):   239,085 to    9,547,902 (   40x)
> total       ( 1521 files): 1,184,093 to  102,461,098 (   87x)
>
> to
>
> gen         (   21 files):    71,570 to    1,613,100 (   23x)
> src         (  624 files):   367,837 to   52,919,005 (  144x)
> test        (  392 files):   490,924 to   37,342,211 (   76x)
> third_party (  432 files):   239,085 to    9,547,902 (   40x)
> total       ( 1521 files): 1,184,100 to  102,396,739 (   86x)
>
> Bug: v8:8562
> Change-Id: Iee474e22ababa1e080b8d6359af4d0076903e59a
> Reviewed-on: https://chromium-review.googlesource.com/c/1384091
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
> Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58424}

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

Bug: v8:8562
Change-Id: I7a8a350414941f49c6155ff43e36e0cb0b2006e5
Reviewed-on: https://chromium-review.googlesource.com/c/1387497
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58437}
2018-12-21 14:30:17 +00:00
Maya Lekova
af6ba3b28c Revert "[parser] Simplify ParseFunctionBody"
This reverts commit 2963f1b2e3.

Reason for revert: Speculative revert, possibly causing timeout in layout test https://ci.chromium.org/p/chromium/builders/luci.chromium.ci/WebKit%20Linux%20Trusty%20MSAN/11631

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}

TBR=ishell@chromium.org,verwaest@chromium.org

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

Change-Id: I0ab903df5caaadff56625e9b46b03981c8a9b930
Reviewed-on: https://chromium-review.googlesource.com/c/1388524
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Commit-Queue: Maya Lekova <mslekova@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58436}
2018-12-21 13:19:51 +00:00
Clemens Hammacher
893ef74101 [Liftoff] Improve merge state initialization
Before computing the merge state, compute the list of free registers.
This list is used when we need a register for ensuring single register
use. It avoids picking a register which is in use by a not-yet-visited
merge slot, which would then have to be moved to another register or to
the stack.

On epic, this saves ~10.5% generated code size in Liftoff.

R=herhut@chromium.org

Bug: v8:8423
Change-Id: If9fac24abbfe2273bf18d9cb287c7c05a59b2118
Reviewed-on: https://chromium-review.googlesource.com/c/1387488
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Stephan Herhut <herhut@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58435}
2018-12-21 13:18:46 +00:00
Toon Verwaest
448239db9c [parser] Parse declarations in the scope that they belong in ParseForStatement
That way we can drop PatternRewriter::scope_ and just use parser_->scope()
instead.

Change-Id: I66137d3ff8e7b805afc7108fd2d55537f69f11e6
Reviewed-on: https://chromium-review.googlesource.com/c/1387500
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58432}
2018-12-21 12:36:45 +00:00
Clemens Hammacher
70b6439596 [wasm] Add missing V8_NOEXCEPT annotations
This silences the new presubmit check for the whole src/wasm directory.

This change uncovered that MSVC is a bit behind with noexcept annotations
on standard containers. This makes all implicit constructors and
assignment operators noexcept(false) if the class contains any standard
container.
Thus disable noexcept on MSVC for now.

R=tebbi@chromium.org
CC=marja@chromium.org

Bug: v8:8616, v8:7999
Change-Id: Ica86ac84a5b8a835dcea9b783c7987d9b850241a
Reviewed-on: https://chromium-review.googlesource.com/c/1386869
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58430}
2018-12-21 12:22:55 +00:00
Clemens Hammacher
2c2a6bb0f8 [Liftoff] Use SmallVector for storing cache state
This replaces another use of std::vector. Stack states (consisting of
locals plus operand stack) are also typically small, thus optimize for
those cases.
Using StackVector as part of CacheState requires the definition of move
constructors and copy constructors, plus a few other methods.

R=tebbi@chromium.org

Bug: v8:8423
Change-Id: I5d39c1ebc4d6d65e4849dd06c556114cd2cd36ff
Reviewed-on: https://chromium-review.googlesource.com/c/1380053
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58429}
2018-12-21 12:17:15 +00:00
Camillo Bruni
c6ffff9dea [parser] Minor cleanup PreParsedScopeDataBuilder
- Mark Serialize method as non-virtual
- Use simple scheme to mask out bytes when de-/serializing Uint32

- Improve ByteArray::ByteArrayPrint method

Drive-by-fix: 
Change-Id: I9a6779587c0a031bcf23e4f431d17026b83a808d
Reviewed-on: https://chromium-review.googlesource.com/c/1387493
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58428}
2018-12-21 12:03:28 +00:00
Toon Verwaest
6679fd2ecf [parser] Clean up Parser::DeclareVariable and use in the pattern rewriter
Change-Id: I9446a73bb47b11e2d161a4678638b7618ce52b9a
Reviewed-on: https://chromium-review.googlesource.com/c/1387490
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58427}
2018-12-21 12:02:23 +00:00
Igor Sheludko
d183d42fe7 [cleanup][x64] Final set of x64-specific kPointerSize fixes
Bug: v8:8477, v8:8562
Change-Id: I28a8244ef22035db85b520d86aa6d5578c7c7f5d
Reviewed-on: https://chromium-review.googlesource.com/c/1384309
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58426}
2018-12-21 11:52:43 +00:00
Sigurd Schneider
4b4175d7ff Revert "[deoptimizer] Refactor GenerateDeoptimizationEntries"
This reverts commit f63a657ed9.

Reason for revert: breaks compile on lite mode:

https://logs.chromium.org/logs/v8/buildbucket/cr-buildbucket.appspot.com/8926535782549686576/+/steps/build/0/steps/compile/0/stdout


Original change's description:
> [deoptimizer] Refactor GenerateDeoptimizationEntries
> 
> This reduces preprocessor-expanded source size by 64,359 from
> 
> gen         (   21 files):    71,570 to    1,613,100 (   23x)
> src         (  624 files):   367,830 to   52,964,659 (  144x)
> test        (  392 files):   490,924 to   37,360,916 (   76x)
> third_party (  432 files):   239,085 to    9,547,902 (   40x)
> total       ( 1521 files): 1,184,093 to  102,461,098 (   87x)
> 
> to
> 
> gen         (   21 files):    71,570 to    1,613,100 (   23x)
> src         (  624 files):   367,837 to   52,919,005 (  144x)
> test        (  392 files):   490,924 to   37,342,211 (   76x)
> third_party (  432 files):   239,085 to    9,547,902 (   40x)
> total       ( 1521 files): 1,184,100 to  102,396,739 (   86x)
> 
> Bug: v8:8562
> Change-Id: Iee474e22ababa1e080b8d6359af4d0076903e59a
> Reviewed-on: https://chromium-review.googlesource.com/c/1384091
> Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
> Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
> Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58424}

TBR=ulan@chromium.org,jarin@chromium.org,sigurds@chromium.org

Change-Id: I06e6f95255a3cea6a428713e9e841781425dffe8
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:8562
Reviewed-on: https://chromium-review.googlesource.com/c/1387494
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58425}
2018-12-21 10:57:06 +00:00
Sigurd Schneider
f63a657ed9 [deoptimizer] Refactor GenerateDeoptimizationEntries
This reduces preprocessor-expanded source size by 64,359 from

gen         (   21 files):    71,570 to    1,613,100 (   23x)
src         (  624 files):   367,830 to   52,964,659 (  144x)
test        (  392 files):   490,924 to   37,360,916 (   76x)
third_party (  432 files):   239,085 to    9,547,902 (   40x)
total       ( 1521 files): 1,184,093 to  102,461,098 (   87x)

to

gen         (   21 files):    71,570 to    1,613,100 (   23x)
src         (  624 files):   367,837 to   52,919,005 (  144x)
test        (  392 files):   490,924 to   37,342,211 (   76x)
third_party (  432 files):   239,085 to    9,547,902 (   40x)
total       ( 1521 files): 1,184,100 to  102,396,739 (   86x)

Bug: v8:8562
Change-Id: Iee474e22ababa1e080b8d6359af4d0076903e59a
Reviewed-on: https://chromium-review.googlesource.com/c/1384091
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58424}
2018-12-21 10:45:03 +00:00
Clemens Hammacher
f62e8cde44 [wasm] Merge FallThruTo into PopControl
Since FallThruTo is often followed by PopControl, we can save a few
cache state copy operations in Liftoff by merging the two.
On epic workloads, this saves ~18% of Steal operations and ~22% of
Split operations.

R=herhut@chromium.org

Bug: v8:8423
Change-Id: I99900eaa49ae14ead6a0c08b69da2175730e077e
Reviewed-on: https://chromium-review.googlesource.com/c/1384093
Reviewed-by: Stephan Herhut <herhut@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58420}
2018-12-21 09:28:45 +00:00
Jakob Gruber
4edfaa1f39 Reland "[regexp] Escape newlines when setting [[OriginalSource]]"
This is a reland of 0e22ec737b

Original change's description:
> [regexp] Escape newlines when setting [[OriginalSource]]
> 
> This escapes LineTerminator characters in a regexp pattern when
> creating the string that will be stored in the [[OriginalSource]] slot.
> 
> As an example, the source property for all following objects will equal
> "\n" (a '\' character followed by 'n'):
> 
>   /\n/
>   new RegExp("\n")
>   new RegExp("\\n")
> 
> Bug: v8:1982, chromium:855009
> Change-Id: I3b539497a0697e3d51ec969cae49308b0b312a19
> Reviewed-on: https://chromium-review.googlesource.com/c/1384316
> Commit-Queue: Jakob Gruber <jgruber@chromium.org>
> Reviewed-by: Yang Guo <yangguo@chromium.org>
> Reviewed-by: Mathias Bynens <mathias@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58387}

Bug: v8:1982, chromium:855009
Change-Id: I1ba22395477ec37e8e8c944000f9beade1e3250b
Reviewed-on: https://chromium-review.googlesource.com/c/1386495
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58419}
2018-12-21 09:15:09 +00:00
Ulan Degenbaev
7632329076 [heap] Fix missing slots recording for DescriptorArray
This fixes a bug from 0400fc2049,
which assumed that we can set the markbits and the marked
descriptors counter independently. This does not work because
the Scavenger skips slots recording for non-black promoted objects.

The fix is to mark the descriptor array black whenever we change
the marked descriptors counter.

Bug: v8:8617, v8:8618, v8:8486
Tbr: mlippautz@chromium.org
Change-Id: I80f3488061fa648b6c81963ba802ef045d92bcc6
Reviewed-on: https://chromium-review.googlesource.com/c/1387486
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58417}
2018-12-20 23:01:05 +00:00
Sathya Gunasekaran
15a7059412 [class] Parse static private fields
Bug: v8:5368
Change-Id: I0f6edc028baf009b81612ecc4be9a70c3621bc4e
Reviewed-on: https://chromium-review.googlesource.com/c/1385528
Reviewed-by: Adam Klein <adamk@chromium.org>
Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58416}
2018-12-20 20:58:43 +00:00
Adam Klein
66d26a359f [js] Move remaining Array setup code from prologue.js to bootstrapper
Also remove ImportNow() and helper runtime functions and Context methods
that are now unused.

Bug: v8:7624
Change-Id: I109b112d2147240e72eb0ed6112a267057de59cb
Reviewed-on: https://chromium-review.googlesource.com/c/1385224
Commit-Queue: Adam Klein <adamk@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58415}
2018-12-20 20:24:33 +00:00
Michael Lippautz
caec42a8df Fix DCHECK in finalizer scavenging logic
The DCHECK was overly restrictive when checking that a weak handle is
not a finalizer when hitting it through a regular scavenge processing
path.

Only happened with finalizers to unmodified API wrappers or regular
objects that were also marked as independent.

Bug: v8:8586
Change-Id: I2c2a5b21f6e8a5ddc6671f762b508ba083c04335
Reviewed-on: https://chromium-review.googlesource.com/c/1387485
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58414}
2018-12-20 20:13:03 +00:00
Adam Klein
89eb451c1f [cleanup] Add helpers/use existing ones more in bootstrapper
This CL makes several changes to bootstrapper to reduce
code verbosity:

  - Adds an InstallToStringTag helper and uses it everywhere (while
    removing now-redundant comments).
  - Reduces explicit calls to Factory::InternalizeUtf8String
    by adding some overloads of helpers and of JSObject::AddProperty.
  - Uses InstallConstant in all applicable cases.
  - Removes attributes arguments when all callers pass DONT_ENUM.

Change-Id: Ifb5f5102f5fbf89d475045270eeda78a2ee99248
Reviewed-on: https://chromium-review.googlesource.com/c/1385526
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58413}
2018-12-20 17:31:42 +00:00
Alexei Filippov
379b3e384d Fix crash in JSReceiver::GetCreationContext
It failed on the CHECK when receiver object was JSAsyncFunctionObject.

BUG=chromium:901241

Change-Id: I7ce563758185908728135005cb5ba2878fdea446
Reviewed-on: https://chromium-review.googlesource.com/c/1382822
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Alexei Filippov <alph@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58412}
2018-12-20 17:17:09 +00:00
Clemens Hammacher
9711d27b75 [compiler] Add missing V8_NOEXCEPT annotations
This silences the new presubmit check for the whole src/compiler
directory.

R=neis@chromium.org

Bug: v8:8616
Change-Id: Ib76d669861f829b4f35f9e9921b72b073300da08
Reviewed-on: https://chromium-review.googlesource.com/c/1386871
Reviewed-by: Georg Neis <neis@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58411}
2018-12-20 17:03:29 +00:00
Jakob Kummerow
9302db480e [ubsan] Port HeapObject to the new design
Merging the temporary HeapObjectPtr back into HeapObject.

Bug: v8:3770
Change-Id: I5bcd23ca2f5ba862cf5b52955dca143e531c637b
Reviewed-on: https://chromium-review.googlesource.com/c/1386492
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Michael Stanton <mvstanton@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58410}
2018-12-20 16:43:49 +00:00
Jakob Kummerow
42b4180d20 [ubsan] Use Address parameters for calling generated code
The simulated C++ signature for generated code entry points should
rely on primitive values (as opposed to ObjectPtr).

Bug: v8:3770
Change-Id: I6f6f4dc8a93c7ba46bfc7052dc4745b16e9fd62f
Reviewed-on: https://chromium-review.googlesource.com/c/1386875
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58409}
2018-12-20 15:59:57 +00:00
Clemens Hammacher
a01508e230 [wasm] Remove hack around named constructors
Avoid named constructors for Value and Control and the hack to also have
them on subclasses.
Instead, add a new template type and a constructor to create the subtype
from this template. Instead of the named constructors on the subtype,
we now create a template and initialize the subtype from the template.

R=herhut@chromium.org

Bug: v8:8562
Change-Id: I374fc4104ab1ae5769c587bdf5a4ca7f9a0a10d7
Reviewed-on: https://chromium-review.googlesource.com/c/1382454
Reviewed-by: Stephan Herhut <herhut@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58408}
2018-12-20 15:33:27 +00:00
Toon Verwaest
3411e7c3e8 [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 CL additionally fixes arrow function name inferring.

Change-Id: Ie3e5ea778f3d7b84b2a10d4f4ff73931cfc9384a
Reviewed-on: https://chromium-review.googlesource.com/c/1386147
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58405}
2018-12-20 14:42:48 +00:00
Ross McIlroy
1482644474 [Flags] Enable bytecode flushing for --future.
BUG=v8:8395

Change-Id: Ibf97962f1bdfa5c83cd228569c88abcf9d0a7c51
Reviewed-on: https://chromium-review.googlesource.com/c/1386487
Reviewed-by: Mythri Alle <mythria@chromium.org>
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58402}
2018-12-20 13:47:49 +00:00
Jakob Kummerow
0604031eb1 [objects.h splitting] Move HeapObject to heap-object.h
This does not include moving function definitions from objects-inl.h
to heap-object-inl.h, because that would be messy for no immediate
benefit.
This is in preparation for merging HeapObjectPtr into HeapObject.

Bug: v8:5402
Change-Id: Id170d9cac8ebabb2876b85bad29ce90fe02d842d
Reviewed-on: https://chromium-review.googlesource.com/c/1386491
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58401}
2018-12-20 13:36:10 +00:00
Camillo Bruni
bec6442117 [interpreter] Reduce ExpressionResultScope size
- Reduce ExpressionResultScope size by reusing accessing the generator
  from its RegisterAllocationScope member
- Mark the ExpressionResultScope destructor non-virtual since there are
  no destructors in subclasses

Change-Id: I3abe1856c091100217c668cd6bd5e7fd96eb8397
Reviewed-on: https://chromium-review.googlesource.com/c/1386485
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58398}
2018-12-20 13:16:30 +00:00
Michael Achenbach
cd5f5937cd Revert "[regexp] Escape newlines when setting [[OriginalSource]]"
This reverts commit 0e22ec737b.

Reason for revert: Breaks layout tests:
https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8-Blink%20Linux%2064/28814

Original change's description:
> [regexp] Escape newlines when setting [[OriginalSource]]
> 
> This escapes LineTerminator characters in a regexp pattern when
> creating the string that will be stored in the [[OriginalSource]] slot.
> 
> As an example, the source property for all following objects will equal
> "\n" (a '\' character followed by 'n'):
> 
>   /\n/
>   new RegExp("\n")
>   new RegExp("\\n")
> 
> Bug: v8:1982, chromium:855009
> Change-Id: I3b539497a0697e3d51ec969cae49308b0b312a19
> Reviewed-on: https://chromium-review.googlesource.com/c/1384316
> Commit-Queue: Jakob Gruber <jgruber@chromium.org>
> Reviewed-by: Yang Guo <yangguo@chromium.org>
> Reviewed-by: Mathias Bynens <mathias@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58387}

TBR=yangguo@chromium.org,jgruber@chromium.org,mathias@chromium.org

Change-Id: I1db7e6a0c6cd1cd995fe9f499458108e88dc8cb9
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:1982, chromium:855009
Reviewed-on: https://chromium-review.googlesource.com/c/1386493
Reviewed-by: Michael Achenbach <machenbach@chromium.org>
Commit-Queue: Michael Achenbach <machenbach@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58396}
2018-12-20 12:48:43 +00:00
Georg Neis
ada1f0d4c5 [turbofan] Simplify validity check after dependency installation.
The check was accidentally done only when a stress-flag was enabled.
Moreover, the check is actually unnecessary because the code will deopt
itself once it gets run.

Also add a DCHECK that these invalidations can only happen due to
pretenuring changes.

Bug: v8:8520
Change-Id: Ibb008f93e9e417d2f88cd5fd8fd1380db88bbb85
Reviewed-on: https://chromium-review.googlesource.com/c/1384304
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@{#58395}
2018-12-20 12:40:26 +00:00
Clemens Hammacher
f328613d04 [wasm] Fix i8 to i32 sign extension on ia32
The source register of {movsx_b} must be a byte register.

Drive-by: Add missing sign extension opcodes to wasm-constants.js.

R=herhut@chromium.org

Bug: chromium:916869
Change-Id: I571c1ea2a0e197afefc810f306eed238250cd5e0
Reviewed-on: https://chromium-review.googlesource.com/c/1386110
Reviewed-by: Stephan Herhut <herhut@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58394}
2018-12-20 12:28:54 +00:00
Georg Neis
2d2c137492 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}
2018-12-20 12:26:25 +00:00
Toon Verwaest
2963f1b2e3 [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}
2018-12-20 11:45:27 +00:00
Jakob Gruber
71180e5447 Don't embed CompileLazyDeoptimizedCode
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.

Drive-by: Add missing conditional jump handling to masm::Jump. It was
missing only for the case of inlined trampolines.

Bug: v8:7777
Change-Id: Id79a10ba99fd97c1b3351774b9ecf5adf10ee6d4
Reviewed-on: https://chromium-review.googlesource.com/c/1382460
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58389}
2018-12-20 11:31:47 +00:00
Georg Neis
b9e1f5ac34 [turbofan] Add even more debugging output for a mysterious error.
Bug: chromium:906567
Change-Id: I1c459bd5acd425f1433b6727214a8f5ed2fe0177
Reviewed-on: https://chromium-review.googlesource.com/c/1384313
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Georg Neis <neis@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58388}
2018-12-20 10:43:24 +00:00
Jakob Gruber
0e22ec737b [regexp] Escape newlines when setting [[OriginalSource]]
This escapes LineTerminator characters in a regexp pattern when
creating the string that will be stored in the [[OriginalSource]] slot.

As an example, the source property for all following objects will equal
"\n" (a '\' character followed by 'n'):

  /\n/
  new RegExp("\n")
  new RegExp("\\n")

Bug: v8:1982, chromium:855009
Change-Id: I3b539497a0697e3d51ec969cae49308b0b312a19
Reviewed-on: https://chromium-review.googlesource.com/c/1384316
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Mathias Bynens <mathias@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58387}
2018-12-20 10:12:48 +00:00
Frank Tang
12f04d8179 [Intl] Use icu::Locale as storage in JSLocale
Remove flags and all string in JSLocale
This does not change the logic of Intl.Locale constructor
but only the way we store the information.
Preparation for logic rewrite that sync with latest spec.

Bug: v8:7684
Change-Id: Ib61705eaf00e5bcf63443c55c29f0b0b61f8e4c9
Reviewed-on: https://chromium-review.googlesource.com/c/1377996
Commit-Queue: Frank Tang <ftang@chromium.org>
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58386}
2018-12-20 06:31:05 +00:00
Frank Tang
a249aa9ce3 [Intl] Change code to be idiomatic.
Follow up comments in
https://chromium-review.googlesource.com/c/v8/v8/+/1378658

Bug: v8:8468
Change-Id: I1bfcc305959e8230b08db034d99a2e6ac867775e
Reviewed-on: https://chromium-review.googlesource.com/c/1385166
Commit-Queue: Frank Tang <ftang@chromium.org>
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58384}
2018-12-20 05:41:47 +00:00
Alexei Filippov
0fbe27171e [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}
2018-12-20 01:34:11 +00:00
Adam Klein
6776944f8f Remove always-true --harmony-array-prototype-values flag
It's been enabled for several releases now.

R=gsathya@chromium.org

Change-Id: Ib1806a1373821ee542dae2fd80f639b56bd99ed9
Reviewed-on: https://chromium-review.googlesource.com/c/1384796
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Commit-Queue: Adam Klein <adamk@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58381}
2018-12-19 20:48:56 +00:00
Sathya Gunasekaran
e5e0501552 [dict] Remove HasKey from OrderedNameDictionary
Since we have FindEntry, this is redudant.

This patch also
* Makes the tests for FindEntry stricter by testing the value
* Makes the OrderedNameDictionary::Add and
  SmallOrderedNameDictionary::Add consistent by using GetHash and
  using a DCHECK for the FindEntry call

Bug: v8:6443, v8:7569
Change-Id: I4859cd6735ec385c19acad6ce5cecaeac45173dd
Reviewed-on: https://chromium-review.googlesource.com/c/1382828
Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58380}
2018-12-19 20:32:34 +00:00
Igor Sheludko
4ba29d0503 [cleanup][heap] Fix kPointerSize usages in src/heap/
Bug: v8:8477, v8:8562
Change-Id: Iaa995c8fbb9f309dadac4e308d727f628fdb8b3c
Reviewed-on: https://chromium-review.googlesource.com/c/1384314
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58379}
2018-12-19 19:58:20 +00:00
Sathya Gunasekaran
b6dfeb0d8a [dict] Use new ObjectPtr design
Bug: v8:6443, v8:7569
Change-Id: I1bcd3458c2d548d36bf2961a2faf41919c433a91
Reviewed-on: https://chromium-review.googlesource.com/c/1382829
Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58378}
2018-12-19 19:23:46 +00:00
Bruce Dawson
4bd1215c95 Workaround VS/UCRT fmod bug
Recent versions of the Windows Universal CRT changed the behavior of
fmod for when the first parameter is negative. In particular, a result
of negative zero became positive zero. This is rarely critical but it
causes test failures and may effect some JS test suites or web pages.

The fix is to modify Modulo to check for a result of 0 when the first
parameter is negative and change the result to -0. That fixes four of
the five test failures and the fifth one is fixed by comparing the
results against Modulo instead of std::fmod.

Bug: chromium:915045
Change-Id: Ia4490ec98361a37006d6c338acd33f959fa3ccea
Reviewed-on: https://chromium-review.googlesource.com/c/1383091
Commit-Queue: Bruce Dawson <brucedawson@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58377}
2018-12-19 18:05:18 +00:00
Toon Verwaest
886713e7c8 [parser] Build parameter initialization block before parsing the body
Later we want to automatically declare the parameters while parsing,
which moves the declaration before body parsing anyway. This is just
a step in that direction, making sure that it works.

Change-Id: I0645269aa26643de138848c599cfe5d1ad4bf32c
Reviewed-on: https://chromium-review.googlesource.com/c/1384319
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58376}
2018-12-19 17:54:36 +00:00
Toon Verwaest
704c050a6b [parser] Change how conflicting param and let in body declarations are detected
Now we just check for each variable declared in the parameter scope whether it
occurs as a lexical variable in the body scope. This way the preparser will
also identify them.

Bug: v8:2728, v8:5064
Change-Id: I9fd96590fa431de0656c85295fd31af9b36f2e32
Reviewed-on: https://chromium-review.googlesource.com/c/1384225
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58375}
2018-12-19 17:10:57 +00:00
Ulan Degenbaev
0400fc2049 [heap] Optimize marking of descriptor arrays.
Now a descriptor array tracks the number of descriptors that were
already marked. The marking visitor of a map only marks the subset
of the descriptors that it needs and that are not already marked.

If a descriptor array is shared between M maps and has N descriptos,
then the number of marking operations is reduced from O(M*N) to O(N).

This patch also adds a marking barrier for descriptors.

The marked descriptor counter in a descriptor array is not cleared
after mark-compact GC. Instead, it embeds two bits from the global
mark-compact epoch counter and is considered 0 if the bits do not match
the current value of the global epoch counter.

Bug: v8:8486
Change-Id: I2a7822a6833f3143e1d351e5e4819c2ef2c07fb0
Reviewed-on: https://chromium-review.googlesource.com/c/1382746
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58372}
2018-12-19 16:49:06 +00:00
Igor Sheludko
27cfcf5662 [cleanup] Fix kPointerSize usages in platform-independent src/builtins/
Bug: v8:8477, v8:8562
Change-Id: Iebb60551a461304539d943a080ce107eecf6fdbf
Reviewed-on: https://chromium-review.googlesource.com/c/1384264
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58371}
2018-12-19 16:26:25 +00:00
Sathya Gunasekaran
635f938f2a [dict] Add facade around the two different kind of dicts
OrderedNameDictionarHandler is the external API to interface with the
OrderedNameDictionary variants. This abstracts away the need for the
user to know that there are two different backing stores.

Bug: v8:6443, v8:7569
Change-Id: Ief4f0904823988e629a01060b018b4cb0291542d
Reviewed-on: https://chromium-review.googlesource.com/c/1381758
Commit-Queue: Sathya Gunasekaran <gsathya@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58369}
2018-12-19 16:04:19 +00:00
Clemens Hammacher
b534e00e38 [wasm] Deprecate reachability tracking in SsaEnv
Reachability is already being tracked in the function body decoder.
This CL adds a DCHECK that the reachability tracked in the SsaEnv
matches the reachability tracked in the function body decoder. Most of
our methods will only be called for reachable code anyway.
For exceptions, we still track reachability explicitly for now in the
wasm graph builder, this can be refactored in the future by improving
reachability tracking for catch blocks in the function body decoder.

If this DCHECK survives fuzzing for a few days, we can remove code that
handles unreachable code in graph-building-interface.cc.

R=herhut@chromium.org

Bug: v8:8423, v8:8611
Change-Id: I0fb375c99497352aad396816566883fe234ca0ac
Reviewed-on: https://chromium-review.googlesource.com/c/1384089
Reviewed-by: Stephan Herhut <herhut@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58368}
2018-12-19 15:55:39 +00:00
Dan Elphick
27d1e9f22f [cleanup] Remove TODOs now that full codegen is gone
The TODOs are wrong for now since even without full codegen, it's still
possible for it to be compiled, so this just removes them

Bug: v8:8562
Change-Id: Ia9f2539e22364b31c0b45b0408dfe434f212c72a
Reviewed-on: https://chromium-review.googlesource.com/c/1384311
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Dan Elphick <delphick@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58367}
2018-12-19 15:25:25 +00:00
Clemens Hammacher
86024575de [cleanup] Remove empty simulators for ia32 and x64
No need for empty header files and empty implementation files (which
will be compiled even though they are empty).

R=ishell@chromium.org

Bug: v8:8562
Change-Id: Icd54b0cab7dba991d11c26262deb2b034f67869e
Reviewed-on: https://chromium-review.googlesource.com/c/1384305
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58366}
2018-12-19 15:17:45 +00:00
Clemens Hammacher
bf2b5d0ba6 [cleanup] Fix include guards of simulators
The platform-specific simulators are only included on the respective
hardware, so no need to guard against other platforms.
Also, unify where the USE_SIMULATOR macro is evaluated. Make it cover
the whole implementation file.
Also, make sure to include the respective header file first, as
suggested by the style guide, and fix up includes in general.

R=ishell@chromium.org

Bug: v8:8562, v8:7490
Change-Id: Ifc6a87030364eab1e6a6fcbda008607ccd1c1f2f
Reviewed-on: https://chromium-review.googlesource.com/c/1384090
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58365}
2018-12-19 15:12:55 +00:00
Igor Sheludko
ef07980ebf [cleanup] Fix kPointerSize usages in src/compiler/
Bug: v8:8477, v8:8562
Change-Id: I0dab49a03b74abc68600885f4951c5cb727a3d73
Reviewed-on: https://chromium-review.googlesource.com/c/1366736
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58364}
2018-12-19 14:56:40 +00:00
Mythri
1ca0de67d2 [reland] Don't allocate feedback vectors and feedback metadata in lite mode
Don't allocate feedback vectors and feedback metadata in lite mode.
Also updates to skip tests that require feedback vectors.

This is a reland of
https://chromium-review.googlesource.com/c/v8/v8/+/1384087 after skipping
the failing tests.

Bug: v8:8394
Change-Id: I7766533b85a144e62996ceed8d542cdc534feeb5
Reviewed-on: https://chromium-review.googlesource.com/c/1384307
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Commit-Queue: Mythri Alle <mythria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58363}
2018-12-19 14:29:30 +00:00
Igor Sheludko
528a603711 [cleanup][x64] Fix kPointerSize usages in src/builtins/x64
Bug: v8:8477, v8:8562
Change-Id: I37361ded733d21a5814a2a23a4155d7e8b562446
Reviewed-on: https://chromium-review.googlesource.com/c/1384092
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58361}
2018-12-19 13:24:42 +00:00
Igor Sheludko
50f6baf404 [cleanup] Fix kPointerSize usages in src/wasm/
Also added != 0 for readability in checks like:
  if (FIELD_SIZE(kFooOffset) != 0) {...}

Bug: v8:8477, v8:8562
Change-Id: Ibc305103475e6ec029e89e7ad095ec0a1fa30189
Reviewed-on: https://chromium-review.googlesource.com/c/1382743
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58360}
2018-12-19 12:42:24 +00:00
Clemens Hammacher
e95be4598c [wasm] Avoid redundant {EndControl}
Many callers of {DoReturn} either already call {EndControl}, or pop
the control afterwards, hence we do not need to {EndControl}.
Hence only call {EndControl} when really needed.

R=herhut@chromium.org

Bug: v8:8423
Change-Id: Ie4e7b2dd6918cc0f9619a72d624014222f58a251
Reviewed-on: https://chromium-review.googlesource.com/c/1384085
Reviewed-by: Stephan Herhut <herhut@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58359}
2018-12-19 12:25:26 +00:00
Sigurd Schneider
4aa97de1af [conversions] Speed up double to CString conversion
This addresses most of the regression in of
Kraken's json-stringify-tinderbox-orig with
31bit Smis: Many object properties become heap
numbers, and printing an integer which is
represented as a double is slower than printing
the integer directly.

Change-Id: I9a14c4da61721b6c3f22e88145acc6a61ed4a419
Bug: v8:8344
Reviewed-on: https://chromium-review.googlesource.com/c/1382741
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58358}
2018-12-19 12:10:50 +00:00
Toon Verwaest
89a64f04d1 [parser] Eagerly throw pattern error even if we lazily throw lhs error for calls
We don't eagerly throw for assignments to calls; see v8:4480. They are simply
turned into assignments to Property instead. We need to record a declaration
error, however. Otherwise we'll end up with a Property in a declaration
context.

To reduce the scope of the lazy throwing, in this fix I record a pattern error
instead, making calls as assignment target in a destructuring assignment
context throw eagerly.

Bug: chromium:916288
Change-Id: If94a46b5d2b65c3549c641e0e19135c6c8af7a9a
Reviewed-on: https://chromium-review.googlesource.com/c/1384084
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58357}
2018-12-19 11:39:30 +00:00
Igor Sheludko
2f5817fcd2 [ptr-compr][Liftoff] Add macro operations for loading tagged pointer fields
These load operations will decompress values if pointer compression is
enabled.

Bug: v8:7703
Change-Id: I4c5cef39a735f3b03e36d27c0e5e7c21653bbbc0
Reviewed-on: https://chromium-review.googlesource.com/c/1382742
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58356}
2018-12-19 11:32:35 +00:00
Clemens Hammacher
9efa28bf00 Revert "Do not allocate feedback vectors and feedback metadata in lite mode"
This reverts commit 62e86b88e5.

Reason for revert: Fails on arm sim lite debug: https://ci.chromium.org/p/v8/builders/luci.v8.ci/V8%20Linux%20-%20arm%20-%20sim%20-%20lite%20-%20debug/1075

Original change's description:
> Do not allocate feedback vectors and feedback metadata in lite mode
> 
> Don't allocate feedback vectors and feedback metadata in lite mode.
> Also updates to skip tests that require feedback vectors.
> 
> Bug: v8:8394
> Change-Id: I22c64a32c44bb8f25fb09003d6e9fc5a04e84f8a
> Reviewed-on: https://chromium-review.googlesource.com/c/1378173
> Commit-Queue: Mythri Alle <mythria@chromium.org>
> Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
> Reviewed-by: Yang Guo <yangguo@chromium.org>
> Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58351}

TBR=rmcilroy@chromium.org,yangguo@chromium.org,mlippautz@chromium.org,mythria@chromium.org

Change-Id: I88fd37ea4e21aa2cc81eceb87ddb35c23224beae
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Bug: v8:8394
Reviewed-on: https://chromium-review.googlesource.com/c/1384087
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58355}
2018-12-19 11:31:32 +00:00
Sigurd Schneider
4ee489b8b0 [turbofan] Improve constant handling in representation change
Change-Id: I68ede2cda0441cd9a032318462fe3a085480a1dd
Bug: v8:8344
Reviewed-on: https://chromium-review.googlesource.com/c/1380111
Reviewed-by: Jaroslav Sevcik <jarin@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58354}
2018-12-19 11:22:10 +00:00
Toon Verwaest
a5f559c3f8 [parser] Change how catch is parsed
- Directly declares the special catch variable from the parser-base.
- Tracks Scope on PreParserBlock and finds conflicting lexical declarations by
  simply walking the VariableMap of the block inserted for the pattern; or the
  catch variable in case of identifier.
- This also enables throwing errors for duplicate let in the preparser. We may
  have to back that out if it breaks something.

Bug: v8:2728, v8:7828
Change-Id: Id2eea62062533eb99cd6670c42a4b1da87139008
Reviewed-on: https://chromium-review.googlesource.com/c/1382095
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58353}
2018-12-19 11:02:01 +00:00
Igor Sheludko
42afba5195 [ptr-compr][x64] Introduce bottlenecks for accessing on-heap tagged fields
and fix platform builtins.

This CL also introduces MacroAssembler::xxx_tagged() operations which
operate on potentially compressed tagged values without doing decompression.

This CL also drive-by fixes compilation failures when pointer compression is
enabled.

Bug: v8:7703
Change-Id: Id417f2a78907e8911aaa79ef404f5bcc87d9a3b8
Reviewed-on: https://chromium-review.googlesource.com/c/1382740
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58352}
2018-12-19 10:34:28 +00:00
Mythri
62e86b88e5 Do not allocate feedback vectors and feedback metadata in lite mode
Don't allocate feedback vectors and feedback metadata in lite mode.
Also updates to skip tests that require feedback vectors.

Bug: v8:8394
Change-Id: I22c64a32c44bb8f25fb09003d6e9fc5a04e84f8a
Reviewed-on: https://chromium-review.googlesource.com/c/1378173
Commit-Queue: Mythri Alle <mythria@chromium.org>
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Reviewed-by: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58351}
2018-12-19 10:30:48 +00:00
Jakob Kummerow
5ffe6c9f15 Fix std::ostream printing for ObjectPtr-derived types
Moving the declaration of operator<< from objects-printer.cc to
heap-object.h makes sure that it is visible.

Change-Id: I316db9c03a464974129b8e9c776423bb80066cdd
Reviewed-on: https://chromium-review.googlesource.com/c/1382737
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58350}
2018-12-19 09:34:25 +00:00
Sigurd Schneider
5c38b47af5 [assembler] Factor out Registers from assembler.h
This refactoring reduces the LoC after preprocessor expansion by 370,322

gen         (   21 files):    71,503 to    1,631,168 (   23x)
src         (  624 files):   367,639 to   53,231,764 (  145x)
test        (  392 files):   490,770 to   37,450,839 (   76x)
third_party (  432 files):   239,085 to    9,547,902 (   40x)
total       ( 1521 files): 1,183,681 to  102,836,194 (   87x)

gen         (   21 files):    71,503 to    1,613,222 (   23x)
src         (  624 files):   367,634 to   52,964,046 (  144x)
test        (  392 files):   490,771 to   37,366,181 (   76x)
third_party (  432 files):   239,085 to    9,547,902 (   40x)
total       ( 1521 files): 1,183,677 to  102,465,872 (   87x)

Bug: v8:8562
Change-Id: Ib4e771c37471a2ff19c5538e62c038943cc74eaf
Reviewed-on: https://chromium-review.googlesource.com/c/1382469
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Georg Neis <neis@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58349}
2018-12-19 09:18:20 +00:00
tzik
f2c2742c50 Move MicrotaskQueue-related flags to MtQ itself
This CL moves variables that control MicrotaskQueue to MtQ itself.
Namely,
 * is_running_microtasks_ and microtask_completed_callbacks_ from
   v8::internal::Isolate
 * microtasks_depth_, microtasks_suppressions_ and debug_microtask_depth_
   from v8::internal::HandleScopeImplementer.

As the current implementation has these variables one per-Isolate rather
than per-MicrotaskQueue, this is needed to have multiple MicrotaskQueues
for an Isolate.

Bug: v8:8124
Change-Id: Id63075cbfb59cf5b7f45a4184affb206400150da
Reviewed-on: https://chromium-review.googlesource.com/c/1358029
Commit-Queue: Taiju Tsuiki <tzik@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58348}
2018-12-19 08:19:20 +00:00
Andreas Haas
c6d8c75557 [wasm][cleanup] Extract processing of imported globals
The function InstanceBuilder::ProcessImports got long and hard to
understand. This CL is the third change of a series which aims at
extracting parts of ProcessImports into specialized functions.

This CL extracts the processing of imported globals into a separate
function. Aside from copying the code, I made the following changes:
* Rename {index} to {import_index}.

This CL does minimal changes to the processing of globals itself.
That code looks quite complex at the moment. Therefore I want to do
the refactoring of that code in separate CLs, so that each CL is
smaller and more understandable.

R=clemensh@chromium.org

Bug: v8:8562
Change-Id: Ie553a2c9031cef07f0b9925144c79248084e428d
Reviewed-on: https://chromium-review.googlesource.com/c/1382732
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58347}
2018-12-19 07:56:43 +00:00
Andreas Haas
0a84bc50fa [wasm][cleanup] Extract processing of imported memory
The function InstanceBuilder::ProcessImports got long and hard to
understand. This CL is the third change of a series which aims at
extracting parts of ProcessImports into specialized functions.

This CL extracts the processing of imported memory into a separate
function. Aside from copying the code, I made the following changes:
* Rename {index} to {import_index}.
* Add one `return false;` after reporting a LinkError.
  - I think it should have been this way all along.

R=clemensh@chromium.org

Bug: v8:8562
Change-Id: I34d68d7bc1013c2743a68778dfc22a2d8e1d46af
Reviewed-on: https://chromium-review.googlesource.com/c/1382731
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58346}
2018-12-19 07:44:23 +00:00
Yang Guo
ec3a603091 [debug-evaluate] check transitively called builtins
Bug: v8:8558
Change-Id: Ib179947fb1b00f32a574ae3084e3107cc264a851
Reviewed-on: https://chromium-review.googlesource.com/c/1369951
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58345}
2018-12-19 07:34:17 +00:00
tzik
b5e3fb5b5d Fix code generation failures on MIPS
On MIPS and MIPS64, UseScratchRegisterScope has only one register for the scratch register [1,2],
and TurboAssembler::CallCFunctionHelper runs out of it as fast_c_call_caller_fp_address
uses the register. That causes code generation failures.

As a workaround, this CL reduces the number of nested UseScratchRegisterScope where
the code generation is failing.

[1]: dde25872f5/src/mips/assembler-mips.cc (310)
[2]: dde25872f5/src/mips64/assembler-mips64.cc (287)

Change-Id: I0813c656cafdb09ccd6f53d51f3620385e00022f
Reviewed-on: https://chromium-review.googlesource.com/c/1379590
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Taiju Tsuiki <tzik@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58344}
2018-12-19 07:18:17 +00:00
Toon Verwaest
5c0e5a5b56 [parser] Fix late-checked destructuring pattern followed by property (2)
Now just accumulate right before we might validate a property and once we're
done, so we're guaranteed to catch all PatternErrors.

Bug: v8:8607
Change-Id: Ibc5bc7773756f4827868ca01d0f9fb0c5545e59b
Reviewed-on: https://chromium-review.googlesource.com/c/1382749
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58343}
2018-12-18 20:10:36 +00:00
Clemens Hammacher
995333da1f [base] Remove redundant DISALLOW_COPY_AND_MOVE_AND_ASSIGN
The DISALLOW_COPY_AND_ASSIGN has the same semantics, as long as you do
not explicitly add a move constructor or move assignment operator.
This CL documents this better and removes the
DISALLOW_COPY_AND_MOVE_AND_ASSIGN macro.

R=tebbi@chromium.org

Bug: v8:8562
Change-Id: I1b742ee1a106d85d59a67c90341fafec2473e925
Reviewed-on: https://chromium-review.googlesource.com/c/1382465
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58342}
2018-12-18 18:23:30 +00:00
Andreas Haas
19bc78db8d [wasm][cleanup] Extract processing of imported tables
The function InstanceBuilder::ProcessImports got long and hard to
understand. This CL is the second change of a series which aims at
extracting parts of ProcessImports into specialized functions.

This CL extracts the processing of imported tables into a separate
function. Aside from copying the code, I made the following changes:
* Rename {index} to {import_index}.
* Rename {table_num} to {table_index}.

R=clemensh@chromium.org

Bug: v8:8562
Change-Id: I37398f0c8feccae3647a7817d7d4d6d0d87fd5a9
Reviewed-on: https://chromium-review.googlesource.com/c/1382470
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58341}
2018-12-18 18:02:00 +00:00
Camillo Bruni
8c3369f9e9 [parsing] Always stack-allocate DataGatheringScopes
Avoiding malloc and unique_ptr seems to have positive effects on a
representative facebook and cnn workload.
This makes arrow functions and eager functions potentially more
expensive since the DataGatheringScope is now always stack-allocated
and only the full initialization happens conditionally.

Change-Id: Ibf1c1308a7db464f7c5d2bafd61560e4cabf0ce9
Reviewed-on: https://chromium-review.googlesource.com/c/1382733
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58340}
2018-12-18 18:00:30 +00:00
Toon Verwaest
81a11c173b [parser] Fix late-checked destructuring pattern followed by property
Otherwise the error would have been dropped between the previous
accumulate and the subsequent ValidateExpression.

Bug: v8:8607
Change-Id: I29f5d5b6887b57f4b70369ba370fe0b44b1d6798
Reviewed-on: https://chromium-review.googlesource.com/c/1382744
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Camillo Bruni <cbruni@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58339}
2018-12-18 17:52:10 +00:00
Mythri
2ea009086f Fix ObjectToString builtin to work for subclasses
When we call ObjectToString on JSValues we only looked at string tags
on the prototype map of the JSValue's value type and do not check the
tags on the JSValue's prototype chain which may be non-trivial if
subclassing is involved. For ex: if we have a class Test extend Number,
we only looked for tags on the Number prototype and not on the Test
prototype. This cl fixes the builtin to also check for these cases.


Bug: v8:7706
Change-Id: I9f0e3bb6499646bf27b92bf4fb4e9014f6efa56b
Reviewed-on: https://chromium-review.googlesource.com/c/1378176
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Mythri Alle <mythria@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58338}
2018-12-18 17:33:50 +00:00
Jakob Kummerow
81bf74341b [ubsan] Port Oddball to the new design
Bug: v8:3770
Change-Id: If88c285bf1528f03401d3a83349b61435ac79f85
Reviewed-on: https://chromium-review.googlesource.com/c/1382455
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58337}
2018-12-18 17:19:40 +00:00
Jakob Kummerow
09e4054533 [objects.h splitting] Move Oddball to oddball.h
Bug: v8:5402
Change-Id: Ib2d7b24cdcf55e3dfa8d3b1665ac565904ac2112
Reviewed-on: https://chromium-review.googlesource.com/c/1379940
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58336}
2018-12-18 17:10:40 +00:00
Jakob Kummerow
f1cb51ad4e [ubsan] Let Runtime functions return a plain Address
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.

Bug: v8:3770
Change-Id: Id12f0d9830f7caf2a16aa973b8297f70d65241f5
Reviewed-on: https://chromium-review.googlesource.com/c/1382466
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58334}
2018-12-18 17:06:21 +00:00
Georg Neis
63ce4ba47a Reland "Use CopyElements (which uses memcpy) to copy FixedDoubleArray."
This is a reland of fac6f63eb8, after
adding initialization of unused element slots.

Original change's description:
> Use CopyElements (which uses memcpy) to copy FixedDoubleArray.
>
> This improves the performance of ExtractFixedArray and
> CloneFastJSArray for double arrays, which in turn improve the
> performance of cloning double arrays with slice() or spreading.
>
> This, however, does not improve performance of spreading holey
> double arrays, because spreading needs extra work to convert
> holes to undefined.
>
> Bug: v8:7980
> Change-Id: Ib8aed74abbb0b06982a3b754e134fa415cb7de2d
> Reviewed-on: https://chromium-review.googlesource.com/c/1280308
> Reviewed-by: Michael Stanton <mvstanton@chromium.org>
> Reviewed-by: Georg Neis <neis@chromium.org>
> Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
> Commit-Queue: Hai Dang <dhai@google.com>
> Cr-Commit-Position: refs/heads/master@{#56680}

Bug: v8:7980
Change-Id: I899af60c061b9cd6eb619c247c5fc515b92e9fd7
Reviewed-on: https://chromium-review.googlesource.com/c/1382735
Commit-Queue: Georg Neis <neis@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58333}
2018-12-18 16:34:49 +00:00
Toon Verwaest
dde5e3a134 [parser] Detect duplciate lexical declarations in preparser
This changes how rewind upon preparser abort works. It now rewinds to the start
of the parameter scope. In the case of "function X(" it is before the "(". In
the case of arrow functions it's before the start of the arrow function. This
allows us to reparse the arrow function from the start so all parameters are
declared properly.

Bug: v8:2728, v8:7390
Change-Id: I1c40056a49ec198560e63cd73949a59221ee0401
Reviewed-on: https://chromium-review.googlesource.com/c/1382736
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58332}
2018-12-18 16:32:28 +00:00
Andreas Haas
68c33b29a9 [wasm][cleanup] Extract processing of imported functions
The function InstanceBuilder::ProcessImports got long and hard to
understand. This CL is the first of a series which aims at extracting
parts of ProcessImports into specialized functions.

This CL extracts the processing of imported functions into a separate
function. Aside from copying the code, I made the following changes:
* Use {enabled_} instead of a newly created WasmFeatures object.
  - I think this is more correct anyways.
* Rename {index} to {import_index}.
* Load {native_module} from {instance} for every function, instead of
  loading it once for all imports.

R=clemensh@chromium.org

Bug: v8:8562
Change-Id: I9533f302929eedd395962253c340ba35324df631
Reviewed-on: https://chromium-review.googlesource.com/c/1382467
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58331}
2018-12-18 16:27:45 +00:00
Jakob Gruber
e9a0e0e593 [nojit,x64] Tweak builtin pointer call sequence for pointer compression
This is to fix the pointer compression bot, which tests only x64.
Other 64-bit architectures will need similar work in the future.

On x64 with pointer compression, smi-untagging can be folded into the
Operand calculation since the left-shift for multiplying by
kSystemPointerSize is greater than the right-shift for untagging.

Bug: v8:7777
Change-Id: I5c46e9d3f51580341cfc3c12a7e32d17cf0b63ee
Reviewed-on: https://chromium-review.googlesource.com/c/1381452
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Igor Sheludko <ishell@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58328}
2018-12-18 15:24:36 +00:00
peterwmwong
682db7845c [typedarray] Add TA.p.toLocaleString check for a detached buffer.
Bug: chromium:915783
Change-Id: I053ee6e905a98e0aafcabcf0838ada836a05c181
Reviewed-on: https://chromium-review.googlesource.com/c/1382553
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Commit-Queue: Peter Wong <peter.wm.wong@gmail.com>
Cr-Commit-Position: refs/heads/master@{#58327}
2018-12-18 15:06:15 +00:00
Ross McIlroy
1a5d6a5384 [Compiler] Fix flaky tsan error for bytecode flushing.
The SFI's flags can be changed by the mutator while the concurrent marker is checking
the flags for bytecode flushing. None of the flag bits checked for bytecode flushing
are changed, however since they are in an int32 field TSAN will complain if any of the
other flags are changed while reading from another flag. Fix this by making the flags
use the RELAXED_INT32_ACCESSORS.

BUG=v8:8592,v8:8395

Change-Id: I5fbb4fd381c2b288abf0cd36eb0b8256e1929af6
Reviewed-on: https://chromium-review.googlesource.com/c/1382458
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58325}
2018-12-18 14:49:13 +00:00
Jakob Gruber
5308f83d6b [nojit] Skip on-heap trampoline in Invoke
This skips one level of indirection by calling the off-heap entry
point directly instead of going through the on-heap Code trampoline.

Bug: v8:7777
Change-Id: If667ea6cd6138ab1c12aa861ef441109008e4fba
Reviewed-on: https://chromium-review.googlesource.com/c/1382459
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58324}
2018-12-18 14:47:15 +00:00
Clemens Hammacher
d520e5f510 [Liftoff] Introduce SmallVector and use in some places
This CL introduces our own minimal SmallVector implementation and uses
it in several places (more might follow).
I measured that in the majority of cases, these vectors are quite small
(<= 8 elements), so we will avoid any heap allocation in those cases.

R=mstarzinger@chromium.org
CC=titzer@chromium.org

Bug: v8:8423
Change-Id: I93a26b3303a10fe1dc93186430e20333ea4970a8
Reviewed-on: https://chromium-review.googlesource.com/c/1378178
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58323}
2018-12-18 14:41:55 +00:00
Ulan Degenbaev
435af6a53c [base] Add atomic CAS operation for 16-bit integers.
The operation will be used for marking of descriptor arrays.

Bug: v8:8486
Change-Id: If73be030614e2c84c77eaeeff419c08ef34a76e9
Reviewed-on: https://chromium-review.googlesource.com/c/1382456
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58322}
2018-12-18 14:29:16 +00:00
Jakob Kummerow
f9d033de1e [ubsan] Port Cell to the new design
Bug: v8:3770
Change-Id: I24169b4564d1bdf544354b964aa22c066bc0da2b
Reviewed-on: https://chromium-review.googlesource.com/c/1380912
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Toon Verwaest <verwaest@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58320}
2018-12-18 13:38:35 +00:00
Jakob Kummerow
cd17215a2a [ubsan] Port HeapNumber to the new design
Bug: v8:3770
Change-Id: Iafde7e4514fcc803b627a4a9b3469c84b7413282
Reviewed-on: https://chromium-review.googlesource.com/c/1382453
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58319}
2018-12-18 13:37:23 +00:00
Andreas Haas
32562e91af [wasm][anyref] Implement anyref globals
This CL implements the global.get and global.set instruction for anyref
globals. This includes:

* Properly decode anyref globals.
* Add a FixedArray to WasmInstanceObject to store anyref globals.
* Initialize the FixedArray.
* Generate code for global.get and global set.

This CL does not allow to import globals yet.

R=clemensh@chromium.org

Bug: v8:7581
Change-Id: I62617409271d9b6f2253a191681189865aa1f459
Reviewed-on: https://chromium-review.googlesource.com/c/1380112
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Commit-Queue: Andreas Haas <ahaas@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58318}
2018-12-18 13:28:34 +00:00
Jakob Kummerow
54fb5e38fe [ubsan] Port PropertyCell to the new design
Bug: v8:3770
Change-Id: Ib387ecfe17a5ebaea9e6b97eff171b803da5b0d3
Reviewed-on: https://chromium-review.googlesource.com/c/1380692
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Maya Lekova <mslekova@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Alexei Filippov <alph@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58317}
2018-12-18 13:02:01 +00:00
Ross McIlroy
11a4da99d2 [Deflake] Fix data-race relating to accessing FLAG_* on worker thread during background compile
The parser object can now be created on a worker thread, therefore we shouldn't access
global FLAGs during the constructor. Instead move them to the ParseInfo constructor
and set the parser fields based on these. Also avoid accessing always_opt flags in
bytecode-flags - instead accessing it in ParseInfo and propagating to the bytecode
generator.

Also gets rid of unused kUntrustedCodeMitigations flag in UnoptimizedCompilationInfo

BUG=v8:8582

Change-Id: I6e6fdc8cc7865803cb5f334f652abc0e3e4cb3ce
Reviewed-on: https://chromium-review.googlesource.com/c/1375918
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Ross McIlroy <rmcilroy@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58316}
2018-12-18 12:49:23 +00:00
Jakob Kummerow
015203e4f8 [ubsan] Port Struct to the new design
Dropping the temporary StructPtr in the process.

Bug: v8:3770
Change-Id: I70784ede7b66b432d8438536ff0c70a51dfb7f83
Reviewed-on: https://chromium-review.googlesource.com/c/1377461
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Ben Smith <binji@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58315}
2018-12-18 12:13:52 +00:00
Jakob Kummerow
1f967aab6f Fix noembed configuration
During bootstrapping, both the kFreeSpaceMap root and the map of
actual FreeSpace objects can be nullptr, so the respective DCHECK
must be robust towards this.

Change-Id: Ic7b66b5ab40d7b1bf77c2de936e611e0836cd51f
Reviewed-on: https://chromium-review.googlesource.com/c/1382094
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58314}
2018-12-18 11:40:25 +00:00
Yang Guo
c30e65e15b [api] simplify String::WriteToUtf8.
Since we always flatten the string upfront, we don't need to
implement the the UTF8 conversion as a string visitor anymore.

R=petermarshall@chromium.org

Bug: v8:6780, v8:8605
Change-Id: I27946551d7c3742f47ac36d5c909c19a7f2b0371
Reviewed-on: https://chromium-review.googlesource.com/c/1371828
Commit-Queue: Yang Guo <yangguo@chromium.org>
Reviewed-by: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58312}
2018-12-18 11:08:04 +00:00
Jakob Kummerow
e66c6ef750 [ubsan] Port Struct subclasses, part 11
InterpreterData, Module, ModuleInfoEntry, PromiseCapability,
PromiseReaction, PrototypeInfo, StackFrameInfo

Bug: v8:3770
Change-Id: I5da03b082b1497ac68a218e26dbc702c7746bf5a
Reviewed-on: https://chromium-review.googlesource.com/c/1377460
Reviewed-by: Michael Lippautz <mlippautz@chromium.org>
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58311}
2018-12-18 11:00:23 +00:00
Clemens Hammacher
0b1b88cb22 Remove unneeded LazyInstance
We don't need that complexity for initializing a static array.

R=cbruni@chromium.org

Bug: v8:8562, v8:8600
Change-Id: I35ba00dc7a11eeff6c6eadbcb8899a697ccfb415
Reviewed-on: https://chromium-review.googlesource.com/c/1380113
Reviewed-by: Camillo Bruni <cbruni@chromium.org>
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58310}
2018-12-18 09:55:37 +00:00
Jakob Gruber
6cf1341975 Reland "[snapshot] Clear irregexp code prior to serialization"
This is a reland of 1efe6259a8

Original change's description:
> [snapshot] Clear irregexp code prior to serialization
> 
> Compiled irregexp code should be cleared unless
> FunctionCodeHandling::kKeep is passed.
> 
> Bug: v8:8572
> Change-Id: Icb74cc6e0f39a69f8383b05f1638cf0e3be1807c
> Reviewed-on: https://chromium-review.googlesource.com/c/1373773
> Commit-Queue: Jakob Gruber <jgruber@chromium.org>
> Reviewed-by: Yang Guo <yangguo@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58272}

Bug: v8:8572
Change-Id: I2dfe0c1b4419c47fe2a1916c3bc16800a30309c5
Reviewed-on: https://chromium-review.googlesource.com/c/1379937
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58308}
2018-12-18 08:35:50 +00:00
Toon Verwaest
d1b4e31bc5 [parser] Replacing ExpressionClassifier with ExpressionScope that knows what it's tracking
Since it's explicit what we're tracking, we can immediately throw errors in
certain cases, and ignore irrelevant errors. We don't need to use the
classifier itself to track "let let", since we know whether we're parsing a
"let". Errors that were previously (almost) always accumulated are now
immediately pushed to the scopes that care (parameter initialization errors).

This CL drops avoiding allocation of classified errors, at least for now, but
that doesn't affect performance anymore since we don't aggressively blacklist
anymore. Classified errors are even less likely with the more precise approach.

ParseAssignmentExpression doesn't introduce its own scope immediately, but
reuses the outer scope.

Rather than using full ExpressionClassifiers + Accumulate to separate
expressions/patterns from each other while keeping track of the overall error
state, this now uses an explicit AccumulationScope.

When we parse (async) arrow functions we introduce new scopes
that track that they may be (async) arrow functions.

We track StrictModeFormal parameters in 2 different ways if it isn't
immediately certain that it is a strict-mode formal error: Either directly on
the (Pre)ParserFormalParameters, or on the NextArrowFunctionInfo in the case
we're not yet certain that we'll have an arrow function. In the latter case we
don't have a FormalParameter object yet, and we'll copy it over once we know
we're parsing an arrow function. The latter works because it's not allowed to
change strictness of a function with non-simple parameters.

Design doc:
https://docs.google.com/document/d/1FAvEp9EUK-G8kHfDIEo_385Hs2SUBCYbJ5H-NnLvq8M/

Change-Id: If4ecd717c9780095c7ddc859c8945b3d7d268a9d
Reviewed-on: https://chromium-review.googlesource.com/c/1367809
Commit-Queue: Toon Verwaest <verwaest@chromium.org>
Reviewed-by: Adam Klein <adamk@chromium.org>
Reviewed-by: Marja Hölttä <marja@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58307}
2018-12-18 08:32:30 +00:00
Mike West
14ebea15a4 Add counter to track Date::getTimezoneOffset().
Bug: chromium:915620
Change-Id: I75579080098632639b125b2252b3ab9615c7ea95
Reviewed-on: https://chromium-review.googlesource.com/c/1379876
Reviewed-by: Yang Guo <yangguo@chromium.org>
Commit-Queue: Mike West <mkwst@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58306}
2018-12-18 08:15:10 +00:00
Frank Tang
8c3112733a [Intl] Rename position to index in Intl.Segmenter
Sync with
https://github.com/tc39/proposal-intl-segmenter/pull/55
and
https://github.com/tc39/test262/pull/1994

Bug: v8:8588
Change-Id: Ifc46779f156ea986e3dbe6a632a781bb7134112b
Reviewed-on: https://chromium-review.googlesource.com/c/1374997
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58301}
2018-12-18 05:39:35 +00:00
tzik
6065760424 Refine typings of MicrotaskQueue builtins
This updates node typings in MicrotaskQueue builtins including:
 - Use RawPtrT instead of IntPtrT for pointers.
 - Prefer CAST instead of UncheckedCast where possible.
 - Fix MachineType / MachineRepresentation values there.

Bug: v8:8124
Change-Id: Idb02ac3ae51d2e9d45920115955afb68c81c7794
Reviewed-on: https://chromium-review.googlesource.com/c/1375510
Commit-Queue: Taiju Tsuiki <tzik@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Reviewed-by: Tobias Tebbi <tebbi@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58300}
2018-12-18 04:48:47 +00:00
tzik
75bacb4a0d Reorganize parameters of Execution functions
This adds a MicrotaskQueue parameter to Execution::RunMicrotasks, and
propagate it to Invoke(). Also, reorganizes the existing and newly added
parameters into a struct.

Change-Id: Ib98009b97681fdb554c0a8d469be962aea4138bd
Reviewed-on: https://chromium-review.googlesource.com/c/1373210
Commit-Queue: Taiju Tsuiki <tzik@chromium.org>
Reviewed-by: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58299}
2018-12-18 04:17:43 +00:00
Frank Tang
cc494cd3f9 [Intl] Sync Intl.Segmenter w/ latest spec
Change the initial value of breakType to undefined
Store break type into bits
Change the algorithm

Bug: v8:6891
Change-Id: Id2cc1e90c28d92364318928fc8a377f172ebb339
Reviewed-on: https://chromium-review.googlesource.com/c/1374996
Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58298}
2018-12-17 23:00:06 +00:00
Frank Tang
f97022cff7 Reland "[Intl] Replace uloc_(to|for)Language w/ Locale API"
This is a reland of 7b744e3ae8

I cannot reproduce the problem in this reland CL. I think
the origin breakage is just due to test flakiness.
Try to reland it without changes

TBR=jshin@chromium.org

Original change's description:
> [Intl] Replace uloc_(to|for)Language w/ Locale API
>
> Bug: v8:8468
> Change-Id: Id2f8d165e5f29f429821b44def2512fe760c0a51
> Reviewed-on: https://chromium-review.googlesource.com/c/1377989
> Reviewed-by: Jungshik Shin <jshin@chromium.org>
> Reviewed-by: Sathya Gunasekaran <gsathya@chromium.org>
> Commit-Queue: Frank Tang <ftang@chromium.org>
> Cr-Commit-Position: refs/heads/master@{#58260}

Bug: v8:8468
Change-Id: I5f34d061d630d07f5c9da07f9adb1efa040d66d5
Reviewed-on: https://chromium-review.googlesource.com/c/1378658
Reviewed-by: Frank Tang <ftang@chromium.org>
Commit-Queue: Frank Tang <ftang@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58297}
2018-12-17 22:01:14 +00:00
Jakob Kummerow
cef09fef63 [ubsan] Port FreeSpace to the new design
Bug: v8:3770
Change-Id: I968bcf38bfbf3672181ac4ad6b787c0b77a89cfd
Reviewed-on: https://chromium-review.googlesource.com/c/1380911
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58295}
2018-12-17 21:32:24 +00:00
Jakob Kummerow
7f21bbc11d [ubsan] Port Foreign and Managed to the new design
Bug: v8:3770
Change-Id: Ie80ce957ff1d2bcd3596491066f6562ce0ad129a
Reviewed-on: https://chromium-review.googlesource.com/c/1380114
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Andreas Haas <ahaas@chromium.org>
Reviewed-by: Yang Guo <yangguo@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58294}
2018-12-17 20:31:45 +00:00
Jakob Kummerow
766ef168fb [objects.h splitting] Move HeapNumber to heap-number.h
Along with HeapNumberBase and MutableHeapNumber, of course.

Bug: v8:5402
Change-Id: I14a7f8052de3839cad36bb7e4ebb6da38b2ac096
Reviewed-on: https://chromium-review.googlesource.com/c/1379884
Commit-Queue: Jakob Kummerow <jkummerow@chromium.org>
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58293}
2018-12-17 17:58:09 +00:00
Clemens Hammacher
2b2a0ddeac [c++11] Replace V8_ALIGNOF by alignof
C++ introduces the {alignof} keyword, which evaluates to an integral
constant defining the alignment of the given type. This makes
{V8_ALIGNOF} redundant.

R=ulan@chromium.org

Bug: v8:8562
Change-Id: I15a4022c2c396afba96360f218d8a04b17a9a448
Reviewed-on: https://chromium-review.googlesource.com/c/1379938
Commit-Queue: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Ulan Degenbaev <ulan@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58292}
2018-12-17 16:42:59 +00:00
Jakob Gruber
9abc7dae29 Rename StubCallMode::kCallOnHeapBuiltin
The kCallOnHeapBuiltin name has gotten very confusing now
that builtins are actually off the heap (and the generated code will
directly call off-heap).

Bug: v8:7777
Change-Id: Ie14069eee2fc11ef9aec64868c50832f6138ae8f
Reviewed-on: https://chromium-review.googlesource.com/c/1379883
Reviewed-by: Clemens Hammacher <clemensh@chromium.org>
Reviewed-by: Sigurd Schneider <sigurds@chromium.org>
Reviewed-by: Leszek Swirski <leszeks@chromium.org>
Commit-Queue: Jakob Gruber <jgruber@chromium.org>
Cr-Commit-Position: refs/heads/master@{#58291}
2018-12-17 16:34:49 +00:00