Commit Graph

27665 Commits

Author SHA1 Message Date
bradnelson
0e8b7ec8b1 Remove wasm compile time option and enable wasm behind a runtime flag.
Deferring enabling of tests to separate per platform CLs.

R=machenbach@chromium.org,titzer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#33123}
2016-01-05 18:06:54 +00:00
thestig
beef98f160 Fix a few -Wignored-qualifiers warnings.
Review URL: https://codereview.chromium.org/1542143003

Cr-Commit-Position: refs/heads/master@{#33122}
2016-01-05 17:23:49 +00:00
machenbach
bb3972f6f8 [test] Skip test for ignition.
NOTRY=true
TBR=rmcilroy@chromium.org, mythria@chromium.org
BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33121}
2016-01-05 17:05:15 +00:00
mythria
3efce1c77e [Interpreted] Throws an error if rest parameters are used.
Throws an error if rest parameters are used. This feature is not
yet supported in interpreter.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33120}
2016-01-05 17:04:15 +00:00
jkummerow
b4583c0444 [prototype user tracking] Don't skip JSGlobalProxies
For a prototype chain foo -> global_proxy -> global_object, we used to
register a dependency from foo -> global_object. This is incorrect when
the global_proxy/global_object pairing is modified, e.g. when navigating
in iframes. With this patch, we properly register foo -> global_proxy and
global_proxy -> global_object dependencies.
Additionally, when a prototype's prototype changes from null to something
else, this new usage relation must be registered if there are other users
further down on the prototype chain that might expect a complete chain of
registrations to exist (which was the case before, and must be preserved).

BUG=chromium:571517
LOG=n
R=verwaest@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#33119}
2016-01-05 16:15:48 +00:00
mbrandy
bdc2746d28 PPC: Remove strong mode support from rest argument creation.
Port a94d6d6ede

Original commit message:
    The mode requires an extra register, and since we aren't supporting
    it now, we can dispense with it.

R=mvstanton@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=

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

Cr-Commit-Position: refs/heads/master@{#33118}
2016-01-05 15:55:44 +00:00
mythria
47d7ae1154 [Interpreter] Pass correct closure argument when creating block context.
After this change, https://codereview.chromium.org/1475383002 we should
not pass Smi 0 for a closure and expect runtime to look it up. We should
pass the correct argument always.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33117}
2016-01-05 15:35:33 +00:00
mythria
08419a0989 [Interpreter] StateValuesRequireUpdate handles cases when deoptimization is disabled.
Fixes StateValuesRequireUpdate function to return false if deoptimization is not enabled.
When deoptimization is not enabled there is no need to create nodes for state values.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33116}
2016-01-05 15:07:50 +00:00
sigurds
3b473d7aad [turbofan] Deopt support for escape analysis
Deopt support is added on two levels. On the IR level,
a new ObjectState node is added, which represenents an
object to be materialized. ObjectState nodes appear as
inputs of FrameState and StateValues nodes. On the
instruction select/code-generation level, the
FrameStateDescriptor class handles the nesting
introduced by ObjectState, and ensures that deopt code
with CAPTURED_OBJECT/DUPLICATED_OBJECT entries are
generated similarly to what crankshaft's escape
analysis does.

Two unittests test correctness of the IR level implementation.

Correctness for instruction selection / code generation
is tested by mjsunit tests.

R=jarin@chromium.org,mstarzinger@chromium.org
BUG=v8:4586
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#33115}
2016-01-05 13:31:02 +00:00
rmcilroy
06738d6410 [Interpreter] Enable cctests for igntion variant.
BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33114}
2016-01-05 13:27:31 +00:00
ulan
a373e7530c Guard UnmapFreeMemoryTask with a flag.
BUG=chromium:574349
LOG=NO

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

