Commit Graph

32343 Commits

Author SHA1 Message Date
ishell
b030a6f59d [runtime] Follow-up fix for "Better encapsulation of dictionary objects handling in lookup iterator."
BUG=chromium:626715

Review-Url: https://codereview.chromium.org/2135253002
Cr-Commit-Position: refs/heads/master@{#37651}
2016-07-11 15:51:58 +00:00
bbudge
d8d75782fb [Turbofan] Change AlignSavedCalleeRegisterSlots to AlignFrame.
Clean up call sites.

LOG=N
BUG=v8:4124

Review-Url: https://codereview.chromium.org/2124983004
Cr-Commit-Position: refs/heads/master@{#37650}
2016-07-11 15:41:50 +00:00
bbudge
f797c4b889 [Simd128] Add CpuFeatures::SupportsSimd128 method.
All architectures return false for now.

LOG=N
BUG=v8:4124

Review-Url: https://codereview.chromium.org/2135573003
Cr-Commit-Position: refs/heads/master@{#37649}
2016-07-11 15:36:45 +00:00
hpayer
8551daee4d TestCodeFlushingIncrementalScavenge should not allocate on black pages.
BUG=

Review-Url: https://codereview.chromium.org/2138783002
Cr-Commit-Position: refs/heads/master@{#37648}
2016-07-11 15:20:05 +00:00
jochen
f592f2e516 Fix small typo in NewRemoteContext comment
R=verwaest@chromium.org,dcheng@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2137943003
Cr-Commit-Position: refs/heads/master@{#37647}
2016-07-11 14:32:48 +00:00
mstarzinger
136e60a7ce [turbofan] Remove eager frame state from comparisons.
This removes the frame state input representing the before-state from
nodes having any comparison operator. Lowering that inserts number
conversions of the inputs has to be disabled when deoptimization is
enabled, because the frame state layout is no longer known.

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

Review-Url: https://codereview.chromium.org/2134173002
Cr-Commit-Position: refs/heads/master@{#37646}
2016-07-11 14:25:42 +00:00
mstarzinger
ecfec3b039 [turbofan] Respect pretenuring of heap numbers.
This extends pretenuring decisions based on allocation sites to heap
numbers that are allocated as part of object literals. It ensures memory
locality of a bigger enclosure of the deep copy of an object literal.

R=bmeurer@chromium.org
TEST=cctest/test-heap/OptimizedPretenuringMixedInObjectProperties

Review-Url: https://codereview.chromium.org/2135933002
Cr-Commit-Position: refs/heads/master@{#37645}
2016-07-11 14:15:24 +00:00
jgruber
a991558719 [builtins] Show builtin frames in PrintStack()
Builtin frames can simply use the existing JavaScriptFrame::Print
method. Builtin exit frames need their own implementation which can print
the function name, receiver and parameters.

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

Review-Url: https://codereview.chromium.org/2134093002
Cr-Commit-Position: refs/heads/master@{#37644}
2016-07-11 13:28:59 +00:00
bmeurer
41b882573e [turbofan] CheckBounds with Unsigned32 inputs is also supported.
If the first input to CheckBounds is already an Unsigned32, then
we can just truncate both inputs to word32 and lower the bounds
check.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2138753002
Cr-Commit-Position: refs/heads/master@{#37643}
2016-07-11 13:16:20 +00:00
titzer
9be74f6687 [wasm] Add a BytecodeIterator and use in non-performance-critical situations.
R=ahaas@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2135693002
Cr-Commit-Position: refs/heads/master@{#37642}
2016-07-11 13:00:27 +00:00
titzer
85fac49992 [turbofan] Remove unnecessary code at end of every TurboFan function.
R=jarin@chromium.org, mstarzinger@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2132393002
Cr-Commit-Position: refs/heads/master@{#37641}
2016-07-11 12:41:31 +00:00
peterssen
e28b16265a Fix FastAccessorAssembler inverted jump conditions
BUG=chromium:508898

Review-Url: https://codereview.chromium.org/2135153002
Cr-Commit-Position: refs/heads/master@{#37640}
2016-07-11 12:38:17 +00:00
bmeurer
897b6f789d [turbofan] Always run type propagation in SimplifiedLowering.
This unifies phases in SimplifiedLowering, and will enable
more optimizations, i.e. we can do the output representation
during typing then, which in turn should allow us to use the
feedback type even in unchecked operators (i.e. NumberAbs).

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2137003002
Cr-Commit-Position: refs/heads/master@{#37639}
2016-07-11 12:10:07 +00:00
bmeurer
6ade0ee308 [turbofan] Improve NumberAbs lowering for Signed32 input.
We can just do the Int32Abs lowering always for Signed32 inputs.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2134143002
Cr-Commit-Position: refs/heads/master@{#37638}
2016-07-11 11:51:31 +00:00
rmcilroy
4f2d37da0c [Interpreter] Add ClassOf intrinsic.
BUG=v8:4280

Review-Url: https://codereview.chromium.org/2128233002
Cr-Commit-Position: refs/heads/master@{#37637}
2016-07-11 11:48:21 +00:00
neis
18551d7a32 [runtime] Fix typo in args check of %OptimizeOsr.
R=mstarzinger@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2134163002
Cr-Commit-Position: refs/heads/master@{#37636}
2016-07-11 11:26:26 +00:00
mstarzinger
f57b0604ed [crankshaft] Re-enable Math.min/max tests that no longer fail.
R=titzer@chromium.org

Review-Url: https://codereview.chromium.org/2132373002
Cr-Commit-Position: refs/heads/master@{#37635}
2016-07-11 11:14:00 +00:00
caitp
08d0012dda [keys] propagate PropertyFilter to proxy targets in KeyAccumulator
BUG=v8:5174, v8:1543
R=cbruni@chromium.org, littledan@chromium.org

Review-Url: https://codereview.chromium.org/2129193003
Cr-Commit-Position: refs/heads/master@{#37634}
2016-07-11 10:39:35 +00:00
danno
3e2085eba4 [turbofan] Add MachineType to LinkageLocation
By adding MachineType to LinkageLocation, it is possible not only to reason
about the location of a LinkageLocation on the stack, but also about it's
size. This will be useful in follow-on CLs that attempt to merge some of the
parameter passing logic of tail calls and normal (non-tail) calls.

As a nice side-effect, it is no longer necessary to separately keep a
MachineSignature in a CallDescriptor, because the MachineTypes contianed in
LinkageLocation for all of the Descriptor's parameters and return types are
sufficient. This CL therefore removes the MachineSignature from the
CallDescriptor and adjusts all the calling code accordingly, simplifying and
de-duplicating code in a bunch of places.

R=titzer@chromium.org, bmeurer@chromium.org
LOG=N

Review-Url: https://codereview.chromium.org/2124023003
Cr-Commit-Position: refs/heads/master@{#37633}
2016-07-11 10:39:34 +00:00
jkummerow
bec49a4876 Revert of Avoid Context::Enter and Context::Exit if we're reentering the active and last entered context (patchset #2 id:20001 of https://codereview.chromium.org/2131483002/ )
Reason for revert:
crashes: crbug.com/626719

Original issue's description:
> Avoid Context::Enter and Context::Exit if we're reentering the active and last entered context
>
> A bit of browsing around indicates that the new fast-path is taken most of the time:
>    3496 Entering new
>  152295 Reentering same
>
> BUG=
>
> Committed: https://crrev.com/1829eb661ef1cf432fb551bcb193f521a219d490
> Cr-Commit-Position: refs/heads/master@{#37570}

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

Review-Url: https://codereview.chromium.org/2140563002
Cr-Commit-Position: refs/heads/master@{#37632}
2016-07-11 10:23:53 +00:00
jgruber
be5808bff8 Correctly format builtin constructors in stack traces
CallSite::IsConstructor() was unable to recognize builtin construct stubs
(NumberConstructor_ConstructStub and StringConstructor_ConstructStub) as
constructors, and thus these frames were not formatted correctly in stack
traces.

Fix this by explicitly marking their Code objects as construct stubs and
passing along a special receiver value when we encounter such cases in
CaptureSimpleStackTrace.

R=mstarzinger@chromium.org, yangguo@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2125163004
Cr-Commit-Position: refs/heads/master@{#37631}
2016-07-11 10:05:03 +00:00
bmeurer
71becab88d [turbofan] Lower Smi field loads to Word32 field loads.
If a Smi field load is truncated to Word32, we can just load the upper
32 bits on 64-bit architectures (with 32-bit Smis), which avoids the
nasty shift right that we'd have to perform otherwise to untag it.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2140553002
Cr-Commit-Position: refs/heads/master@{#37630}
2016-07-11 09:24:58 +00:00
bmeurer
4f97632880 [turbofan] Eliminate a few redundant bounds checks.
Usually loops run from 0 to some array length l, which means the
induction variable i will probably have type Unsigned32, just like
the length l. The CheckBounds operation lowers to an Uint32LessThan
comparison, so if we also lower the user level i < l comparison to
Uint32LessThan (whenever possible), we get some bounds check elimination
for free (via value numbering plus branch condition elimination).

This merges the branch condition elimination phase with the late
optimization phase to make this magic happen.

R=jarin@chromium.org
BUG=v8:4930,v8:5141

Review-Url: https://codereview.chromium.org/2135123002
Cr-Commit-Position: refs/heads/master@{#37629}
2016-07-11 08:40:59 +00:00
mstarzinger
7dbc223983 [turbofan] Enable pretenuring tests for optimized code.
This enables tests which verify allocation site feedback is used and
influences pretenuring decisions. By now TurboFan is respecting such
feedback. Ignition however doesn't provide such feedback yet.

R=mvstanton@chromium.org

Review-Url: https://codereview.chromium.org/2135563003
Cr-Commit-Position: refs/heads/master@{#37628}
2016-07-11 08:40:58 +00:00
Alexander.Gilday2
7f162dbcb6 [turbolizer] Improve code comments in disassembly
This change analyzes and links the output of --code-comments in the disassembly view within turbolizer with the other views, such that selecting these comments will also select the respective blocks/lines/nodes within the other views. The block start comments (e.g. -- B4 start --) are linked with the blocks in the schedule phase view and vice versa. The source position comments (e.g. -- primes.js:3:10 --) select the respective spans, lines, and nodes in the JavaScript code view, the schedule phase view, and the other compilation phase views respectively, and vice versa. It also modifies the display of the line and column numbers in the source position comments to be offset from 1 instead of 0 and ignore the initial source position of the first line of code (from removal of the function name in the compiler).

Also fixed the bug where previous selections weren't being cleared properly across multiple views, adding appropriate clear calls when using the selection broker.

Review-Url: https://codereview.chromium.org/2133663002
Cr-Commit-Position: refs/heads/master@{#37627}
2016-07-11 08:28:22 +00:00
machenbach
4af2bb9e38 Revert three commits due to cpu-profiler failures.
Revert "Move SimulatorHelper into V8 out of profiler clients."

This reverts commit b837241150.

Revert "Make use of v8::TickSample instead of v8::internal::TickSample in logger."

This reverts commit c3a16f0a9f.

Revert "Clean up SimulatorHelper code."

This reverts commit 8ee236e144.

BUG=v8:5193
TBR=alph@chromium.org, yangguo@chromium.org

Review-Url: https://codereview.chromium.org/2138643003
Cr-Commit-Position: refs/heads/master@{#37626}
2016-07-11 08:03:26 +00:00
jgruber
59705072ad Enable visibility and security checks for builtin exit frames
Enable the same checks for builtin exit frames as are used for all other
standard (i.e. non-wasm) types, and refactor them into a single helper
class.

R=yangguo@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2135593002
Cr-Commit-Position: refs/heads/master@{#37625}
2016-07-11 07:50:46 +00:00
machenbach
168d9eaa36 Reland of [gn] Switch gcc bots to gn (patchset #1 id:1 of https://codereview.chromium.org/2130303002/ )
Reason for revert:
Relanding as the goma problem is due to an upgrade of the binutils version we use.

Original issue's description:
> Revert of [gn] Switch gcc bots to gn (patchset #3 id:40001 of https://codereview.chromium.org/2124263002/ )
>
> Reason for revert:
> There are a bunch of goma errors on the gcc bot now. Maybe connected to this CL.
>
> https://build.chromium.org/p/tryserver.v8/builders/v8_linux_gcc_compile_rel/builds/19068
>
> Original issue's description:
> > [gn] Switch gcc bots to gn
> >
> > BUG=chromium:474921
> >
> > Committed: https://crrev.com/73f154ba601dc70c4007968fa902d4beacba4393
> > Cr-Commit-Position: refs/heads/master@{#37580}
>
> TBR=vogelheim@chromium.org,jochen@chromium.org
> # Skipping CQ checks because original CL landed less than 1 days ago.
> NOPRESUBMIT=true
> NOTREECHECKS=true
> NOTRY=true
> BUG=chromium:474921
>
> Committed: https://crrev.com/980d0d6e227f8de3cc0b71a0d3f492908adcf138
> Cr-Commit-Position: refs/heads/master@{#37603}

TBR=vogelheim@chromium.org,jochen@chromium.org
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=chromium:474921
NOTRY=true

Review-Url: https://codereview.chromium.org/2132333002
Cr-Commit-Position: refs/heads/master@{#37624}
2016-07-11 07:28:59 +00:00
yangguo
dfcc5d4ee8 [debugger] omit exception events for rethrown exceptions in async.
R=bmeurer@chromium.org, littledan@chromium.org
BUG=v8:5167

Review-Url: https://codereview.chromium.org/2124813002
Cr-Commit-Position: refs/heads/master@{#37623}
2016-07-11 05:50:03 +00:00
zhengxing.li
42baff6abe X87: [builtins] Construct builtin frame in String/Number ctors.
port d49d3864d7 (r37598)

  original commit message:

BUG=

Review-Url: https://codereview.chromium.org/2132303002
Cr-Commit-Position: refs/heads/master@{#37622}
2016-07-11 05:43:39 +00:00
bmeurer
03bde2660a [turbofan] Introduce CheckedInt32Div and CheckedInt32Mod operators.
Consume Smi/Signed32 feedback for division and modulus and introduce
appropriate checked operators. This is especially important for modulus
where the Float64Mod operator is significantly slower than Int32Mod on
most platforms. For division it's mostly important to propagate
integerness, i.e. to avoid follow-up conversions between float and
int32.

Drive-by-fix: Use Int32Mod for the ModulusStub (and the bytecode handler)
when the inputs are both Smi.

R=jarin@chromium.org

Review-Url: https://codereview.chromium.org/2138633002
Cr-Commit-Position: refs/heads/master@{#37621}
2016-07-11 05:27:55 +00:00
v8-autoroll
21e5e23f42 Update V8 DEPS.
Rolling v8/build to 766297ee7fd0da3d95276a02ff11089ec3aced9b

Rolling v8/tools/clang to 29e654f4a3d0fa9c7c69f2967d427ccbd6f4d4c8

Rolling v8/tools/mb to c279952c34ea262021767ad1f2087f988d85881c

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

Review-Url: https://codereview.chromium.org/2136463003
Cr-Commit-Position: refs/heads/master@{#37620}
2016-07-09 03:23:54 +00:00
alph
8ee236e144 Clean up SimulatorHelper code.
Review-Url: https://codereview.chromium.org/2131643003
Cr-Commit-Position: refs/heads/master@{#37619}
2016-07-09 02:06:50 +00:00
alph
c3a16f0a9f Make use of v8::TickSample instead of v8::internal::TickSample in logger.
BUG=v8:4789

Review-Url: https://codereview.chromium.org/2133533002
Cr-Commit-Position: refs/heads/master@{#37618}
2016-07-09 01:20:14 +00:00
alph
b837241150 Move SimulatorHelper into V8 out of profiler clients.
Clients should not know about the simulator.

BUG=v8:4789

Review-Url: https://codereview.chromium.org/2128613004
Cr-Commit-Position: refs/heads/master@{#37617}
2016-07-08 23:52:49 +00:00
jbudorick
f2ce4fe63b [Android] Switch outdated pylib.* references to equivalent devil.android.* ones.
BUG=chromium:617761
NOTRY=true

Review-Url: https://codereview.chromium.org/2113453007
Cr-Commit-Position: refs/heads/master@{#37616}
2016-07-08 17:30:27 +00:00
littledan
97e8046e44 Avoid calling the builtin String.prototype.split in Intl
The Intl code previously called the initial value of String.prototype.split
for some internal operations. However, this did not have the intended effect
as Intl only needs to split strings by strings, but String.prototype.split
has integration with Symbol.split for RegExps.

This patch replaces the calls of StringSplit in the Intl implementation
with direct calls to the %StringSplit runtime function to avoid the issue.

R=yangguo@chromium.org
BUG=v8:5179

Review-Url: https://codereview.chromium.org/2126073002
Cr-Commit-Position: refs/heads/master@{#37615}
2016-07-08 16:53:09 +00:00
ssanfilippo
c9fedd252c [Interpreter] Support Linux perf >= 4.1 in linux_perf_report.py.
Since Linux 4.1, flag -f became -F, but the long option --flags stayed
the same. Using --flags assures compatibility with new and old versions.

Also, symbols appear to be reported as name+offset in newer versions
even when not requested, so we trim the latter part if present.

BUG=v8:4899
LOG=N

Review-Url: https://codereview.chromium.org/2134703002
Cr-Commit-Position: refs/heads/master@{#37614}
2016-07-08 16:24:45 +00:00
alph
120b753f71 Introduce v8::CpuProfiler::New and v8::CpuProfiler::Dispose API.
Isolate is not going to retain a CPU profiler.
The client will be creating an instance of profiler when needed.

Deprectate v8::Isolate::GetCpuProfiler()

BUG=v8:4789

Review-Url: https://codereview.chromium.org/2117343006
Cr-Commit-Position: refs/heads/master@{#37613}
2016-07-08 15:01:10 +00:00
Miran.Karic
29b89b489a Revert of MIPS: [turbofan] Fix addition for deoptimization. (patchset #3 id:40001 of https://codereview.chromium.org/2102063002/ )
Reason for revert:
This workaround is no longer needed, port of e60c4053c7 fixes the issue.

Original issue's description:
> MIPS: [turbofan] Fix addition for deoptimization.
>
> In turbofan, after an addition operation where the same register is the
> output and both inputs, if deoptimization is performed the input is
> overwritten with the output value and the final result is not correct.
> This is fixed by restoring the original value of the input before
> deoptimization.
>
> BUG=
> TEST=mjsunit/regress/regress-int32-truncation
>
> Committed: https://crrev.com/99385e8e4bcef1f333ede61c936528bfc0c8ecfa
> Cr-Commit-Position: refs/heads/master@{#37524}

TBR=akos.palfi@imgtec.com,balazs.kilvady@imgtec.com,ivica.bogosavljevic@imgtec.com
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=

Review-Url: https://codereview.chromium.org/2129083003
Cr-Commit-Position: refs/heads/master@{#37612}
2016-07-08 14:57:50 +00:00
titzer
2dc9909c0c [wasm] Make print_wasm_code_size into a regular V8 counter.
R=ahaas@chromium.org
BUG=

Review-Url: https://codereview.chromium.org/2130293002
Cr-Commit-Position: refs/heads/master@{#37611}
2016-07-08 13:42:44 +00:00
Miran.Karic
91f63b2ee4 MIPS: [turbofan] Make sure binop results do not overwrite deoptimization inputs on arm.
Port e60c4053c7

        this fix applies to mips as well.

BUG=
TEST=mjsunit/regress/regress-int32-truncation

Review-Url: https://codereview.chromium.org/2133503004
Cr-Commit-Position: refs/heads/master@{#37610}
2016-07-08 12:59:17 +00:00
mstarzinger
3660505e5f [turbofan] Re-enable debugger tests that no longer fail.
R=yangguo@chromium.org

Review-Url: https://codereview.chromium.org/2127423002
Cr-Commit-Position: refs/heads/master@{#37609}
2016-07-08 12:49:53 +00:00
mstarzinger
b1cbb98387 [turbofan] Remove eager frame state from divisions.
This removes the frame state input representing the before-state from
nodes having the {JSDivide} or the {JSModulus} operator. Lowering that
inserts number conversions of the inputs has to be disabled when
deoptimization is enabled, because the frame state layout is no longer
known.

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

Review-Url: https://codereview.chromium.org/2121153003
Cr-Commit-Position: refs/heads/master@{#37608}
2016-07-08 11:20:23 +00:00
ahaas
4d631c8cd9 [x64] Compare handles instead of code targets in emit_code_target.
This CL is on the way to extend parallel compilation of wasm modules to code generation. With parallel compilation it is not allowed to dereference handles during code generation. However, the is_identical_to check dereferences handles. In this CL we therefore replace the call to is_identical_to with a handle comparison.

Review-Url: https://codereview.chromium.org/2109143002
Cr-Commit-Position: refs/heads/master@{#37607}
2016-07-08 10:33:16 +00:00
machenbach
55b89ad7e6 [CQ] Temporarily make gcc bot experimental due to goma problems
BUG=chromium:626622
NOTRY=true
NOPRESUBMIT=true
TBR=sergiyb@chromium.org

Review-Url: https://codereview.chromium.org/2136443004
Cr-Commit-Position: refs/heads/master@{#37606}
2016-07-08 09:58:37 +00:00
machenbach
8545269374 [CQ] Temporarily remove gcc bot due to goma problems
BUG=chromium:626622
NOTRY=true
TBR=sergiyb@chromium.org

Review-Url: https://codereview.chromium.org/2134643002
Cr-Commit-Position: refs/heads/master@{#37605}
2016-07-08 09:55:23 +00:00
Michael Starzinger
2c09760ac4 [turbofan] Re-enable test that no longer fails.
This enables tests which rely on the context available at "debugger"
statements to be accurate. This is the case by now when deoptimization
information is available.

R=yangguo@chromium.org
BUG=v8:4055

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

Cr-Commit-Position: refs/heads/master@{#37604}
2016-07-08 09:52:07 +00:00
machenbach
980d0d6e22 Revert of [gn] Switch gcc bots to gn (patchset #3 id:40001 of https://codereview.chromium.org/2124263002/ )
Reason for revert:
There are a bunch of goma errors on the gcc bot now. Maybe connected to this CL.

https://build.chromium.org/p/tryserver.v8/builders/v8_linux_gcc_compile_rel/builds/19068

Original issue's description:
> [gn] Switch gcc bots to gn
>
> BUG=chromium:474921
>
> Committed: https://crrev.com/73f154ba601dc70c4007968fa902d4beacba4393
> Cr-Commit-Position: refs/heads/master@{#37580}

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

Review-Url: https://codereview.chromium.org/2130303002
Cr-Commit-Position: refs/heads/master@{#37603}
2016-07-08 09:36:37 +00:00
yangguo
3885fa0974 Do not record source positions for non-script or native script compiles.
R=bmeurer@chromium.org, mstarzinger@chromium.org, rmcilroy@chromium.org

Review-Url: https://codereview.chromium.org/2112853002
Cr-Commit-Position: refs/heads/master@{#37602}
2016-07-08 08:49:45 +00:00