Commit Graph

31092 Commits

Author SHA1 Message Date
yangguo
5a88c04741 [serializer] do not copy code if snapshot is not required to be deterministic.
Code in V8 embeds memory addresses. Upon deserialization, those addresses will
be updated anyways, so it's not important whether the serializer records those
addresses. In order to have a deterministic build, we create a copy of the code
and null out memory addresses and serialize this copy.

For the code cache, we do not care about determinism. By avoiding the copy we
can save some time spent on serialization. For the mandreel script in Octane,
this reduces the serialization time from ~85ms to ~75ms.

R=vogelheim@chromium.org

Review-Url: https://codereview.chromium.org/1991033003
Cr-Commit-Position: refs/heads/master@{#36350}
2016-05-19 08:18:00 +00:00
bradnelson
fbf58a5af1 Adding ia32 simd assembler support.
Based on assembler changes from this patch:
https://codereview.chromium.org/90643003/

BUG=https://bugs.chromium.org/p/v8/issues/detail?id=4124
R=titzer@chromium.org
LOG=N

Review-Url: https://codereview.chromium.org/1991713002
Cr-Commit-Position: refs/heads/master@{#36349}
2016-05-19 08:04:10 +00:00
clemensh
3596cac87e [wasm] Differentiate unnamed and empty names
Empty function names are allowed and are output as such, unnamed
functions or functions with no valid UTF-8 name are output as
"<WASM UNNAMED>", while the CallSite object returns null as the
function name.

R=titzer@chromium.org, yangguo@chromium.org

Review-Url: https://codereview.chromium.org/1970503004
Cr-Commit-Position: refs/heads/master@{#36348}
2016-05-19 07:54:07 +00:00
machenbach
2c95b572cc Revert of Reland changes to v8_snapshot GN build arg. (patchset #2 id:20001 of https://codereview.chromium.org/1979883002/ )
Reason for revert:
Blocks the roll again:
https://codereview.chromium.org/1993163002/

https://build.chromium.org/p/tryserver.chromium.linux/builders/chromeos_amd64-generic_chromium_compile_only_ng/builds/140169

Lets add chromeos_amd64-generic_chromium_compile_only_ng on a reland as well.

Original issue's description:
> Reland changes to v8_snapshot GN build arg.
>
> This patch re-lands #36193 with a couple of minor tweaks
> including updating the BUILD.gn file to use the new
> variable name and incorporating thakis' request to support
> cross-compiling the win snapshot from a mac.
>
> R=thakis@chromium.org, jochen@chromium.org, machenbach@chromium.org
> BUG=608596, 595653
> CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:chromeos_daisy_chromium_compile_only_ng
>
> Committed: https://crrev.com/b6168e1223d266dba1a357a921bc84ae97a1d803
> Cr-Commit-Position: refs/heads/master@{#36342}

TBR=jochen@chromium.org,thakis@chromium.org,stevenjb@chromium.org,adamk@chromium.org,dpranke@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=608596, 595653

Review-Url: https://codereview.chromium.org/1996533002
Cr-Commit-Position: refs/heads/master@{#36347}
2016-05-19 07:11:39 +00:00
littledan
7517f8776d Actually unship --intl_extra
The default value of the flag was true, so --intl_extra was not previously
unshipped. This patch sets it to false.

BUG=v8:3785
CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_noi18n_rel_ng

Review-Url: https://codereview.chromium.org/1990763003
Cr-Commit-Position: refs/heads/master@{#36346}
2016-05-19 06:44:38 +00:00
zhengxing.li
9cf93e1c6d X87: Add cmpxchg and lock instructions to x64 and ia32 {dis,}assemblers.
port 5c22cf5ae7 (r36341)

  original commit message:

BUG=

Review-Url: https://codereview.chromium.org/1990133002
Cr-Commit-Position: refs/heads/master@{#36345}
2016-05-19 05:58:55 +00:00
zhengxing.li
32ba3c91d1 X87: [Interpreter] Remove InterpreterExitTrampoline and replace with returning to the entry trampoline.
port 39738bc905 (r36310)

  original commit message:
  In order to support compiling to baseline on return we need to be able to
  return to the actual return address. With this change this is what the
  Return bytecode now does, removing the need for the
  InterpreterExitTrampoline.

  This change also removes the InterpreterNotifyDeoptXXX builtins and
  unifies FCG and Igntion to both use NotifyDeoptXXX. As part of this
  change, FullCodegenerator::State is moved to Deoptimize::BailoutState.

BUG=

Review-Url: https://codereview.chromium.org/1987053006
Cr-Commit-Position: refs/heads/master@{#36344}
2016-05-19 04:03:34 +00:00
v8-autoroll
26d94abd29 Update V8 DEPS.
Rolling v8/build to b2d15686436cdc17f67c3621c314f8d96b5b6fd9

Rolling v8/tools/clang to 996bab489f816e51dde704bd215fb3403919f07e

TBR=machenbach@chromium.org,vogelheim@chromium.org,hablich@chromium.org

Review-Url: https://codereview.chromium.org/1992113002
Cr-Commit-Position: refs/heads/master@{#36343}
2016-05-19 03:41:27 +00:00
dpranke
b6168e1223 Reland changes to v8_snapshot GN build arg.
This patch re-lands #36193 with a couple of minor tweaks
including updating the BUILD.gn file to use the new
variable name and incorporating thakis' request to support
cross-compiling the win snapshot from a mac.

R=thakis@chromium.org, jochen@chromium.org, machenbach@chromium.org
BUG=608596, 595653
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:chromeos_daisy_chromium_compile_only_ng

Review-Url: https://codereview.chromium.org/1979883002
Cr-Commit-Position: refs/heads/master@{#36342}
2016-05-19 01:06:33 +00:00
binji
5c22cf5ae7 Add cmpxchg and lock instructions to x64 and ia32 {dis,}assemblers
Review-Url: https://codereview.chromium.org/1986113004
Cr-Commit-Position: refs/heads/master@{#36341}
2016-05-19 00:56:08 +00:00
gsathya
04aa9436ce array-iterator.js: use object_get_prototype_of instead of directly accessing the proto
Instead of directly looking up Uint8Array.__proto__, to get a hold of
the TypedArray prototype, use object_get_prototype_of. This is a
functionally equivalent, but cleaner approach.

Review-Url: https://codereview.chromium.org/1990983002
Cr-Commit-Position: refs/heads/master@{#36340}
2016-05-18 21:04:27 +00:00
caitpotter88
f6865cb142 [runtime] set AsyncFunctionNext/Throw to adapt arguments
Prevent crash/UB during stack frame iteration through functions, which occurs
when debugging, when building stacktraces, etc.

Also prevents these functions from appearing in stacktraces, by unsetting the "native" flag.

BUG=v8:4483, v8:5025
R=yangguo@chromium.org, littledan@chromium.org, adamk@chromium.org

Review-Url: https://codereview.chromium.org/1990803005
Cr-Commit-Position: refs/heads/master@{#36339}
2016-05-18 20:53:40 +00:00
bryleun
dc37f6e6ab S390: Added 74 new instructions to the simulator EVALUATE code.
R=joransiu@ca.ibm.com,michael_dawson@ca.ibm.com,mbrandy@us.ibm.com,jyan@ca.ibm.com

BUG=

Review-Url: https://codereview.chromium.org/1992703004
Cr-Commit-Position: refs/heads/master@{#36338}
2016-05-18 20:13:29 +00:00
ulan
dbca1feb4e Refactor ObjectVisitor functions to not mutate the slot.
BUG=chromium:612847
LOG=N

Review-Url: https://codereview.chromium.org/1989973002
Cr-Commit-Position: refs/heads/master@{#36337}
2016-05-18 19:25:56 +00:00
jyan
a207b6400e PPC/S390: [Interpreter] Remove InterpreterExitTrampoline and replace with returning to the entry trampoline.
port 39738bc905

Original Commit Message:
  In order to support compiling to baseline on return we need to be able to
  return to the actual return address. With this change this is what the
  Return bytecode now does, removing the need for the
  InterpreterExitTrampoline.

  This change also removes the InterpreterNotifyDeoptXXX builtins and
  unifies FCG and Igntion to both use NotifyDeoptXXX. As part of this
  change, FullCodegenerator::State is moved to Deoptimize::BailoutState.

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

Review-Url: https://codereview.chromium.org/1989983002
Cr-Commit-Position: refs/heads/master@{#36336}
2016-05-18 19:25:55 +00:00
machenbach
0aa3707dc4 Revert of [heap] Do not invoke GC to make heap iterable. (patchset #5 id:80001 of https://codereview.chromium.org/1961373003/ )
Reason for revert:
Breaks https://build.chromium.org/p/client.v8/builders/V8%20Linux%20-%20gc%20stress/builds/3551

Original issue's description:
> [heap] Do not invoke GC to make heap iterable.
>
> Remove kMakeHeapIterableMask since the heap is always iterable.
>
> BUG=chromium:580959
> LOG=n
>
> Committed: https://crrev.com/7c1cac4888a248fda3fa6de3624f32a6babb37e9
> Cr-Commit-Position: refs/heads/master@{#36333}

TBR=ulan@chromium.org,yangguo@chromium.org,hpayer@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:580959

Review-Url: https://codereview.chromium.org/1987363002
Cr-Commit-Position: refs/heads/master@{#36335}
2016-05-18 19:23:07 +00:00
mlippautz
768e9c509b [heap] Replace RELOCATED_CODE_OBJECT with proper recording
Properly records entries individually instead of using the hammer that requires
visiting the whole code object during pointer updating.

BUG=chromium:612847
LOG=N

Review-Url: https://codereview.chromium.org/1994653002
Cr-Commit-Position: refs/heads/master@{#36334}
2016-05-18 18:31:42 +00:00
hpayer
7c1cac4888 [heap] Do not invoke GC to make heap iterable.
Remove kMakeHeapIterableMask since the heap is always iterable.

BUG=chromium:580959
LOG=n

Review-Url: https://codereview.chromium.org/1961373003
Cr-Commit-Position: refs/heads/master@{#36333}
2016-05-18 18:03:48 +00:00
titzer
3fef34e023 [wasm] Refactor WASM run tests to allow them to run in the interpreter too.
R=mstarzinger@chromium.org,ahaas@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1990923002
Cr-Commit-Position: refs/heads/master@{#36332}
2016-05-18 15:57:00 +00:00
nikolaos
067f90c6a2 Add posix/BUILD.gn to exec_script_whitelist
BUG=v8:5023
R=mythria@chromium.org,machenbach@chromium.org
NOTRY=true

Review-Url: https://codereview.chromium.org/1993663002
Cr-Commit-Position: refs/heads/master@{#36331}
2016-05-18 15:02:12 +00:00
littledan
29bd8286ee Use stricter type checks in Intl's bound methods
This patch ensures that Intl bound method getters can't be retargeted
to other Intl types. If that were to happen, then a RUNTIME_ASSERT
would trigger later. This patch throws a TypeError instead, as the
specification requires.

BUG=v8:4870

Review-Url: https://codereview.chromium.org/1986763003
Cr-Commit-Position: refs/heads/master@{#36330}
2016-05-18 14:57:58 +00:00
machenbach
517b659928 [gn] Port icu_use_data_file_flag in gn
BUG=chromium:474921
LOG=n
NOTRY=true

Review-Url: https://codereview.chromium.org/1988023003
Cr-Commit-Position: refs/heads/master@{#36329}
2016-05-18 14:44:38 +00:00
ivica.bogosavljevic
4a96bc2a94 Fix MIPS64 compilation issue with GN build system
NOTRY=true

Review-Url: https://codereview.chromium.org/1995473002
Cr-Commit-Position: refs/heads/master@{#36328}
2016-05-18 14:44:37 +00:00
yangguo
2b60b3580e [serializer] cosmetic changes to SerializerReference.
R=vogelheim@chromium.org

Review-Url: https://codereview.chromium.org/1991793002
Cr-Commit-Position: refs/heads/master@{#36327}
2016-05-18 14:39:42 +00:00
mythria
b498f0c93b [Interpreter] Removes failure expectation for gc related blink_tests.
Updates blink_tests/TestExpecations by removing failure expectation for
gc related tests. These tests are modified to work with ignition by
the following cls:
https://codereview.chromium.org/1972943002/
https://codereview.chromium.org/1950613005/

BUG=v8:4280,chromium:595672
LOG=N

Review-Url: https://codereview.chromium.org/1985673002
Cr-Commit-Position: refs/heads/master@{#36326}
2016-05-18 14:15:39 +00:00
mstarzinger
6046e4a10a [turbofan] Remove verbose escape analysis helper methods.
This is a pure refactoring that removes unnecessary wrapper methods from
the EscapeAnalysis class. This completely removes the notion of "Alias"
from the interface.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1989243002
Cr-Commit-Position: refs/heads/master@{#36325}
2016-05-18 14:05:50 +00:00
mstarzinger
d5aa995e3c [turbofan] Make escape analysis non-experimental.
This promotes the escape analysis from an experimental feature to be a
fully supported feature. The main goal is to unleach ClusterFuzz on the
implementation so that we can stabilize it.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1989833002
Cr-Commit-Position: refs/heads/master@{#36324}
2016-05-18 13:51:01 +00:00
jyan
246d5bba8f PPC/S390: Fix %FunctionGetName and %_ClassOf for bound functions.
port 8e303dd0b3

R=bmeurer@chromium.org, yangguo@chromium.org, joransiu@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com
BUG=v8:5010

Review-Url: https://codereview.chromium.org/1986343002
Cr-Commit-Position: refs/heads/master@{#36323}
2016-05-18 13:48:28 +00:00
mstarzinger
84a8e817a5 [turbofan] Hide escape analysis internals from interface.
This is pure refactoring that moves many internal details of the escape
analysis from the header into the compilation unit. The goal of this is
to simplify the interface for readability.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1991723003
Cr-Commit-Position: refs/heads/master@{#36322}
2016-05-18 13:45:45 +00:00
cbruni
e4c3be5af3 [keys] KeyAccumulator cleanups
Move most of JSReceiver::GetKeys to the KeyAccumulator

BUG=

Review-Url: https://codereview.chromium.org/1989263002
Cr-Commit-Position: refs/heads/master@{#36321}
2016-05-18 13:43:08 +00:00
akos.palfi
233ca4cee3 MIPS64: Make GCC happy.
BUG=

Review-Url: https://codereview.chromium.org/1987253002
Cr-Commit-Position: refs/heads/master@{#36320}
2016-05-18 13:30:31 +00:00
machenbach
64a518fa8e [gn] Make gyp include dirs equal to gn
BUG=chromium:474921
LOG=n

Review-Url: https://codereview.chromium.org/1989193002
Cr-Commit-Position: refs/heads/master@{#36319}
2016-05-18 12:02:05 +00:00
yangguo
735fa0c478 [serializer] prepare attached references for general use.
Currently attached references are only used for global proxy, source
string and code stubs. Mid-term future we want to use attached
references for arbitrary objects (in fixed order) provided from outside.

This change renames BackReference to SerializerReference to include both
back references and attached references.

R=mtrofin@chromium.org, vogelheim@chromium.org

Review-Url: https://codereview.chromium.org/1992723002
Cr-Commit-Position: refs/heads/master@{#36318}
2016-05-18 11:30:33 +00:00
jkummerow
e83ac2342d [arm][arm64] Remove COHERENT_CACHE support
We have evidence (see r34896) that this avoids crashes.

BUG=chromium:524337

Review-Url: https://codereview.chromium.org/1995483002
Cr-Commit-Position: refs/heads/master@{#36317}
2016-05-18 11:08:52 +00:00
balazs.kilvady
c7f5419fa5 MIPS64: Add a check to addiu simulation according to the specification.
BUG=

Review-Url: https://codereview.chromium.org/1984313002
Cr-Commit-Position: refs/heads/master@{#36316}
2016-05-18 11:05:38 +00:00
akos.palfi
253050cbf7 MIPS64: Fix '[Interpreter] Remove InterpreterExitTrampoline and replace with returning to the entry trampoline.'
Port 39738bc905

BUG=

Review-Url: https://codereview.chromium.org/1990823002
Cr-Commit-Position: refs/heads/master@{#36315}
2016-05-18 10:41:25 +00:00
rmcilroy
776d4d87a9 [Interpreter] Inline Inc/Dec code stubs into bytecode handlers.
BUG=v8:4280
LOG=N

Review-Url: https://codereview.chromium.org/1980463003
Cr-Commit-Position: refs/heads/master@{#36314}
2016-05-18 09:45:13 +00:00
neis
3560d9bd58 [runtime] Fix effect of setting .prototype on generator functions.
When setting a generator function's  "prototype" property to a non-object, the
prototype of new generator instances should be %GeneratorPrototype%, not
%ObjectPrototype%.

R=verwaest@chromium.org
BUG=v8:5011

Review-Url: https://codereview.chromium.org/1982203003
Cr-Commit-Position: refs/heads/master@{#36313}
2016-05-18 09:18:12 +00:00
neis
75140f39dd [compiler] Remove obsolete JSYield operator.
R=bmeurer@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1981323002
Cr-Commit-Position: refs/heads/master@{#36312}
2016-05-18 08:55:33 +00:00
mstarzinger
992c9c4d7a [turbofan] Enable all escape analysis tests.
R=bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/1980503002
Cr-Commit-Position: refs/heads/master@{#36311}
2016-05-18 08:01:44 +00:00
rmcilroy
39738bc905 [Interpreter] Remove InterpreterExitTrampoline and replace with returning to the entry trampoline.
In order to support compiling to baseline on return we need to be able to
return to the actual return address. With this change this is what the
Return bytecode now does, removing the need for the
InterpreterExitTrampoline.

This change also removes the InterpreterNotifyDeoptXXX builtins and
unifies FCG and Igntion to both use NotifyDeoptXXX. As part of this
change, FullCodegenerator::State is moved to Deoptimize::BailoutState.

BUG=v8:4280
LOG=N

Committed: https://crrev.com/34c9626e2ee56fe805de549697ca5323aed7cb66
Cr-Commit-Position: refs/heads/master@{#36288}

Review-Url: https://codereview.chromium.org/1969423002
Cr-Commit-Position: refs/heads/master@{#36310}
2016-05-18 07:52:13 +00:00
hablich
cab4685e35 Revert of Ship Turbofan optimization for try-catch and try-finally. (patchset #1 id:1 of https://codereview.chromium.org/1946883003/ )
Reason for revert:
Reverted because of
BUG=chromium:611885

Original issue's description:
> Ship Turbofan optimization for try-catch and try-finally.
>
> Committed: https://crrev.com/b84b01e6d2d8a0ed1e6b9186a5af755bab4bac9a
> Cr-Commit-Position: refs/heads/master@{#36005}

TBR=bmeurer@chromium.org,jarin@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.

Review-Url: https://codereview.chromium.org/1994543002
Cr-Commit-Position: refs/heads/master@{#36309}
2016-05-18 07:49:27 +00:00
bmeurer
91a2ea815b [turbofan] We never use Int64Constant for branch/select conditions.
Remove dead code to optimize Int64Constants as branch/select conditions,
because we either have tagged booleans or bits represented as word32.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1994533002
Cr-Commit-Position: refs/heads/master@{#36308}
2016-05-18 07:20:19 +00:00
rmcilroy
b8fe4b0fb4 [TurboFan] Fix missing initialization of must_save_lr in OutOfLineRecordWrite.
One of the Arm OutOfLineRecordWrite was missing initialiation of must_save_lr

Review-Url: https://codereview.chromium.org/1988623003
Cr-Commit-Position: refs/heads/master@{#36307}
2016-05-18 07:12:54 +00:00
jgruber
5bf3699221 [debugger] Refactor LiveEdit function info collection
This moves collection of function information from its previous spot in
the standard compiler pipeline (GetSharedFunctionInfo() and
CompileTopLevel()) to its new location in CompileForLiveEdit. Nesting
information is reconstructed by traversing the AST.

R=yangguo@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1971683002
Cr-Commit-Position: refs/heads/master@{#36306}
2016-05-18 07:10:24 +00:00
zhengxing.li
dcc283e823 X87: Fix %FunctionGetName and %_ClassOf for bound functions.
port 8e303dd0b3 (r36276)

  original commit message:

BUG=

Review-Url: https://codereview.chromium.org/1989153002
Cr-Commit-Position: refs/heads/master@{#36305}
2016-05-18 06:58:19 +00:00
bmeurer
c5a71f029f [turbofan] Turn common Guard operator into simplified TypeGuard.
The type guard should never be used after the effect/control
linearization pass, so making it a simplified operator better
expresses the intended use. Also this way none of the common
operators actually has any dependency on the type system.

Drive-by-fix: Properly print the type parameter to a TypeGuard operator.

BUG=chromium:612142
R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1994503002
Cr-Commit-Position: refs/heads/master@{#36304}
2016-05-18 06:19:30 +00:00
zhengxing.li
529e333258 X87: [es6] Reintroduce the instanceof operator in the backends.
port 551e0aa11b (r36275)

  original commit message:
  This adds back the instanceof operator support in the backends and
  introduces a @@hasInstance protector cell on the isolate that guards the
  fast path for the InstanceOfStub. This way we recover the ~10%
  regression on Octane EarleyBoyer in Crankshaft and greatly improve
  TurboFan and Ignition performance of instanceof.

BUG=

Review-Url: https://codereview.chromium.org/1991663002
Cr-Commit-Position: refs/heads/master@{#36303}
2016-05-18 05:45:35 +00:00
bmeurer
33e571ff4b [turbofan] Kill type Guard nodes during effect/control linearization.
These guards are useless anyways once you make it throw the
effect/control linearizer because all memory operations and
calls are connected to the control and/or effect chain anyways
afterwards.

Drive-by-fix: Fail in the InstructionSelector if we ever see
a Guard node.

R=jarin@chromium.org
BUG=chromium:612142

Review-Url: https://codereview.chromium.org/1980383002
Cr-Commit-Position: refs/heads/master@{#36302}
2016-05-18 05:38:22 +00:00
bmeurer
4e0105d876 [turbofan] Introduce CheckPoint common operator.
This operator will be used to carry eager frame states, and is hooked up
to the effect chain with a control dependency to avoid hosting out of
control structures.

R=jarin@chromium.org
BUG=v8:5021

Review-Url: https://codereview.chromium.org/1993593002
Cr-Commit-Position: refs/heads/master@{#36301}
2016-05-18 05:28:31 +00:00