Cr-Commit-Position: refs/heads/master@{#33113}
2016-01-05 13:11:21 +00:00
jarin
f0e41175fd [turbofan] Bidirectional representation inference.
This changes representation inference to be bidirectional:
1. truncations are propagated from uses to definitions.
2. output types are propagated from definitions to uses.
(and nodes are revisited until fixpoint.)

At the moment, (2) is used only superficially; the idea here is to
use the output type propagation to propagate types from type feedback.

For the output types to be usable, we need to keep track of the type
of the JavaScript value rather than the truncated value. Otherwise,
representation inference could not rely on the ranges indicated
by the values.

For example, for "var b = (a|0) + (a|0); return (b/16) >>> 0",
the type of b cannot be int32; otherwise the division "b/16"
would believe that it is fine to do an integer division on
the truncated value, which would give a wrong result for
2^31 <= a < 2^32.

The change makes representation inference a bit more expensive
(the phase is about 20% slower), but since this is only small part
of the overall compiler time, the overall effect is negligible.
If the running time becomes a problem, we could optimize this by
remembering when the nodes are stable (ie., no further changes to
type/truncations) and/or explicit subscriptions for changes.

BUG=v8:4583
R=bmeurer@chromium.org
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33112}
2016-01-05 11:56:39 +00:00
mythria
a0a8b60643 [Interpreter] Adds support for wide variant of load/store lookup slots.
Adds implementation and tests for wide variant of load/store lookup slots.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33111}
2016-01-05 11:36:48 +00:00
zhengxing.li
007de5d213 [wasm] Define the FP return register for X87.
The FP parameters for X87 should be put in stack and the FP return value
  should be put in stX_0 register.

  So this CL defines the FP_RETURN_REGISTERS as stX_0 only.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#33110}
2016-01-05 11:22:21 +00:00
bmeurer
065e9c536f [runtime] Migrate several Date builtins to C++.
Almost all of the Date builtins always call into C++ at least once
anyway, so parsing, compiling and executing the JavaScript wrappers
is just a waste of time.  The most important part here is the Date
constructor itself, which is one of the blockers for new.target in
TurboFan, because compiling the Date constructor takes too much time
with TurboFan (for no reason since we end up in C++ anway).

R=cbruni@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#33109}
2016-01-05 11:05:50 +00:00
mvstanton
a94d6d6ede Remove strong mode support from rest argument creation.
The mode requires an extra register, and since we aren't supporting
it now, we can dispense with it.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#33108}
2016-01-05 10:51:37 +00:00
sigurds
89654538e7 [turbofan] Add performance counters for escape analysis
R=bmeurer@chromium.org
BUG=v8:4586
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#33107}
2016-01-05 10:30:23 +00:00
sigurds
3351ed4b78 [turbofan] Improve caching in escape analysis.
This also fixes a related bug in phi handling.

R=bmeurer@chromium.org
BUG=v8:4586
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#33106}
2016-01-05 10:18:49 +00:00
mvstanton
c89ddbb7bc Optimized TurboFan support for rest args.
R=bmeurer@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#33105}
2016-01-05 09:40:41 +00:00
machenbach
a48875c975 [test] Skip tests for ignition.
BUG=v8:4280
LOG=N
TBR=rmcilroy@chromium.org
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#33104}
2016-01-05 08:50:12 +00:00
zhengxing.li
bdf993698a X87: [Interpreter] Fix some issues in the non-x64 InterpreterNotifyDeoptimized builtins.
port 02072112d14d2960fc730fa5cde6b759c47b61a0(r33088)

  original commit message:
  Fix stack push issues on non-x64 platforms for
  InterpreterNotifyDeoptimized builtins.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#33103}
2016-01-05 04:09:11 +00:00
zhengxing.li
050b79234e X87: Use register arguments for RestParamAccessStub.
port 82ca2a414deb4221100562a0fb2af0f216c4c3ef(r33084)

  original commit message:
  This is preferable because in TurboFan we need to call it, and can't pass
  untagged external pointers on the stack.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#33102}
2016-01-05 04:04:34 +00:00
aseemgarg
7fdb0da001 Add do-while and conditional and mark non asm nodes as unreachable
TEST=asm-wasm.js
R=titzer@chromium.org,bradnelson@chromium.org
BUG=

Add for loop to asm-to-wasm

TEST=asm-wasm.js
R=titzer@chromium.org,bradnelson@google.com

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

