Commit Graph

22755 Commits

Author SHA1 Message Date
wingo
06a792b7cc Resolve references to "this" the same way as normal variables
Make the parser handle references to "this" as unresolved variables, so the
same logic as for the rest of function parameters is used for the receiver.
Minor additions to the code generation handle copying the receiver to the
context, along with the rest of the function parameters.

Based on work by Adrian Perez de Castro <aperez@igalia.com>.

BUG=v8:2700
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28263}
2015-05-06 14:18:08 +00:00
hpayer
fe0e49dfc5 Move double alignment logic into memory allocator.
BUG=chromium:436911

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

Cr-Commit-Position: refs/heads/master@{#28262}
2015-05-06 14:11:54 +00:00
ben
6618793e87 Add ObjectTemplate::New() taking FunctionTemplate.
I know the bug has been closed but this seems like a simple addition that may
be useful in other ways as well.

BUG=v8:2180
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28261}
2015-05-06 14:10:44 +00:00
mvstanton
7798548a8f Optimize the typeof operator.
typeof was implemented as a runtime function. Calling it in
optimized code with a non-constant input becomes burdensome.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28260}
2015-05-06 13:31:13 +00:00
bmeurer
203438d9bc [turbofan] Connect non-terminating loops via Terminate.
This revives the Terminate operator and removes the weird Always
operator. As a first step we let the ControlReducer connect non
terminating loops via Terminate. The next step will be to change the
graph builder to insert Terminate nodes into every loop.

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

Cr-Commit-Position: refs/heads/master@{#28259}
2015-05-06 12:51:44 +00:00
jochen
6fb1e76d6f Manage size of lists used in global handles
Make sure all lists are either regularly cleared or trimmed

R=hpayer@chromium.org
BUG=none
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#28258}
2015-05-06 12:43:29 +00:00
titzer
6d26ec0b4c Implement IdentityMap<V>, a robust, GC-safe object-identity HashMap.
R=hpayer@chromium.org, erikcorry@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28257}
2015-05-06 12:40:29 +00:00
rossberg
272818d7ff Ship string unicode escapes
R=yangguo@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28256}
2015-05-06 12:07:59 +00:00
verwaest
5f9c0df436 Remove GetDefaultReceiver, pass in undefined to sloppy-mode functions instead.
Review URL: https://codereview.chromium.org/1116003005

Cr-Commit-Position: refs/heads/master@{#28255}
2015-05-06 11:58:37 +00:00
ben
8ceb90356b Fix FreeBSD build.
Fix the following build error:

    ../deps/v8/src/compiler/graph-visualizer.h:23:1:
    error: 'FILE' does not name a type

See https://github.com/iojs/io.js/issues/1637 for background.

BUG=v8:4079
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28254}
2015-05-06 10:57:10 +00:00
conradw
97bee8e964 [strong] Fix inlining issue
The Hydrogen representation for binops was never changed to care about the
language mode. We thought this was ok, but it turns out we need to keep track
of it to make sure inlining doesn't mess with the "strongness" of binops.

Also added more rigorous inlining testing.

BUG=v8:3956
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28253}
2015-05-06 10:40:38 +00:00
vogelheim
be9570027f Implement a 'trial parse' step, that will abort pre-parsing excessively
long and trivial functions, so that they can be eagerly compiled after all.
This essentially allows the parser to renege on its earlier decision to
lazy-parse, if additional information suggests it was a bad decision.

BUG=chromium:470930
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#28252}
2015-05-06 10:21:27 +00:00
bmeurer
7b33409ba3 [turbofan] Add support for advanced reducers.
An AdvancedReducer is basically a regular Reducer with an editor
that can perform graph editing operations beyond changing or
replacing the node that is currently being reduced. The GraphReducer
is the default implementation of the AdvancedReducer::Editor interface.

The ControlReducerImpl is now just an AdvancedReducer, which
temporarily requires a Finish method in the reducer to implement
the dead node trimming until we move that to the GraphReducer
(which in turn requires that all loops are connected to End).

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

Cr-Commit-Position: refs/heads/master@{#28251}
2015-05-06 10:12:52 +00:00
yangguo
a5de69f4f8 Migrate error messages, part 8.
R=mvstanton@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28250}
2015-05-06 07:52:05 +00:00
machenbach
f192f4cadd [test] Mark test as flaky.
TBR=yangguo@chromium.org
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#28249}
2015-05-06 07:34:01 +00:00
yangguo
8b6c2a805d Mark mjsunit/allocation-site-info.js as NO_VARIANTS.
NOTRY=true
TBR=machenbach@chromium.org
BUG=4078
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28248}
2015-05-06 07:20:57 +00:00
machenbach
4a2b4cdbf8 Revert of [V8] Reland https://codereview.chromium.org/1100993003/ (patchset #1 id:1 of https://codereview.chromium.org/1121833003/)
Reason for revert:
[Sheriff] Speculative revert for breaking layout tests - will reland if it doesn't help:
http://build.chromium.org/p/client.v8/builders/V8-Blink%20Linux%2064/builds/3178

