Commit Graph

31000 Commits

Author SHA1 Message Date
jgruber
94ad3b1826 Refactor script position calculation
Script position calculation logic (i.e. line & column numbers for a
given code position) is now based on a single method
Script::GetPositionInfo(). Refactored related code in isolate.cc and
js/messages.js to use the new method. The line_ends accessor is still
in use by chromium and thus cannot be removed yet.

R=yangguo@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2002993002
Cr-Commit-Position: refs/heads/master@{#36458}
2016-05-24 06:42:30 +00:00
bmeurer
8153f4cd17 [builtins] Remove a few dead imports of InternalArray/InternalPackedArray.
R=yangguo@chromium.org

Review-Url: https://codereview.chromium.org/2004933003
Cr-Commit-Position: refs/heads/master@{#36457}
2016-05-24 05:22:34 +00:00
zhengxing.li
35e0f01fb9 X87: Revert of [turbofan] Take the immediate size in account when narrowing ia32/x64 word comparison operators. (patchset #1 id:1 of https://codereview.chromium.org/1968453002/ ).
port 767c34dfae (r36413)

  original commit message:
  Reason for revert:
  Breaks a KCS demo:

  BUG=chromium:611976

  Original issue's description:
  > [turbofan] Take the immediate size in account when narrowing ia32/x64 word comparison operators.
  >
  > Trying to re-land http://crrev.com/1948453002 after fixing assembler-x64.cc in http://crrev.com/1962563003.
  >
  > Before this patch, we would emit a cmp or test with a memory operand only if both of the operands in the IR were loads. Now if either of them is a load and the other one is an immediate, we can use
  >
  > Committed: https://crrev.com/2da70f853d7f680d491c37c72d5ef04a85497ba9
  > Cr-Commit-Position: refs/heads/master@{#36136}

Review-Url: https://codereview.chromium.org/2003273002
Cr-Commit-Position: refs/heads/master@{#36456}
2016-05-24 04:18:58 +00:00
v8-autoroll
11fcf1346c Update V8 DEPS.
Rolling v8/build to 012e6582ccd1302ef1e4553d678bf2771f72aaca

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

Review-Url: https://codereview.chromium.org/2007473003
Cr-Commit-Position: refs/heads/master@{#36455}
2016-05-24 03:34:42 +00:00
adamk
b36269543f Mark regexp regression test as failing on noi18n
TBR=yangguo@chromium.org
BUG=v8:5036
NOTRY=true
NOTREECHECKS=true
NOPRESUBMIT=true

Review-Url: https://codereview.chromium.org/2006133002
Cr-Commit-Position: refs/heads/master@{#36454}
2016-05-23 23:25:59 +00:00
yangguo
5d93296a5c [regexp] fix /ui regexp desugaring for text nodes.
R=littledan@chromium.org
BUG=v8:5036

Review-Url: https://codereview.chromium.org/2005753003
Cr-Commit-Position: refs/heads/master@{#36453}
2016-05-23 22:23:43 +00:00
Adam Klein
b5ab8cc530 Skip mjsunit/harmony/generators-turbo on arm64 debug sim
It seems to fail in nosnap mode, and runs very slowly with snapshot, so
skipping for now to get the tree green.

TBR=neis@chromium.org
BUG=v8:4907

Review URL: https://codereview.chromium.org/2000313002 .

Cr-Commit-Position: refs/heads/master@{#36452}
2016-05-23 21:31:11 +00:00
gsathya
9eb320ad10 Promises: Make debug calls only when debugging
Previously, certain calls to DebugPushPromise and DebugPopPromise
happened always, without any check to see if we were in a debugging
environment. This patch adds a conditional check before making these
debug calls to make sure they aren't called when not needed.

Before the patch, running --prof over the bluebird benchmarks,
brings up these unprotected debug calls --
ticks    cpp   total   name
16    6.7%    2.0%  v8::internal::Runtime_DebugPushPromise(int, v8::internal::Object**, v8::internal::Isolate*)
7    2.9%    0.9%  v8::internal::Runtime_DebugPopPromise(int, v8::internal::Object**, v8::internal::Isolate*)

This patch removes the above calls and provides a 4% improvement (with
a 2% variance over 10 runs) in the bluebird benchmark.

Review-Url: https://codereview.chromium.org/1985293002
Cr-Commit-Position: refs/heads/master@{#36451}
2016-05-23 20:13:07 +00:00
adamk
bb8b2b9b02 Avoid duplication of HARMONY_STAGED flags due to no-i18n build
Instead of having two lists of harmony flags, one with i18n and
one without, use a bit more macro programming.

Review-Url: https://codereview.chromium.org/2001753003
Cr-Commit-Position: refs/heads/master@{#36450}
2016-05-23 18:40:35 +00:00
yangguo
c1f1e1ab98 [json] implement JSON.stringify gap pre-processing in C++.
This is in preparation of fully porting JSON.stringify to C++.

R=cbruni@chromium.org

Review-Url: https://codereview.chromium.org/2006663002
Cr-Commit-Position: refs/heads/master@{#36449}
2016-05-23 18:24:04 +00:00
danno
f43aa0bc6c [turbofan] Correctly call ArrayNoArgumentConstructor stub from TF code
BUG=chromium:612412
LOG=N

Review-Url: https://codereview.chromium.org/1999783004
Cr-Commit-Position: refs/heads/master@{#36448}
2016-05-23 16:44:13 +00:00
ssanfilippo
26569a47d1 [Interpreter] Fix getIgnitionDispatchCounters crash with modified Object prototype.
Changes to the Object prototype may cause getIgnitionDispatchCounters()
to fail when building the counters table object. Using DefineOwnProperty
instead of Set solves the issue by ignoring the prototype chain.

BUG=chromium:613567
LOG=N

Review-Url: https://codereview.chromium.org/2000203002
Cr-Commit-Position: refs/heads/master@{#36447}
2016-05-23 16:41:27 +00:00
danno
6eb242eebb [turbofan] Better handling of inserted split-edge blocks
Previously, split-edge blocks inserted into CodeStubAssembler schedules
inherited the "deferredness" of their predecessor block. This tended to inline
newly inserted blocks that preceeded deferred code inline with non-deferred
code. The stack frame elider sometimes inserted stack construction into these
blocks, code which was actually was only needed in the deferred case.

This CL marks inserted split edge blocks with the deferredness of their
successors, e.g. they are defererred if their predecessor is deferrred. This
moves stack building code that logically belongs to deferred code into the
deferred code area rather than inlining it in non-deferred code.

Review-Url: https://codereview.chromium.org/2003663002
Cr-Commit-Position: refs/heads/master@{#36446}
2016-05-23 14:47:27 +00:00
jkummerow
eac1b38d9a [cleanup] Drop FLAG_eliminate_prototype_chain_checks
This flag has been on by default for a while, along with
FLAG_track_prototype_users which provides the prerequisite
infrastructure. We are now sure that this is the direction
we want to go in, so in order to simplify the code, this CL
drops the respective flag-off code paths.

Review-Url: https://codereview.chromium.org/1993913002
Cr-Commit-Position: refs/heads/master@{#36445}
2016-05-23 14:27:45 +00:00
neis
1292721f92 [turbofan] Intrinsic-lowering for GeneratorGetInput and GeneratorGetResumeMode.
Also use the inlined version of CreateIterResultObject in Ignition's VisitYield.

BUG=v8:4907
TBR=littledan@chromium.org

Review-Url: https://codereview.chromium.org/2006613002
Cr-Commit-Position: refs/heads/master@{#36444}
2016-05-23 14:22:54 +00:00
ahaas
f2a7ba6449 [heap] Pass a force_promotion flag to the evacuation routine in the scavenger.
The {force_promotion} flag causes the scavenger to move an object to the
old generation instead of to the other semi-space. We use the flag to force
the promotion of objects which are referenced by code objects.

R=ulan@chromium.org

Review-Url: https://codereview.chromium.org/2002013002
Cr-Commit-Position: refs/heads/master@{#36443}
2016-05-23 14:02:57 +00:00
neis
4579f28d72 [turbofan] Simplify typed lowering of generator-related operators.
Instead of changing existing nodes in a very fragile (and in one case expensive)
way, just create new ones instead.

Also properly chain effects, which was not done quite right before.

BUG=v8:4907

Review-Url: https://codereview.chromium.org/1997373002
Cr-Commit-Position: refs/heads/master@{#36442}
2016-05-23 14:00:20 +00:00
neis
0fd18acb9b [generators] Get better clusterfuzz coverage.
Duplicate mjsunit/harmony/generators.js but explicitly require
--turbo-from-bytecode such that Clusterfuzz can thoroughly test the
new generators implementation.

BUG=v8:4907

Review-Url: https://codereview.chromium.org/2002983002
Cr-Commit-Position: refs/heads/master@{#36441}
2016-05-23 13:57:46 +00:00
mstarzinger
3cc2adb319 [deoptimizer] Fix materialization of sloppy arguments.
This makes sure the deoptimizer can materialize sloppy arguments objects
with the FAST_SLOPPY_ARGUMENTS_ELEMENTS elements kind. TurboFan's escape
analysis treates those as normal JSObject types and hence materializes
them differently than Crankshaft does.

R=verwaest@chromium.org
TEST=mjsunit/regress/regress-crbug-613919
BUG=chromium:613919

Review-Url: https://codereview.chromium.org/2001133002
Cr-Commit-Position: refs/heads/master@{#36440}
2016-05-23 13:52:35 +00:00
oth
e43fbde72b [Interpreter] Preserve source positions in peephole optimizer.
The original peephole optimizer logic in the BytecodeArrayBuilder did
not respect source positions as it was written before there were
bytecode source positions. This led to some minor differences to
FCG and was problematic when combined with pending bytecode
optimizations. This change makes the new peephole optimizer fully
respect source positions.

BUG=v8:4280
LOG=N

Review-Url: https://codereview.chromium.org/1998203002
Cr-Commit-Position: refs/heads/master@{#36439}
2016-05-23 13:33:20 +00:00
oth
8d5d9e18ea [interpreter] Add BytecodeGenerator::Abort().
Add a method to emit abort for code which should
not be reachable.

BUG=v8:4280
LOG=N

Review-Url: https://codereview.chromium.org/2002833005
Cr-Commit-Position: refs/heads/master@{#36438}
2016-05-23 11:53:36 +00:00
mlippautz
b2d8bfc793 [heap] Fine-grained JSArrayBuffer tracking
Track based on JSArrayBuffer addresses instead of the attached backing store.
This way we can later on iterate buffers on a single page. The reland also
switches to a page-based implementation where a page contains the set of its
contained (live and dead) buffers.

Details of tracking:
- Scavenge: New space pages are processes in bulk on the main thread
- MC: Unswept pages are processed in bulk in parallel. All other pages
  are processed by the sweeper concurrently.

BUG=chromium:611688
LOG=N
CQ_EXTRA_TRYBOTS=tryserver.v8:v8_linux_arm64_gc_stress_dbg,v8_linux_gc_stress_dbg,v8_mac_gc_stress_dbg,v8_linux64_tsan_rel,v8_mac64_asan_rel

Review-Url: https://codereview.chromium.org/1964023002
Cr-Commit-Position: refs/heads/master@{#36437}
2016-05-23 11:21:49 +00:00
mstarzinger
dbd7d5a59f [turbofan] Skip data-flow analysis of code entry field.
This makes escape analysis skip analyzing the code entry field within
JSFunction objects. Said field is an untagged pointer field and hence
cannot be tracked by an ObjectState node.

R=jarin@chromium.org
TEST=mjsunit/regress/regress-crbug-613494
BUG=chromium:613494

Review-Url: https://codereview.chromium.org/1997353002
Cr-Commit-Position: refs/heads/master@{#36436}
2016-05-23 10:40:29 +00:00
yangguo
bf705f0fd6 [json] move json parser and stringifier into own compilation units.
This is a pure refactoring.

R=cbruni@chromium.org

Review-Url: https://codereview.chromium.org/2002933002
Cr-Commit-Position: refs/heads/master@{#36435}
2016-05-23 10:36:44 +00:00
nexus226
726d3be8ae tools: Fix a syntax error in plot-timer-events
This fixes a syntax error in plot-timer-events script.

Before:
  $ out/x64.release/d8 --prof --log-timer-events script.js
  $ tools/plot-timer-events v8.log
  tools/plot-timer-events: 75: tools/plot-timer-events: options+=1343: not found
  --distortion=
  Cmdline args: [options] [log-file-name]
  Default log file name is "v8.log".
    ...

After:
  $ out/x64.release/d8 --prof --log-timer-events script.js
  $ tools/plot-timer-events v8.log
  $ ls timer-events.png
  timer-events.png

BUG=

Review-Url: https://codereview.chromium.org/1961873002
Cr-Commit-Position: refs/heads/master@{#36434}
2016-05-23 10:19:47 +00:00
yangguo
46aeb2aed8 [json] fix encoding change for two-byte gap strings.
R=mstarzinger@chromium.org
BUG=chromium:613570

Review-Url: https://codereview.chromium.org/1997003002
Cr-Commit-Position: refs/heads/master@{#36433}
2016-05-23 09:18:58 +00:00
mstarzinger
4267a2ebe7 [build] Fix Makefile based (native) build.
This fixes the Python include path after the GYP files have been
relocated into another directory. It only affects 'make native', other
targets have been fixed in previous changes already.

R=jkummerow@chromium.org

Review-Url: https://codereview.chromium.org/2001053003
Cr-Commit-Position: refs/heads/master@{#36432}
2016-05-23 09:16:24 +00:00
ahaas
ff69ca7845 [heap] Introduce a new remembered set for typed pointers from old to new.
R=ulan@chromium.org, titzer@chromium.org

Review-Url: https://codereview.chromium.org/2003553002
Cr-Commit-Position: refs/heads/master@{#36431}
2016-05-23 09:01:30 +00:00
ishell
a7a14fdebc [runtime] Don't crash when trying to access manually constructed CallSite object.
... but hit the runtime assert instead.
|
| Runtime error in ../src/runtime/runtime-internal.cc, line 409
|
| call_site.IsJavaScript() || call_site.IsWasm()
|

BUG=chromium:613905
LOG=N

Review-Url: https://codereview.chromium.org/2006603002
Cr-Commit-Position: refs/heads/master@{#36430}
2016-05-23 09:01:29 +00:00
Ilija.Pavlovic
e2e879694a MIPS: Fix function Fast_ArrayConcat.
Port for https://codereview.chromium.org/1409123003

In function Fast_ArrayConcat is added comparation between result_len and
FixedDoubleArray::kMaxLength. This change enables successful execution
of the test regress-599414-array-concat-fast-path.

Original commit message:
  [runtime] Avoid @@isConcatSpreadable lookup for fast path Array.prototype.concat

  Currently we do not check for @@isConcatSpreadable properly. If the Symbol is
  set on the Array.prototype or Object.prototype the current fast paths fail.
  This CL adds a fix to globally invalidate a isConcatSpreadable_protector.

  Drive-by-fix: use named accessors for context variables

TEST=mjsunit/regress/regress-599414-array-concat-fast-path
BUG=

Review-Url: https://codereview.chromium.org/1995313002
Cr-Commit-Position: refs/heads/master@{#36429}
2016-05-23 07:09:15 +00:00
bmeurer
392c1d8e11 [stubs] Enforce correct index representation on 64-bit.
Address computation on 64-bit platforms must be done in Word64, mixing
Word32 here is unsound.

TBR=danno@chromium.org

Review-Url: https://codereview.chromium.org/1997223002
Cr-Commit-Position: refs/heads/master@{#36428}
2016-05-21 19:48:56 +00:00
bmeurer
cc71837fda [builtins] Migrate String.fromCharCode to C++.
The previous JavaScript version created way too many ConsStrings for
longer strings, i.e. when using String.fromCharCode together with
Function.prototype.apply and arrays of char codes.

This version now always allocates sequential strings and therefore uses
way less memory when turning longer character sequences into strings,
and therefore fixes the memory regression on Google Maps.

BUG=chromium:609831
R=yangguo@chromium.org

Review-Url: https://codereview.chromium.org/2004733002
Cr-Commit-Position: refs/heads/master@{#36427}
2016-05-21 16:59:59 +00:00
pierre.langlois
438629ba49 [ARM64] Make BufferDisassembler print the instruction encoding
This patch changes the disassembly output for ARM64 when tracing
compiled code. We used to omit printing the encoding as opposed to what
ARM and X64 do. The new turbolizer tool assumes the encoding is printed
and gets confused otherwise.

This could have been fixed in the tool instead but making disassembly
output consistent across architecture seems like a better solution.

BUG=

Review-Url: https://codereview.chromium.org/1996983003
Cr-Commit-Position: refs/heads/master@{#36426}
2016-05-21 12:46:28 +00:00
danno
2ca36cc33c [stubs] Fix hole-related double bug in ArrayNoArgumentConstructor
BUG=chromium:613796
LOG=N

Review-Url: https://codereview.chromium.org/2002813002
Cr-Commit-Position: refs/heads/master@{#36425}
2016-05-21 09:54:38 +00:00
v8-autoroll
e2ef4da9c3 Update V8 DEPS.
Rolling v8/build to 298aeabfe2aa544f7be8cab05a133428bca7dea3

Rolling v8/third_party/icu to 54f86bb1d1d02968576d21c16d7134ec35c30fbc

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

Review-Url: https://codereview.chromium.org/2005633002
Cr-Commit-Position: refs/heads/master@{#36424}
2016-05-21 03:33:07 +00:00
mstarzinger
09365ad811 [turbofan] Unify escape analysis offset calculation.
This unifies the calculation of virtual offsets within the escape
analysis pass to go through common helpers. It also switches to safer
accessors for getting FieldAccess and ElementAccess parameters.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2000733002
Cr-Commit-Position: refs/heads/master@{#36423}
2016-05-20 17:53:30 +00:00
ivica.bogosavljevic
ff2bd0fdcb Implement UnalignedLoad and UnalignedStore in WASM using
combination of LoadByte/Shift/Or and StoreByte/Shift/And.

BUG=

Review-Url: https://codereview.chromium.org/1928513002
Cr-Commit-Position: refs/heads/master@{#36422}
2016-05-20 17:50:51 +00:00
neis
b3bfc0bd58 [interpreter] Fix source position of yield-exceptions in generators.
R=rmcilroy@chromium.org
BUG=v8:4907,v8:5027

Review-Url: https://codereview.chromium.org/1995303002
Cr-Commit-Position: refs/heads/master@{#36421}
2016-05-20 17:50:50 +00:00
pgorszkowski
7afd712ae0 Invalidate defaultObjects if timezone changes
In case of calling 'toLocaleString', 'toLocaleTimeString' and
'toLocaleDateString' functions of 'Date' with empty 'locales' and
'options', DateTimeFormat is cached inside 'defaultObjects'.
If we change the timezone the cache is not invalidated.

BUG=v8:5022
TEST=cctest:DateCacheVersion. See the bug
CQ_INCLUDE_TRYBOTS=tryserver.v8:v8_linux_noi18n_rel_ng

Review-Url: https://codereview.chromium.org/1985423003
Cr-Commit-Position: refs/heads/master@{#36420}
2016-05-20 17:47:45 +00:00
jarin
9aac80f400 Ship turbofan try-catch, try-finally, attempt N+1.
Review-Url: https://codereview.chromium.org/1996373002
Cr-Commit-Position: refs/heads/master@{#36419}
2016-05-20 15:41:02 +00:00
bradnelson
48c2857a93 Delay asm->wasm foreign globals init until later.
Rather than bake foreign globals into the module
at compile time, add a __foreign_init__ function that can be called
after instantiation with foreign values gathers using keys
in a separately generated FixedArray.

This is an incremental step towards being able to enable asm->wasm
on for general traffic, behind a flag.

BUG= https://bugs.chromium.org/p/v8/issues/detail?id=4203
TEST=asm-wasm
R=titzer@chromium.org,aseemgarg@chromium.org
LOG=N

Review-Url: https://codereview.chromium.org/1999523002
Cr-Commit-Position: refs/heads/master@{#36418}
2016-05-20 15:37:23 +00:00
jkummerow
43547df9c7 [crankshaft] Don't inline "dont_crankshaft" functions
Crankshaft shouldn't try to inline functions it knows it can't handle.

BUG=v8:5033

Review-Url: https://codereview.chromium.org/2000703002
Cr-Commit-Position: refs/heads/master@{#36417}
2016-05-20 15:20:15 +00:00
yangguo
766d3ea9a8 [json] handle access checks in BasicJsonStringifier.
R=cbruni@chromium.org

Review-Url: https://codereview.chromium.org/1996333002
Cr-Commit-Position: refs/heads/master@{#36416}
2016-05-20 14:53:45 +00:00
jarin
ca266e74cd [arm] Make CEntryStub's handling of triple return values more robust.
At the moment the code assumes C-function returns the address of the
struct with the values. Unfortunately, the arm ABI does not guarantee that.
After this CL, we do not assume that, and instead just take the value from the stack.

BUG=chromium:611885
LOG=n

Review-Url: https://codereview.chromium.org/2000713002
Cr-Commit-Position: refs/heads/master@{#36415}
2016-05-20 14:38:45 +00:00
jkummerow
ee4ce54494 Revert of [keys] Don't omit write barrier after std::sort (patchset #2 id:20001 of https://codereview.chromium.org/1991173002/ )
Reason for revert:
This array only contains Smis, see its only store site five lines above:

array->set(array_size++, Smi::FromInt(i));

If you want to improve something here, use a C++ array instead of a FixedArray. There's no reason to have this short-lived list on the V8 heap.

Original issue's description:
> [keys] Don't omit write barrier after std::sort
>
> BUG=
>
> Committed: https://crrev.com/681ac8979e820d147380b5fdb2aae773e22f1302
> Cr-Commit-Position: refs/heads/master@{#36412}

TBR=mlippautz@chromium.org,cbruni@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

Review-Url: https://codereview.chromium.org/1996963002
Cr-Commit-Position: refs/heads/master@{#36414}
2016-05-20 14:14:41 +00:00
titzer
767c34dfae Revert of [turbofan] Take the immediate size in account when narrowing ia32/x64 word comparison operators. (patchset #1 id:1 of https://codereview.chromium.org/1968453002/ )
Reason for revert:
Breaks a KCS demo:

BUG=chromium:611976

Original issue's description:
> [turbofan] Take the immediate size in account when narrowing ia32/x64 word comparison operators.
>
> Trying to re-land http://crrev.com/1948453002 after fixing assembler-x64.cc in http://crrev.com/1962563003.
>
> Before this patch, we would emit a cmp or test with a memory operand only if both of the operands in the IR were loads. Now if either of them is a load and the other one is an immediate, we can use a memory operand if the load representation machine size is wide enough to represent the latter.
>
> Committed: https://crrev.com/2da70f853d7f680d491c37c72d5ef04a85497ba9
> Cr-Commit-Position: refs/heads/master@{#36136}

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

Review-Url: https://codereview.chromium.org/1995303003
Cr-Commit-Position: refs/heads/master@{#36413}
2016-05-20 14:09:46 +00:00
cbruni
681ac8979e [keys] Don't omit write barrier after std::sort
BUG=

Review-Url: https://codereview.chromium.org/1991173002
Cr-Commit-Position: refs/heads/master@{#36412}
2016-05-20 13:59:49 +00:00
hpayer
ba8ecfd58f Adding a SetRAILMode API.
BUG=chromium:613518
LOG=n

Review-Url: https://codereview.chromium.org/1999743002
Cr-Commit-Position: refs/heads/master@{#36411}
2016-05-20 13:37:49 +00:00
mlippautz
fdd9f6b92d [heap] Harden heap-related cctests
- Move usable functions into proper heap-utils.h/.cc files and remove
  utils-inl.h file
- Fix assumptions accross the board relying on certain behavior that is not
  invariant

This is a requirement for modifying page size.

BUG=chromium:581412
LOG=N
R=ulan@chromium.org

Review-Url: https://codereview.chromium.org/1999753002
Cr-Commit-Position: refs/heads/master@{#36410}
2016-05-20 13:32:50 +00:00
yangguo
a19404f04a [json] handle proxies in BasicJsonSerializer.
R=cbruni@chromium.org

Review-Url: https://codereview.chromium.org/1994183002
Cr-Commit-Position: refs/heads/master@{#36409}
2016-05-20 13:20:19 +00:00