Cr-Commit-Position: refs/heads/master@{#33101}
2016-01-04 23:47:08 +00:00
littledan
acbd64be36 Accept time zones like GMT-8 in the legacy date parser
In the Date constructor or Date.parse, other browsers will accept time
zones like GMT-8, but before this patch, Chrome would interpret 8 as
8 minutes. This patch interprets GMT-+ a one or two digit number as hours,
not minutes.

R=adamk,jshin@chromium.org
LOG=Y
BUG=chromium:422858

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

Cr-Commit-Position: refs/heads/master@{#33100}
2016-01-04 23:25:57 +00:00
mbrandy
918e66d5a3 Fix "PPC: Use register arguments for RestParamAccessStub".
Fix build break.

R=joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=

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

Cr-Commit-Position: refs/heads/master@{#33099}
2016-01-04 22:51:22 +00:00
mbrandy
90b64b3cb4 PPC: [Interpreter] Fix some issues in the non-x64 InterpreterNotifyDeoptimized builtins.
Port 02072112d1

Original commit message:
    Fix stack push issues on non-x64 platforms for
    InterpreterNotifyDeoptimized builtins.

R=rmcilroy@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33098}
2016-01-04 21:52:45 +00:00
jshin
4e18190e69 Timezone name check fix
1. Location names with more than one underscores (e.g. Ho_Chi_Minh)
   didn't work because of the way capturing works with repeated patterns
   in RE. It's now supported by changing the RE to capture the whole string
   and splitting on '_' in the next step.

2. Adds support for location names with a hyphen

3. Adds support for timezone ids with three parts (e.g.
   American/Argentina/Buenos_Aires)

4. Adds special handling of 'au', 'es' and 'of' in zone ids. They need to be kept in lowercase. (see the full list at https://en.wikipedia.org/wiki/List_of_tz_database_time_zones )

5. Adds regression tests for all the above and make the existing tests
   more robust against future ICU changes. ICU canonicalizes zone names to
   deprecated names, but it may change. (
   http://bugs.icu-project.org/trac/ticket/12044 )

BUG=364374
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#33097}
2016-01-04 21:48:04 +00:00
rmcilroy
af95a4dd3e [Interpreter] Add Ignition whitelist for cctests.
Adds an ignition whitelist for cctests.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33096}
2016-01-04 21:01:34 +00:00
littledan
fb5cbc2e2d Add a --harmony-species flag, defining @@species on constructors
This patch adds the basis for subclassing TypedArrays, Arrays and
ArrayBuffers through the @@species hook, added in ES2015. This is
the first patch in a series. This patch simply defines the
@@species Symbol and installs it on the appropriate constructors.
The behavior is guarded behind the --harmony-species flag.

R=cbruni
BUG=v8:4093
LOG=Y
CQ_INCLUDE_TRYBOTS=tryserver.chromium.linux:linux_chromium_rel_ng;tryserver.blink:linux_blink_rel
TBR=hpayer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#33095}
2016-01-04 19:39:59 +00:00
caitpotter88
4f9471152c [promise] make Promise.resolve match spec
Fixes a number of test262 tests, including

- built-ins/Promise/resolve/resolve-from-promise-capability.js
- built-ins/Promise/resolve/context-non-object-with-promise.js
- built-ins/Promise/executor-function-length.js

BUG=v8:4633
LOG=N
R=littledan@chromium.org, cbruni@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#33094}
2016-01-04 19:16:09 +00:00
binji
e9359a6d9d Simplify runtime-atomics.cc
There were some functions that were used when atomic floats were supported, but
can now be removed.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#33093}
2016-01-04 19:01:50 +00:00
mbrandy
f5036a7641 PPC: Use register arguments for RestParamAccessStub
Port 82ca2a414d

Original commit message:
    This is preferable because in TurboFan we need to call it, and can't pass
    untagged external pointers on the stack.

R=mvstanton@chromium.org, joransiu@ca.ibm.com, jyan@ca.ibm.com, michael_dawson@ca.ibm.com
BUG=

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

Cr-Commit-Position: refs/heads/master@{#33092}
2016-01-04 18:40:27 +00:00
oth
c958c98c4f [Interpreter] Bytecodes for exchanging registers.
New bytecodes for making registers with indicies wider than 1-byte
accessible.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33091}
2016-01-04 17:38:26 +00:00
rmcilroy
5b4626ad19 [Interpreter] Enable TurboFan for Ignition variant tests.
Adds --turbo to the set of flags run with ignition (making the
configuration pure Ignition+TurboFan except for fallbacks to
full-codegen for catch / eval). Also changes the default
--ignition-filter to allow everything, rather than omit everything.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33090}
2016-01-04 17:33:08 +00:00
machenbach
ee66506737 [test] Add ignition test set.
Add control for the ignition test suites. This will be
followed by a change on the infra side that targets the
ignition set instead of the hardcoded mjsunit.

After that, cctest can be enabled in a separate CL. This CL
already includes the logic for running cctest for ignition
on swarming.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33089}
2016-01-04 17:26:42 +00:00
rmcilroy
02072112d1 [Interpreter] Fix some issues in the non-x64 InterpreterNotifyDeoptimized builtins.
Fix stack push issues on non-x64 platforms for
InterpreterNotifyDeoptimized builtins.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33088}
2016-01-04 17:10:55 +00:00
jkummerow
258c61290d Fix "const" typo
R=cbruni@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#33087}
2016-01-04 16:17:28 +00:00
mythria
f7be4de9bc [Interpreter] Fixes VisitNewLocalBlockContext to reserve consecutive registers.
VisitNewLocalBlockContext funciton was allocating two registers and checking
if they are consecutive. This cl changes it to reserve consecutive registers.
The earlier code breaks this test mjsunit/regress/regress-542099.js.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33086}
2016-01-04 15:53:55 +00:00
jarin
964964541d [turbofan] Fix turbofan-enabling conditions.
This restricts turbofan to turbofan-supported subset for the shipping
configuration ("use asm" and features unsupported by Crankshaft).

