Commit Graph

30605 Commits

Author SHA1 Message Date
kozyatinskiy
6f419dfe67 [V8] Add v8::Value::TypeOf to API
There is TypeOf static method on object inside V8. In this CL I've extracted it via API.

LOG=Y
R=yangguo@chromium.org
BUG=chromium:595206

Review-Url: https://codereview.chromium.org/1829833002
Cr-Commit-Position: refs/heads/master@{#36113}
2016-05-09 16:21:35 +00:00
titzer
86d4a45586 [wasm] Add some tests for control flow corner cases.
R=ahaas@chromium.org,rossberg@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1960143002
Cr-Commit-Position: refs/heads/master@{#36112}
2016-05-09 14:46:40 +00:00
mstarzinger
d0e84c8ebd [fullcodegen] Factor out VisitProperty from architectures.
This makes the aforementioned visitation function independent of the
target architecture by leveraging existing abstractions.

R=mvstanton@chromium.org

Review-Url: https://codereview.chromium.org/1962663002
Cr-Commit-Position: refs/heads/master@{#36111}
2016-05-09 14:33:22 +00:00
epertoso
99230f8d0e [x64] Fix testw with immediates.
Assembler::testw(Register, Immediate) and Assembler::testw(const Operand&, Immediate) were emitting only the first 8 bits of a 16-bit immediate, causing unexpected crashes.

This went unnoticed because before http://crrev.com/1948453002 no compiler was using them.

Review-Url: https://codereview.chromium.org/1962563003
Cr-Commit-Position: refs/heads/master@{#36110}
2016-05-09 13:55:44 +00:00
mstarzinger
afb69f7438 [fullcodegen] Add missing bailout points for super calls.
The bailout points for named and keyed property loads when doing super
property calls are not being prepared by full-codegen, even though we
are using them in TurboFan for deopts and stack traces.

R=jarin@chromium.org
TEST=mjsunit/regress/regress-4971
BUG=v8:4971
LOG=n

Review-Url: https://codereview.chromium.org/1960083002
Cr-Commit-Position: refs/heads/master@{#36109}
2016-05-09 13:44:40 +00:00
yangguo
41deb5a2cf [debugger] refactor debug-scopes.
R=jgruber@chromium.org

Review-Url: https://codereview.chromium.org/1961833002
Cr-Commit-Position: refs/heads/master@{#36108}
2016-05-09 13:28:52 +00:00
jochen
acbbd59f29 Expose IsConstructor to the C++ API
BUG=v8:4993
R=verwaest@chromium.org
LOG=y

Review-Url: https://codereview.chromium.org/1964433002
Cr-Commit-Position: refs/heads/master@{#36107}
2016-05-09 13:24:21 +00:00
ulan
5d9f6da654 Instrument callers of Semaphore::Signal to help with investigation of
flaky crashes.

BUG=chromium:609249
LOG=NO

Review-Url: https://codereview.chromium.org/1961893002
Cr-Commit-Position: refs/heads/master@{#36106}
2016-05-09 11:55:42 +00:00
ishell
bcb1b8732a [es8] Throw SyntaxError when tail call expressions occur in non-strict mode.
BUG=v8:4915
LOG=N

Review-Url: https://codereview.chromium.org/1955393002
Cr-Commit-Position: refs/heads/master@{#36105}
2016-05-09 11:42:31 +00:00
verwaest
4cad4c054e Clean up this/holder usage in accessors.cc
BUG=

Review-Url: https://codereview.chromium.org/1958063002
Cr-Commit-Position: refs/heads/master@{#36104}
2016-05-09 11:39:58 +00:00
titzer
73a988a0d5 [wasm] Verify expressions do not cross control boundaries in WASM.
This catches malformed code like the following example:

<expr>
<block begin>
<expr>
<binop>
<end>

Which is illegal because the inputs to the binop cross the block boundary.

R=rossberg@chromium.org,ahaas@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1961853002
Cr-Commit-Position: refs/heads/master@{#36103}
2016-05-09 10:36:19 +00:00
mstarzinger
434ef2ccfd [turbofan] Remove deprecated --turbo-osr flag.
The flag in question used to fall-back to Crankshaft whenever an OSR
request couldn't be handled by TurboFan. By now OSR in TurboFan is
sufficiently stabilized that one single --use-osr flag should do it.

R=titzer@chromium.org

Review-Url: https://codereview.chromium.org/1960043002
Cr-Commit-Position: refs/heads/master@{#36102}
2016-05-09 09:12:01 +00:00
ishell
8758245a62 Don't crash when load eval origin of a call site.
BUG=chromium:610207
LOG=N

Review-Url: https://codereview.chromium.org/1958043002
Cr-Commit-Position: refs/heads/master@{#36101}
2016-05-09 09:00:52 +00:00
titzer
aee1824adb [wasm] Fold bounds checks during graph building.
R=ahaas@chromium.org,clemensh@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1962553002
Cr-Commit-Position: refs/heads/master@{#36100}
2016-05-09 08:53:48 +00:00
zhengxing.li
38ec29b4a3 [X87] [Ignition] Fix V8 x87 code generation bugs when Ingition was enabled.
The CL #35926 (https://codereview.chromium.org/1804003002) exposed two hidden bugs in x87 code generation when Ignition was enabled.

  This CL fixed those bugs.

BUG=

Review-Url: https://codereview.chromium.org/1960993002
Cr-Commit-Position: refs/heads/master@{#36099}
2016-05-09 08:47:11 +00:00
mythria
a64b1d8767 [Interpreter] Updates mjsunit/es6/mirror-collections to work with ignition
mjsunit/es6/mirror-collections fails with ignition because dead registers
may hold references to objects. This prevents GC from collecting
otherwise dead objects. Dead registers are not cleared because the cost
of clearing them outweighs its benefits. Hence, modifying this test to
work around this problem.

BUG=v8:4280,v8:4853
LOG=N

Review-Url: https://codereview.chromium.org/1945223002
Cr-Commit-Position: refs/heads/master@{#36098}
2016-05-09 08:40:05 +00:00
nikolaos
a156a05101 Fix bug with runtime-call-stats timers
RuntimeCallTimers were not properly stopped and this made a DCHECK
in the Debug version fail.

R=cbruni@chromium.org
BUG=
LOG=N

Review-Url: https://codereview.chromium.org/1955943002
Cr-Commit-Position: refs/heads/master@{#36097}
2016-05-09 08:04:47 +00:00
hablich
369dcca7a5 Revert of Add GN targets for samples (patchset #1 id:1 of https://codereview.chromium.org/1955723003/ )
Reason for revert:
Blocks roll: https://codereview.chromium.org/1956223002/

Original issue's description:
> Add GN targets for samples
>
> BUG=chromium:609107
> R=machenbach@chromium.org
> LOG=n
>
> Committed: https://crrev.com/19a8e09cc0bafa5071c52243234bfc8512210065
> Cr-Commit-Position: refs/heads/master@{#36072}

TBR=machenbach@chromium.org,jochen@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=chromium:609107
LOG=n

Review-Url: https://codereview.chromium.org/1955353002
Cr-Commit-Position: refs/heads/master@{#36096}
2016-05-09 07:18:01 +00:00
ulan
a6da98d86f Introduce a new phantom weakness type without finalization callback.
Handles of this type are automatically reset by the garbage collector
when their objects are not longer reachable.

The motivation is to reduce pause time of external.weak_global_handles
phase of the garbage collector by not maintaing the list of pending
callbacks and not calling the callbacks.

Local testing on discourse page of the v8.inifinite_scroll benchmark
shows 7x improvement for this GC phase.

Before:
external.weak_global_handles
 len: 21
 min: 0.0
 max: 4.5
 avg: 0.757142857143

After:
external.weak_global_handles
 len: 21
 min: 0.0
 max: 0.5
 avg: 0.109523809524

A follow-up patch will enable the new phantom handles in Chromium.

BUG=chromium:608333
LOG=NO

Review-Url: https://codereview.chromium.org/1950963002
Cr-Commit-Position: refs/heads/master@{#36095}
2016-05-09 07:18:00 +00:00
zhengxing.li
80a8c3f519 X87: Revert of [turbofan] Take the immediate size in account when narrowing ia32/x64 word comparison operators. (patchset #2 id:20001 of https://codereview.chromium.org/1948453002/ ).
port 3b7ff999f3 (r36066)

  original commit message:
  Reason for revert:
  Breaks WASM; please also add tests when relanding.

  Original issue's description:
  > [turbofan] Take the immediate size in account when narrowing ia32/x64 word comparison operators.
  >
  > 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
  >
  > Committed: https://crrev.com/a0543313dbd46b0c2e72c91ee3488a7dc6db73e4
  > Cr-Commit-Position: refs/heads/master@{#36009}

BUG=

Review-Url: https://codereview.chromium.org/1958863003
Cr-Commit-Position: refs/heads/master@{#36094}
2016-05-09 03:02:23 +00:00
v8-autoroll
9c6b606f30 Update V8 DEPS.
Rolling v8/build to e3d87b142123f2da73c94c276ee915c099afe909

Rolling v8/tools/clang to 15dd77e3ea10e43596ec6ac07b73431135915b30

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

Review-Url: https://codereview.chromium.org/1961713002
Cr-Commit-Position: refs/heads/master@{#36093}
2016-05-08 03:38:15 +00:00
v8-autoroll
e63a48ac5c Update V8 DEPS.
Rolling v8/build to b81f2a05b5aa7f5b6cf843380eb276897b1ef626

Rolling v8/tools/clang to afdc842603935f994788bf2388e1155528448b2a

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

Review-Url: https://codereview.chromium.org/1961653002
Cr-Commit-Position: refs/heads/master@{#36092}
2016-05-07 03:22:55 +00:00
jwolfe
2d9bfe9ad5 fix Set::AsArray to not leave undefined holes in output array
Add comments explaining how to iterate over an OrderedHashTable.
Use the correct strategy for iteration in Set::AsArray().
Add a DCHECK bounds check in OrderedHashTable::KeyAt().

BUG=v8:4946
LOG=y

Review-Url: https://codereview.chromium.org/1952093002
Cr-Commit-Position: refs/heads/master@{#36091}
2016-05-07 00:33:19 +00:00
akos.palfi
643dfe0d05 MIPS64: Fix 'Visit the Optimized Code Map on first call rather than closure creation.'
Port c2de961128

Fixes an infinite loop on MIPS64 big-endian.

BUG=

Review-Url: https://codereview.chromium.org/1959463003
Cr-Commit-Position: refs/heads/master@{#36090}
2016-05-06 19:50:13 +00:00
adamk
0783a6fc27 Further expand parsing tests around yield in generator/arrow parameters
No bugs found, but the additional coverage of arrows as default param
initializers in a generator param list seems good to have.

R=littledan@chromium.org

Review-Url: https://codereview.chromium.org/1949293002
Cr-Commit-Position: refs/heads/master@{#36089}
2016-05-06 19:31:50 +00:00
lpy
5cbe0f5d25 Create TimeBase for time related classes.
Currently we have Time and TimeTicks sharing some methods. This patch
creates TimeBase, and makes Time and TimeTicks inherits from it, so that time
related classes won't have to implement common methods and it's easier to
introduce new time related classes.

BUG=v8:4990
LOG=n

Review-Url: https://codereview.chromium.org/1952843002
Cr-Commit-Position: refs/heads/master@{#36088}
2016-05-06 18:36:37 +00:00
jkummerow
fd2dbf1d01 [Mac] Work around potential pthread_mutex_destroy crashes
This ports https://codereview.chromium.org/1323293005 to V8.
I'm not aware of any evidence that such crashes are currently
happening, but it's probably good to ship this workaround anyway.

BUG=chromium:517681
LOG=n

Review-Url: https://codereview.chromium.org/1959643002
Cr-Commit-Position: refs/heads/master@{#36087}
2016-05-06 17:22:01 +00:00
titzer
3181c87e04 [wasm] Improve output of PrintAstForDebugging.
R=clemensh@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1956703002
Cr-Commit-Position: refs/heads/master@{#36086}
2016-05-06 16:28:46 +00:00
alph
dae0fecfd2 Sampling heap profiler: report allocations for nodes with missing script.
Review-Url: https://codereview.chromium.org/1952753003
Cr-Commit-Position: refs/heads/master@{#36085}
2016-05-06 14:51:06 +00:00
jochen
127d6781d9 Convert primitive receivers for API property callbacks
They're always in sloppy mode, so always do the conversion

BUG=chromium:609134
R=bmeurer@chromium.org,verwaest@chromium.org
LOG=n

Review-Url: https://codereview.chromium.org/1960663002
Cr-Commit-Position: refs/heads/master@{#36084}
2016-05-06 14:11:14 +00:00
rmcilroy
c2c2d8e69c [Interpreter]: Unskip some tests which pass with --ignition and group other failures.
Some tests which fail with '--ignition --turbo --turbo-from-bytecode' pass with
just '--ignition'. Unskip these tests. Also group other tests with related
bugs.

BUG=v8:4680
LOG=N

Review-Url: https://codereview.chromium.org/1944413002
Cr-Commit-Position: refs/heads/master@{#36083}
2016-05-06 14:04:37 +00:00
mbrandy
22b4dd72d9 [wasm] Skip additional wasm tests on big-endian platforms.
R=titzer@chromium.org, ahaas@chromium.org, michael_dawson@ca.ibm.com
BUG=

Review-Url: https://codereview.chromium.org/1948053002
Cr-Commit-Position: refs/heads/master@{#36082}
2016-05-06 14:02:18 +00:00
akos.palfi
2c6d0789c8 MIPS: Add new relocation type WASM_MEMORY_SIZE_REFERENCE, use relocatable pointers to update wasm memory size references in generated code.
Port 117a56b7c2

BUG=

Review-Url: https://codereview.chromium.org/1959653002
Cr-Commit-Position: refs/heads/master@{#36081}
2016-05-06 13:26:58 +00:00
cbruni
aa1b7f6b81 [tools] Add callstats.html to analize --runtime-call-stats output
callstats.html in combination with callstats.py can be used to get an in-depth
view on where we spend time in v8. Furthermore, with callstats.html we can
compare different versions of v8/chrome and see where and how performnce
evolved.

Drive-by-fix: add missing copyrights header to ic-explorer.html and format
ic-explorer.html

BUG=

Review-Url: https://codereview.chromium.org/1947413004
Cr-Commit-Position: refs/heads/master@{#36080}
2016-05-06 13:24:39 +00:00
ulan
82dcb2beee [API] Remove deprecated WeakCallbackData and related functions.
This removes:
- PersistentBase::SetWeak that takes WeakCallbackData.
  The embedders should use the version that takes WeakCallbackInfo.
- PersistentBase::SetPhantom.
  The embedders should SetWeak that takes WeakCallbackInfo.

Functions in DefaultPersistentValueMapTraits are changed to accept
WeakCallbackInfo instead of WeakCallbackData.

BUG=chromium:609808
LOG=NO

Review-Url: https://codereview.chromium.org/1953263002
Cr-Commit-Position: refs/heads/master@{#36079}
2016-05-06 13:18:07 +00:00
jochen
fbe0f303a2 [fuzzer] Force a GC before shutting down isolates
We just deleted a persistent the line before, so make sure the context
is cleared up before disposing the isolate

R=ulan@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/1953253003
Cr-Commit-Position: refs/heads/master@{#36078}
2016-05-06 12:53:29 +00:00
ulan
1f6be3d73c Remove deprecated uses of WeakCallbackData from i18n.
BUG=chromium:609808
LOG=NO

Review-Url: https://codereview.chromium.org/1954033002
Cr-Commit-Position: refs/heads/master@{#36077}
2016-05-06 12:42:07 +00:00
mattloring
058809a691 Include file names in hydrogen logs
Hydrogen logs are ambiguous if multiple functions share the same name.
This change adds file names to this output. Functions are now named
<file_name>:<function_name> to reduce this ambiguity.

R=ofrobots@google.com
BUG=

Review-Url: https://codereview.chromium.org/1913973004
Cr-Commit-Position: refs/heads/master@{#36076}
2016-05-06 12:39:39 +00:00
ishell
e17a283f92 [es6] Properly handle the case when an inlined getter/setter/constructor does a tail call.
Deoptimizer is now able to reconstruct topmost accessor and constructor frames.

BUG=chromium:608278, v8:4698
LOG=N
TBR=bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/1936043002
Cr-Commit-Position: refs/heads/master@{#36075}
2016-05-06 12:37:13 +00:00
ulan
0dfc1613b5 Remove deprecated uses of WeakCallbackData from tests.
BUG=chromium:609808
LOG=NO

Review-Url: https://codereview.chromium.org/1949393006
Cr-Commit-Position: refs/heads/master@{#36074}
2016-05-06 12:30:08 +00:00
cbruni
e801d554aa [keys] Cleanup: removing unused parameters in elements.cc and keys.cc
- Cleanup CL to remove unused parameters in elements.cc. Additionally use fields
  from the KeyAccumulator wherever possible.
- Make method names in KeyAccumulator more consistent

BUG=

Review-Url: https://codereview.chromium.org/1944703002
Cr-Commit-Position: refs/heads/master@{#36073}
2016-05-06 10:51:35 +00:00
jochen
19a8e09cc0 Add GN targets for samples
BUG=chromium:609107
R=machenbach@chromium.org
LOG=n

Review-Url: https://codereview.chromium.org/1955723003
Cr-Commit-Position: refs/heads/master@{#36072}
2016-05-06 10:40:28 +00:00
jkummerow
148e7076ca Turn on -Wmissing-field-initializers on Linux.
Because not initializing fields can be, you know, dangerous.

Review-Url: https://codereview.chromium.org/1952703002
Cr-Commit-Position: refs/heads/master@{#36071}
2016-05-06 10:20:30 +00:00
nikolaos
1d941a4466 Add script for benchmarking with --runtime-call-stats
R=cbruni@chromium.org
BUG=
LOG=N

Review-Url: https://codereview.chromium.org/1922873004
Cr-Commit-Position: refs/heads/master@{#36070}
2016-05-06 10:18:14 +00:00
mstarzinger
85572b0189 [deoptimizer] Remove obsolete DeoptInfo::mnemonic field.
R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/1945363002
Cr-Commit-Position: refs/heads/master@{#36069}
2016-05-06 10:04:50 +00:00
mstarzinger
69963b4c5a [compiler] Move inline function tracing to Crankshaft.
This moves all the machinery for tracing inlined function that is
specific to Crankshaft into the appropriate component. Only the old
side-channel via a list of InlinedFunctionInfo structs remained within
the CompilationInfo for now. In the long run we will reconstruct that
information from the deoptimization data on the code objects.

R=bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/1944323002
Cr-Commit-Position: refs/heads/master@{#36068}
2016-05-06 09:23:19 +00:00
clemensh
a4cd1eef0a [wasm] Make wasm info available on the stack trace
This changes different locations to extract the reference to the wasm
object and the function index from the stack trace, and make it
available through all the APIs which process stack traces.
The javascript CallSite object now has the new methods isWasm(),
getWasmObject() and getWasmFunctionIndex(); the byte offset is
available via getPosition().

Function names of wasm frames should be fully functional with this
commit, position information works reliably for calls, but not for
traps like unreachable or out-of-bounds accesses.

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

Review-Url: https://codereview.chromium.org/1909353002
Cr-Commit-Position: refs/heads/master@{#36067}
2016-05-06 09:07:45 +00:00
titzer
3b7ff999f3 Revert of [turbofan] Take the immediate size in account when narrowing ia32/x64 word comparison operators. (patchset #2 id:20001 of https://codereview.chromium.org/1948453002/ )
Reason for revert:
Breaks WASM; please also add tests when relanding.

Original issue's description:
> [turbofan] Take the immediate size in account when narrowing ia32/x64 word comparison operators.
>
> 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/a0543313dbd46b0c2e72c91ee3488a7dc6db73e4
> Cr-Commit-Position: refs/heads/master@{#36009}

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

Review-Url: https://codereview.chromium.org/1959603002
Cr-Commit-Position: refs/heads/master@{#36066}
2016-05-06 09:07:44 +00:00
machenbach
27aff30180 [Interpreter] Skip test for tsan.
BUG=v8:4280
LOG=N
NOTRY=true
TBR=rmcilroy@chromium.org

Review-Url: https://codereview.chromium.org/1956663002
Cr-Commit-Position: refs/heads/master@{#36065}
2016-05-06 08:00:07 +00:00
machenbach
6e6a7ea3a4 [test] Skip failing test after clang roll.
BUG=v8:4995
LOG=n
NOTRY=true
TBR=thakis@chromium.org, titzer@chromium.org

Review-Url: https://codereview.chromium.org/1955013002
Cr-Commit-Position: refs/heads/master@{#36064}
2016-05-06 07:57:50 +00:00