Commit Graph

32102 Commits

Author SHA1 Message Date
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
ahaas
717b2eafdd [wasm] Use handles in wasm::GetDebugInfo.
Handles are necessary in wasm::GetDebugInfo because a GC can be
triggered in this function.

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

Review-Url: https://codereview.chromium.org/2132553002
Cr-Commit-Position: refs/heads/master@{#37601}
2016-07-08 08:24:03 +00:00
brendan.kirby
237a00221c Update binutils version to match Chromium.
BUG=

Review-Url: https://codereview.chromium.org/2126423002
Cr-Commit-Position: refs/heads/master@{#37600}
2016-07-08 07:03:29 +00:00
lpy
4e53b1a1a7 Remove v8- prefix of file name in libsampler.
BUG=

Review-Url: https://codereview.chromium.org/2125023004
Cr-Commit-Position: refs/heads/master@{#37599}
2016-07-08 06:47:54 +00:00
jgruber
d49d3864d7 [builtins] Construct builtin frame in String/Number ctors
BUG=v8:5173
R=bmeurer@chromium.org

Review-Url: https://codereview.chromium.org/2118283003
Cr-Commit-Position: refs/heads/master@{#37598}
2016-07-08 06:38:19 +00:00
ben
1f53e42bd6 Handle symbols in FrameMirror#invocationText().
Fix a TypeError when putting together the invocationText for a symbol
method's stack frame.

See https://github.com/nodejs/node/issues/7536.

Review-Url: https://codereview.chromium.org/2122793003
Cr-Commit-Position: refs/heads/master@{#37597}
2016-07-07 21:32:03 +00:00
littledan
62c950bc26 Reland of [esnext] ship --harmony-object-values-entries (patchset #1 id:1 of https://codereview.chromium.org/2129533004/ )
Reason for revert:
Performance stayed the same after the revert; relanding.

Original issue's description:
> Revert of [esnext] ship --harmony-object-values-entries (patchset #1 id:1 of https://codereview.chromium.org/2116053003/ )
>
> Reason for revert:
> Revert to see if it addresses the performance regression observed in chromium:625956 in automated graphs
>
> Original issue's description:
> > [esnext] ship --harmony-object-values-entries
> >
> > BUG=v8:4663
> > R=littledan@chromium.org, adamk@chromium.org
> >
> > Committed: https://crrev.com/ab529234853a1768642f8f6c907aaaa5ea8b19bf
> > Cr-Commit-Position: refs/heads/master@{#37485}
>
> TBR=adamk@chromium.org,caitpotter88@gmail.com
> # Not skipping CQ checks because original CL landed more than 1 days ago.
> BUG=v8:4663
>
> Committed: https://crrev.com/1177750a98faaa11e92ece13b70115bf704baf3b
> Cr-Commit-Position: refs/heads/master@{#37566}

TBR=adamk@chromium.org,caitpotter88@gmail.com
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=v8:4663

Review-Url: https://codereview.chromium.org/2127253002
Cr-Commit-Position: refs/heads/master@{#37596}
2016-07-07 20:09:09 +00:00
franzih
2f36ee7176 [builtins] Migrate SharedArrayBuffer.byteLength to C++.
Drive-by-fix: hydrogen code does not blindly return the
byteLength offset, instead it executes what is defined
in the byteLength getter.

BUG=

Review-Url: https://codereview.chromium.org/2123263002
Cr-Commit-Position: refs/heads/master@{#37595}
2016-07-07 19:44:23 +00:00
jochen
0058f82e2c Add an API to create a detached global object
Such an object can be used to later create a context from it. It has to
have access checks with handlers enabled, as it cannot be accessed
otherwise.

BUG=chromium:618305
R=verwaest@chromium.org

Review-Url: https://codereview.chromium.org/2107673003
Cr-Commit-Position: refs/heads/master@{#37594}
2016-07-07 19:38:08 +00:00
machenbach
312d0149af [CQ] Make gyp bot a blocking bot
BUG=chromium:474921
NOTRY=true
TBR=vogelheim@chromium.org, jochen@chromium.org, tandrii@chromium.org

Review-Url: https://codereview.chromium.org/2126793004
Cr-Commit-Position: refs/heads/master@{#37593}
2016-07-07 17:35:12 +00:00
jbudorick
4ff581dd3a [Android] Guard android_assets usage with enable_java_templates.
BUG=pdfium:38

Review-Url: https://codereview.chromium.org/2113413002
Cr-Commit-Position: refs/heads/master@{#37592}
2016-07-07 16:14:36 +00:00
jochen
b93c80a603 If we can't rehash the backing store for weak sets & maps, do a last resort GC
BUG=v8:4909
R=hpayer@chromium.org

Review-Url: https://codereview.chromium.org/2129933002
Cr-Commit-Position: refs/heads/master@{#37591}
2016-07-07 15:49:44 +00:00
mstarzinger
b3b1bf279a [turbofan] Context in debugger is accurate by now.
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=mvstanton@chromium.org
BUG=v8:4035

Review-Url: https://codereview.chromium.org/2125773005
Cr-Commit-Position: refs/heads/master@{#37590}
2016-07-07 14:26:52 +00:00
mstarzinger
67efc381b0 [turbofan] Re-enable tests that no longer fail.
R=mvstanton@chromium.org

Review-Url: https://codereview.chromium.org/2127093002
Cr-Commit-Position: refs/heads/master@{#37589}
2016-07-07 13:40:00 +00:00
jarin
8ff93b6d69 [turbofan] Always silence NaNs when storing to a double array.
Review-Url: https://codereview.chromium.org/2110343003
Cr-Commit-Position: refs/heads/master@{#37588}
2016-07-07 12:44:40 +00:00
ishell
3486bbc219 [runtime] Move HasUnwindingInfoField of Code::flags to unused ICStateField.
This should recover the regression caused by https://codereview.chromium.org/1993653003.
(Same sympthoms as in http://crbug/619016).

BUG=chromium:624309

Review-Url: https://codereview.chromium.org/2127103002
Cr-Commit-Position: refs/heads/master@{#37587}
2016-07-07 12:44:39 +00:00
ivica.bogosavljevic
db6d8e2a5a MIPS: [wasm] Detect unrepresentability in the float32-to-int32 conversion correctly on arm
Port de369129d2

Original commit message:

In the current implementation of wasm an unrepresentable input of the
float32-to-int32 conversion is detected by first truncating the input, then
converting the truncated input to int32 and back to float32, and then checking
whether the result is the same as the truncated input.

This input check does not work on arm and arm64 for an input of (INT32_MAX + 1)
because on these platforms the float32-to-int32 conversion results in INT32_MAX
if the input is greater than INT32_MAX.  When INT32_MAX is converted back to
float32, then the result is (INT32_MAX + 1) again because INT32_MAX cannot be
represented precisely as float32, and rounding-to-nearest results in (INT32_MAX
+ 1). Since (INT32_MAX + 1) equals the truncated input value, the input appears
to be representable.

With the changes in this CL, the result of the float32-to-int32 conversion is
incremented by 1 if the original result was INT32_MAX. Thereby the detection of
unrepresenable inputs in wasm works. Note that since INT32_MAX cannot be
represented precisely in float32, it can also never be a valid result of the
float32-to-int32 conversion.

BUG=cctest/test-run-wasm/RunWasmCompiled_I32SConvertF32,cctest/test-run-wasm/RunWasmCompiled_I32UConvertF32

Review-Url: https://codereview.chromium.org/2130763002
Cr-Commit-Position: refs/heads/master@{#37586}
2016-07-07 12:41:27 +00:00
ishell
3fbb45216d [runtime] Better encapsulation of dictionary objects handling in lookup iterator.
Now LookupIterator follows the same pattern of prepare transition, apply transition
and write value when adding new properties to dictionary objects.

JSGlobalObject case:
* Prepare transition phase ensures that there is a "transition" property cell
  prepared for receiving a value.
* Apply transition phase does nothing.
* Prepare for data property phase ensures that the existing property cell can
  receive the value.
* Write value phase writes value directly to the current property cell.

JSObject case:
* Prepare transition phase prepares the object for receiving a data value (which
  could switch an object to dictionary mode).
* Apply transition phase migrates object to a transition map. If the map happened
  to be a dictionary mode object's map then an uninitialized entry added to the
  properties dictionary.
* Prepare for data property phase does nothing.
* Write value phase just puts value to the properties dictionary.

BUG=chromium:576312

Review-Url: https://codereview.chromium.org/2127583002
Cr-Commit-Position: refs/heads/master@{#37585}
2016-07-07 12:35:06 +00:00
mstarzinger
07612e0d35 [test] Remove obsolete mjsunit/call-counts test.
R=mvstanton@chromium.org
BUG=v8:4458

Review-Url: https://codereview.chromium.org/2129903002
Cr-Commit-Position: refs/heads/master@{#37584}
2016-07-07 12:04:11 +00:00
mstarzinger
bae7870c41 [turbofan] Re-enable tests that are not longer too slow.
R=mvstanton@chromium.org

Review-Url: https://codereview.chromium.org/2132503002
Cr-Commit-Position: refs/heads/master@{#37583}
2016-07-07 11:30:15 +00:00
verwaest
a5020673cc Devirtualize AssignFeedbackVectorSlots
In AstNumberingVisitor we always know what node we're dealing with, so there's no reason for this method to be virtual. This additionally deletes 3 calls to AssignFeedbackVectorSlots that would always end up in the empty version.

BUG=

Review-Url: https://codereview.chromium.org/2128613003
Cr-Commit-Position: refs/heads/master@{#37582}
2016-07-07 11:26:56 +00:00
ulan
6bf6ab79e3 Move compile and parse trace events to a separate category.
For motivation see the bug.

BUG=625865
LOG=NO

Review-Url: https://codereview.chromium.org/2121273002
Cr-Commit-Position: refs/heads/master@{#37581}
2016-07-07 11:20:38 +00:00
machenbach
73f154ba60 [gn] Switch gcc bots to gn
BUG=chromium:474921

Review-Url: https://codereview.chromium.org/2124263002
Cr-Commit-Position: refs/heads/master@{#37580}
2016-07-07 11:17:19 +00:00
machenbach
59f2f3d836 [gn] Switch linux bots on beta/stable to gn
BUG=chromium:474921
NOTRY=true
TBR=vogelheim@chromium.org, jochen@chromium.org

Review-Url: https://codereview.chromium.org/2130723002
Cr-Commit-Position: refs/heads/master@{#37579}
2016-07-07 11:04:49 +00:00
ulan
72a2e68694 Add trace event to V8 compiler API.
BUG=chromium:626256
LOG=NO

Review-Url: https://codereview.chromium.org/2126193002
Cr-Commit-Position: refs/heads/master@{#37578}
2016-07-07 10:31:05 +00:00
jkummerow
b36237b8a3 [ForIn] Fix HasEnumerableProperty for Proxies with null prototype
BUG=v8:5181

Review-Url: https://codereview.chromium.org/2129563002
Cr-Commit-Position: refs/heads/master@{#37577}
2016-07-07 10:12:06 +00:00
mstarzinger
8acc97e2e1 [runtime] Specifically handle robust RUNTIME_ASSERTs.
This changes the last few remaining RUNTIME_ASSERT calls that need to be
intentionally robust because fuzzers or other callers can invoke the
runtime functions in question with unsafe arguments.

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

Review-Url: https://codereview.chromium.org/2122173003
Cr-Commit-Position: refs/heads/master@{#37576}
2016-07-07 09:40:47 +00:00
machenbach
207fd4b9cd [gn] Fix sysroot usage with gcc
BUG=chromium:474921
TBR=jochen@chromium.org, vogelheim@chromium.org,
NOTRY=true

Review-Url: https://codereview.chromium.org/2124003003
Cr-Commit-Position: refs/heads/master@{#37575}
2016-07-07 09:27:44 +00:00
machenbach
03453d10be [gn] Fix config for using clang
Needed for https://codereview.chromium.org/2124263002/

BUG=chromium:474921
TBR=jochen@chromium.org, vogelheim@chromium.org,
NOTRY=true

Review-Url: https://codereview.chromium.org/2125703005
Cr-Commit-Position: refs/heads/master@{#37574}
2016-07-07 09:04:54 +00:00
machenbach
9a581f602e [cq] Add temporary gyp bot to CQ experiment
BUG=chromium:474921
NOTRY=true
TBR=vogelheim@chromium.org, jochen@chromium.org

Review-Url: https://codereview.chromium.org/2129853002
Cr-Commit-Position: refs/heads/master@{#37573}
2016-07-07 08:52:00 +00:00
verwaest
b3f827c8e4 Inline Declaration::IsInlineable into crankshaft
Those virtual methods shouldn't live on the AST since they are crankshaft specific, and can easily be checked inline.

BUG=

Review-Url: https://codereview.chromium.org/2125933004
Cr-Commit-Position: refs/heads/master@{#37572}
2016-07-07 08:29:05 +00:00
neis
d3aefe8cc3 [parser] Fix bug in for-of desugaring.
When reading the value property of an iterator result fails, we must not close the iterator.
This was not discovered earlier because the tests had a subtle bug.

This CL fixes both the desugaring and the tests.

BUG=

Review-Url: https://codereview.chromium.org/2119353002
Cr-Commit-Position: refs/heads/master@{#37571}
2016-07-07 08:16:13 +00:00
verwaest
1829eb661e 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=

Review-Url: https://codereview.chromium.org/2131483002
Cr-Commit-Position: refs/heads/master@{#37570}
2016-07-07 07:37:47 +00:00
neis
4a4f7175df [parser] Fix bug in destructuring binding for catch.
For variables introduced as part of a catch pattern, we used to set their
"initializer position" to the beginning of the pattern.  This lead to
full-codegen eliminating crucial hole checks when reading such variables
inside the pattern itself.

R=adamk@chromium.org, littledan@chromium.org
BUG=v8:5178

Review-Url: https://codereview.chromium.org/2123953002
Cr-Commit-Position: refs/heads/master@{#37569}
2016-07-07 07:31:16 +00:00
v8-autoroll
9d8653393a Update V8 DEPS.
Rolling v8/build to 6d9becf753310daf17f04ac4f0d8c109c364cdd2

Rolling v8/buildtools to aa47d9773d8f4d6254a587a1240b3dc023d54f06

Rolling v8/tools/gyp to bac4680ec9a5c55ab692490b6732999648ecf1e9

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

Review-Url: https://codereview.chromium.org/2123853004
Cr-Commit-Position: refs/heads/master@{#37568}
2016-07-07 03:28:34 +00:00
bjaideep
32e843dfc6 PPC/s390: [builtins] Fix MathMaxMin on arm and arm64
Port b86ac0e05a

Original commit message:

    Both of these were broken in different ways:
    * On arm, the loop counter was passed as argc on the stack.
    * On arm64, we passed argc + 1 instead of argc.

    The result in both cases was an incorrect receiver for the builtin frame
    when generating stack traces.

R=jgruber@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=v8:4815
LOG=N

Review-Url: https://codereview.chromium.org/2125913004
Cr-Commit-Position: refs/heads/master@{#37567}
2016-07-07 01:29:04 +00:00
littledan
1177750a98 Revert of [esnext] ship --harmony-object-values-entries (patchset #1 id:1 of https://codereview.chromium.org/2116053003/ )
Reason for revert:
Revert to see if it addresses the performance regression observed in chromium:625956 in automated graphs

Original issue's description:
> [esnext] ship --harmony-object-values-entries
>
> BUG=v8:4663
> R=littledan@chromium.org, adamk@chromium.org
>
> Committed: https://crrev.com/ab529234853a1768642f8f6c907aaaa5ea8b19bf
> Cr-Commit-Position: refs/heads/master@{#37485}

TBR=adamk@chromium.org,caitpotter88@gmail.com
# Not skipping CQ checks because original CL landed more than 1 days ago.
BUG=v8:4663

Review-Url: https://codereview.chromium.org/2129533004
Cr-Commit-Position: refs/heads/master@{#37566}
2016-07-06 23:09:42 +00:00
franzih
efcd385ddf [builtins] Migrate ArrayBufferPrototypeByteLength to C++.
Working on eliminating the use of ClassOf(). This function was checking IS_ARRAYBUFFER.

BUG=

Review-Url: https://codereview.chromium.org/2126603003
Cr-Commit-Position: refs/heads/master@{#37565}
2016-07-06 19:25:28 +00:00
lpy
3172f6a9ce Expose TickSample and its APIs in v8-profiler.h
We want to eventually move the profiling functionality out of V8 as library,
this patch exposes TickSample and its APIs in v8-profiler.h so that when
embedders use library, they can have more details.

Minor change: Rename tick-sample.[h|cc] to simulator-helper.[h|cc].

BUG=v8:4789
LOG=N

Review-Url: https://codereview.chromium.org/2105943002
Cr-Commit-Position: refs/heads/master@{#37564}
2016-07-06 18:40:31 +00:00
bjaideep
96ebd75600 PPC/s390: [builtins] Add receiver to builtin exit frames
Port f59a23356b

Original commit message:

    Stack trace generation requires access to the receiver; and while the
    receiver is already on the stack, we cannot determine its position
    during stack trace generation (it's stored in argv[0], and argc is only
    stored in a callee-saved register).

    This patch grants access to the receiver by pushing argc onto builtin
    exit frames as an extra argument. Compared to simply pushing the
    receiver, this requires an additional dereference during stack trace
    generation, but one fewer during builtin calls.

R=jgruber@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=v8:4815
LOG=N

Review-Url: https://codereview.chromium.org/2129643002
Cr-Commit-Position: refs/heads/master@{#37563}
2016-07-06 18:07:54 +00:00
bjaideep
5b823bfc6e PPC: [fullcode][mips][mips64][ppc][s390] Avoid trashing of a home object when doing a keyed store to a super.
Port 43aee0331d

    Fixed minor typo in ppc file.

R=ishell@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=chromium:625590
LOG=N

Review-Url: https://codereview.chromium.org/2125933002
Cr-Commit-Position: refs/heads/master@{#37562}
2016-07-06 17:58:23 +00:00
bjaideep
433572b8e0 PPC/s390: [turbofan]: Support using push instructions for setting up tail call parameters
Port bd0d9e7d87

Original commit message:

    This optimizes the passing of stack parameters in function calls.

    For some architectures (ia32/x64), using pushes when possible instead
    of bumping the stack and then storing parameters generates much
    smaller code, and in some cases is faster (e.g. when a push of a memory
    location can implement a memory-to-memory copy and thus elide an
    intermediate load. On others (e.g. ARM), the benefit is smaller, where
    it's only possible to elide direct stack pointer adjustment in certain cases
    or combine multiple register stores into a single instruction in other limited
    situations. On yet other platforms (ARM64, MIPS), there are no push instructions,
    and this optimization isn't used at all.

    Ideally, this mechanism would be used for both tail calls and normal calls,
    but "normal" calls are currently pretty efficient, and tail calls are very
    inefficient, so this CL sets the bar low for building a new mechanism to
    handle parameter pushing that only needs to raise the bar on tail calls for now.

    The key aspect of this change is that adjustment to the stack pointer
    for tail calls (and perhaps later real calls) is an explicit step separate from
    instruction selection and gap resolution, but aware of both, making it possible
    to safely recognize gap moves that are actually pushes.

R=danno@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com, mbrandy@us.ibm.com

BUG=
LOG=N

Review-Url: https://codereview.chromium.org/2123983002
Cr-Commit-Position: refs/heads/master@{#37561}
2016-07-06 17:21:03 +00:00