Original issue's description:
> [V8] Reland https://codereview.chromium.org/1100993003/
>
> Chromium tests were prepared in https://codereview.chromium.org/1118743003/
> Blink tests in https://codereview.chromium.org/1115193002/
>
> LOG=Y
> BUG=chromium:480652
> R=yangguo@chromium.org
>
> Committed: https://crrev.com/19b62e211d1829108e5c85c5043dd755afa17178
> Cr-Commit-Position: refs/heads/master@{#28229}

TBR=yangguo@chromium.org,kozyatinskiy@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=chromium:480652

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

Cr-Commit-Position: refs/heads/master@{#28247}
2015-05-06 06:59:43 +00:00
chunyang.dai
5f047ff651 X87: Handle the case when derived constructor is [[Call]]ed with 0 args.
port cf53fed972 (r28242).

original commit message:

    ArgumentsAdaptorStub for derived constructor (the one that needs
    new.target) works in this way:
     - If the constructor is invoked via the Construct stub, we know that
       actual arguments always include new.target. ``arguments`` object
       however should not include a new.target, therefore we remove it.
       We achieve this by decrementing the argument count.
     - If the constructor is invoked as a call, we do not care for a correct
       ``arguments`` array since the constructor will immediately throw on
       entrance.
    The bug is that the call could actually pass 0 actual arguments, but I
    decrement unconditionally :(. The fix is to detect this case and avoid
    decrementing. ``arguments`` is bogus, but it is ok as constructor
    throws.

    Long-term we should just remove mucking about with arguments for
    new.target and just get it from the stack.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28246}
2015-05-06 03:46:57 +00:00
v8-autoroll
5a44be9605 Update V8 DEPS.
Rolling v8/tools/clang to 8ed88fc35e20182d6ecc3dde107606f609c46b23

TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28245}
2015-05-06 03:30:21 +00:00
chunyang.dai
1f28a3df07 Disable RunAllocate test case for turbofan unsupported platform.
"RunAllocate" test case is added in d6945db7. it invokes Linkage::GetStubCallDescriptor
   which is unimplemented for turbofan unsupported platform.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28244}
2015-05-06 02:04:57 +00:00
dpranke
978acb8d5e Adjust the visibility of the standalone targets in the GN build.
As part of the migration from GYP->GN, we want to make sure that we
can track when new targets are added to either the GYP or GN builds
and that we are building everything we expect to build.

In GN, unlike GYP, if a build file gets referenced from other files,
building 'all' will cause every target to be built in it. This means in
particular, that we can end up trying to build targets that are not
necessarily intended to be visible to the rest of the build. To get
around this, any target that is defined but hidden (like 'v8_snapshot',
in V8's case) should still be visible to a top-level target called
"//:gn_visibility".

R=brettw@chromium.org, machenbach@chromium.org
BUG=461019
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28243}
2015-05-05 21:16:22 +00:00
dslomov
cf53fed972 Handle the case when derived constructor is [[Call]]ed with 0 args.
ArgumentsAdaptorStub for derived constructor (the one that needs
new.target) works in this way:
 - If the constructor is invoked via the Construct stub, we know that
   actual arguments always include new.target. ``arguments`` object
   however should not include a new.target, therefore we remove it.
   We achieve this by decrementing the argument count.
 - If the constructor is invoked as a call, we do not care for a correct
   ``arguments`` array since the constructor will immediately throw on
   entrance.
The bug is that the call could actually pass 0 actual arguments, but I
decrement unconditionally :(. The fix is to detect this case and avoid
decrementing. ``arguments`` is bogus, but it is ok as constructor
throws.

Long-term we should just remove mucking about with arguments for
new.target and just get it from the stack.

R=arv@chromium.org,rossberg@chromium.org
BUG=chromium:474783
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#28242}
2015-05-05 19:57:04 +00:00
dusan.milosavljevic
c37f439b70 MIPS: Fix long branch mode and FPU branches.
- Add long branche mode for FPU branches.
- Fix FPU branches for unordered conditions.
- Provide FPU [un]ordered condition negation schema.

TEST=mjsunit/miror-objects, constant-folding-2, external-array
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28241}
2015-05-05 19:20:54 +00:00
balazs.kilvady
2a86d26f33 MIPS: Improve '[es6] When comparing two symbols we may need to throw a TypeError'.
Improve d26f5d3923