Without this, we compile with Turbofan even when there is
try-catch-finally as long as the function is "use asm" or
it contains a feature unsupported by crankshaft but supported
by turbofan (e.g., 'with' statement).

BUG=

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

Cr-Commit-Position: refs/heads/master@{#33085}
2016-01-04 14:53:07 +00:00
mvstanton
82ca2a414d Use register arguments for RestParamAccessStub
This is preferable because in TurboFan we need to call it, and can't pass
untagged external pointers on the stack.

R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#33084}
2016-01-04 14:50:56 +00:00
bmeurer
fed2c416df Use JSObjectVerify instead of trying to reimplement parts of it.
R=verwaest@chromium.org
BUG=chromium:573857
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#33083}
2016-01-04 13:50:06 +00:00
verwaest
09c41d9bfd ThrowTypeError should not be constructable, so shouldn't have a prototype.
In addition to ThrowTypeError not being a constructor, it was invalidly set up by simply swapping the map. Swapping the map is insufficient since NewFunction* actually set up the function depending on the used map.

BUG=chromium:573858
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#33082}
2016-01-04 13:33:09 +00:00
sigurds
72ddee79c3 [turbofan] Use NumberConstant for LoadElement's index
LoadElement nodes used a Int32Constant in some cases, which made
matching for constant values in optimizations more difficult than
necessary.

R=bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#33081}
2016-01-04 13:19:04 +00:00
Benedikt Meurer
5f6bcdaf12 [test] Blacklist mjsunit/regress/regress-417709a while Jaro is working on it.
TBR=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#33080}
2016-01-04 12:29:24 +00:00
machenbach
efa6f3a532 [release] Bump max age of last release.
TBR=hablich@chromium.org
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#33079}
2016-01-04 12:03:49 +00:00
jarin
140f69d784 [turbofan] Add deopt point for InternalSetPrototype in VisitObjectLiteral.
BUG=572409
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#33078}
2016-01-04 09:54:51 +00:00
Benedikt Meurer
2d997d8659 [turbofan] Blacklist test case which needs investigation.
TBR=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#33077}
2016-01-04 09:29:14 +00:00
mythria
6d8979c779 [Interpreter] Fixes tests for wide bytecodes.
After this change (https://codereview.chromium.org/1507903004) to type feedback
vector, wide bytecodes for global/keyed/named load-stores were not generated due
to a change in the number of type feedback vector slots. This cl fixes tests to
generate wide bytecodes.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33076}
2016-01-04 09:23:55 +00:00
mythria
d5e849a1dd [Interpreter] Adds support for Load/Store LookupSlots to BytecodeGraphBuilder.
Adds support for loads and stores to lookup slots to BytecodeGraphBuilder.
Also adds tests for them.

BUG=v8:4280
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#33075}
2016-01-04 09:20:57 +00:00
bmeurer
70c4bf1331 [builtins] Migrate a bunch of Object builtins to C++.
The Object.freeze, Object.isExtensible, Object.isFrozen,
Object.isSealed, Object.preventExtensions and Object.seal builtins were
already implemented in C++, but they still had some funny JavaScript
wrappers that just called into the C++ implementation on every
(interesting) execution path.

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

Cr-Commit-Position: refs/heads/master@{#33074}
2016-01-04 08:11:07 +00:00