Original commit message:
When comparing a symbol to istself using <, <=, > or >= we need to
throw a TypeError. This is correctly handled in the runtime function
so if we are comparing a symbol fall back to use the runtime.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#28240}
2015-05-05 18:51:02 +00:00
mbrandy
38f7ccba79 PPC: [turbofan] Fix tail call optimization.
Port d21de2a48b

Original commit message:
Tail calls are matched on the graph, with a dedicated tail call
optimization that is actually testable. The instruction selection can
still fall back to a regular if the platform constraints don't allow to
emit a tail call (i.e. the return locations of caller and callee differ
or the callee takes non-register parameters, which is a restriction that
will be removed in the future).

Also explicitly limit tail call optimization to stubs for now and drop
the global flag.

R=dstence@us.ibm.com, michael_dawson@ca.ibm.com
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28239}
2015-05-05 18:07:18 +00:00
wingo
1e4173d93a Revert of Resolve references to "this" the same way as normal variables (patchset #11 id:240001 of https://codereview.chromium.org/1097283003/)
Reason for revert:
nosnap failures

Original issue's description:
> Resolve references to "this" the same way as normal variables
>
> Make the parser handle references to "this" as unresolved variables, so the
> same logic as for the rest of function parameters is used for the receiver.
> Minor additions to the code generation handle copying the receiver to the
> context, along with the rest of the function parameters.
>
> Based on work by Adrian Perez de Castro <aperez@igalia.com>.
>
> BUG=
> LOG=N
>
> Committed: https://crrev.com/18619d355192e2699203d12d9ebb9caea107b693
> Cr-Commit-Position: refs/heads/master@{#28236}

TBR=rossberg@chromium.org,mstarzinger@chromium.org,dslomov@chromium.org,adamk@chromium.org,arv@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28238}
2015-05-05 17:24:25 +00:00
danno
a988d5f261 Revert of Collect type feedback on result of Math.[round|ceil|floor] (patchset #13 id:230001 of https://codereview.chromium.org/1053143005/)
Reason for revert:
All sorts of performance regressions

Original issue's description:
> Collect type feedback on result of Math.[round|ceil|floor]
>
> By recording invocations of these builtins that can return -0, we now learn to not emit Crankshaft code that only handles integer results, avoiding deopt loops.
>
> Committed: https://crrev.com/f36ecaf3a4d61568ca50a20718acce7dd5da9a5f
> Cr-Commit-Position: refs/heads/master@{#28215}

TBR=mvstanton@chromium.org,bmeurer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#28237}
2015-05-05 16:42:16 +00:00
wingo
18619d3551 Resolve references to "this" the same way as normal variables
Make the parser handle references to "this" as unresolved variables, so the
same logic as for the rest of function parameters is used for the receiver.
Minor additions to the code generation handle copying the receiver to the
context, along with the rest of the function parameters.

Based on work by Adrian Perez de Castro <aperez@igalia.com>.

BUG=
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28236}
2015-05-05 16:38:22 +00:00
machenbach
f6ca539952 Revert of [handles] Sanitize Handle and friends. (patchset #4 id:50001 of https://codereview.chromium.org/1128533002/)
Reason for revert:
[Sheriff] Breaks mac asan:
http://build.chromium.org/p/client.v8/builders/V8%20Mac64%20ASAN/builds/1198

Original issue's description:
> [handles] Sanitize Handle and friends.
>
> This almost allows us to get rid of handles-inl.h, once we fix the
> cyclic dependencies (follow up CL).
>
> R=yangguo@chromium.org
>
> Committed: https://crrev.com/3283195d0408333cce552cf4087577e6f41054e5
> Cr-Commit-Position: refs/heads/master@{#28222}

TBR=yangguo@chromium.org,bmeurer@chromium.org
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#28235}
2015-05-05 15:45:07 +00:00
jochen
7e67b48694 freed_nodes in global-handles should be addititive
otherwise phantom nodes won't ever be taken into account

BUG=chromium:484671,chromium:479796
R=hpayer@chromium.org
LOG=y

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

Cr-Commit-Position: refs/heads/master@{#28234}
2015-05-05 15:37:40 +00:00
erikcorry
49fdc53234 Be sure to abort incremental GC when trying to reserve space
R=hpayer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28233}
2015-05-05 14:57:30 +00:00
mvstanton
9d0d7ec730 GrowArrayElementsStub must save caller doubles for double ElementsKind.
BUG=
R=danno@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28232}
2015-05-05 14:44:08 +00:00
jkummerow
0897244dd4 [grokdump] Update v8heapconst.py
Review URL: https://codereview.chromium.org/1125543004

Cr-Commit-Position: refs/heads/master@{#28231}
2015-05-05 14:26:35 +00:00
jkummerow
04cc497aba [d8] Make Realm.dispose() trigger a ContextDisposedNotification
Review URL: https://codereview.chromium.org/1129543002

Cr-Commit-Position: refs/heads/master@{#28230}
2015-05-05 14:25:25 +00:00
kozyatinskiy
19b62e211d [V8] Reland https://codereview.chromium.org/1100993003/
Chromium tests were prepared in https://codereview.chromium.org/1118743003/
Blink tests in https://codereview.chromium.org/1115193002/

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

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

Cr-Commit-Position: refs/heads/master@{#28229}
2015-05-05 14:21:12 +00:00
jkummerow
367d14d467 [tick processor] Introduce --pairwise-timed-range processing mode
Review URL: https://codereview.chromium.org/1123883002

Cr-Commit-Position: refs/heads/master@{#28228}
2015-05-05 14:17:48 +00:00
machenbach
e47c362642 [test] Add arm perf trybot to runner script.
BUG=chromium:484589
LOG=n
NOTRY=true
TBR=hpayer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28227}
2015-05-05 14:17:47 +00:00
arv
d26f5d3923 [es6] When comparing two symbols we may need to throw a TypeError
When comparing a symbol to istself using <, <=, > or >= we need to
throw a TypeError. This is correctly handled in the runtime function
so if we are comparing a symbol fall back to use the runtime.

BUG=v8:4073
LOG=Y
R=rossberg@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28226}
2015-05-05 14:17:46 +00:00
ulan
f6d632bd4d Reduce the size of initial JSON string buffer.
BUG=v8:3925
LOG=NO

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

Cr-Commit-Position: refs/heads/master@{#28225}
2015-05-05 14:17:45 +00:00
yangguo
a147377eaa Do not cache object literal maps during bootstrapping.
We do not expect to share maps for object literals created by builtin
Javascript code.

R=ishell@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28224}
2015-05-05 14:17:44 +00:00
yangguo
7546302b67 Move more parts of stack trace formatting to runtime.
R=ishell@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28223}
2015-05-05 14:17:43 +00:00
bmeurer
3283195d04 [handles] Sanitize Handle and friends.
This almost allows us to get rid of handles-inl.h, once we fix the
cyclic dependencies (follow up CL).

R=yangguo@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28222}
2015-05-05 12:48:17 +00:00
ishell
1c74ca6619 When adding constant string with something unknown, assume it's a string.
Review URL: https://codereview.chromium.org/1122823002

Cr-Commit-Position: refs/heads/master@{#28221}
2015-05-05 12:47:08 +00:00
yangguo
728f0af66d Fix bug in "Migrate error messages, part 7".
TBR=mvstanton@chromium.org
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#28220}
2015-05-05 10:25:59 +00:00
bmeurer
d21de2a48b [turbofan] Fix tail call optimization.
Tail calls are matched on the graph, with a dedicated tail call
optimization that is actually testable. The instruction selection can
still fall back to a regular if the platform constraints don't allow to
emit a tail call (i.e. the return locations of caller and callee differ
or the callee takes non-register parameters, which is a restriction that
will be removed in the future).

Also explicitly limit tail call optimization to stubs for now and drop
the global flag.

BUG=v8:4076
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#28219}
2015-05-05 09:43:02 +00:00
hpayer
0090c05578 Add heap growing strategy details to --trace-gc-verbose.
BUG=

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

Cr-Commit-Position: refs/heads/master@{#28218}
2015-05-05 09:25:30 +00:00
yangguo
b0eb920fe2 Reland #2 "Wrap v8natives.js into a function."
TBR=machenbach@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28217}
2015-05-05 09:16:01 +00:00
yangguo
a3ddb1bc42 Migrate error messages, part 7.
R=mvstanton@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28216}
2015-05-05 07:57:36 +00:00
danno
f36ecaf3a4 Collect type feedback on result of Math.[round|ceil|floor]
By recording invocations of these builtins that can return -0, we now learn to not emit Crankshaft code that only handles integer results, avoiding deopt loops.

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

Cr-Commit-Position: refs/heads/master@{#28215}
2015-05-05 07:55:58 +00:00
bmeurer
64d7340439 [c++11] Remove remnants of pre-C++11 delete, final and override.
These macros are not needed anymore, so there's no point in supporting
them.

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

Cr-Commit-Position: refs/heads/master@{#28214}
2015-05-05 07:44:35 +00:00