Commit Graph

6317 Commits

Author SHA1 Message Date
mstarzinger@chromium.org
baf818b152 Lower simplified StringEqual to runtime call.
R=titzer@chromium.org
TEST=cctest/test-simplified-lowering/LowerStringOps_to_call_and_wordeq

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23616 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 13:26:52 +00:00
mstarzinger@chromium.org
9248f4d7d4 Lower simplified StringAdd to stub call.
R=titzer@chromium.org
TEST=cctest/test-simplified-lowering/LowerStringOps_to_calls

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23610 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 12:46:37 +00:00
bmeurer@chromium.org
db10bef4de [turbofan] First step of Operator refactoring.
- Real const-correctness
- Proper forward declarations instead of #include "src/v8.h"
- Flags for Operator properties.
- etc.

TEST=compiler-unittests,cctest
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23601 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 11:36:55 +00:00
marja@chromium.org
7955937d31 Refactor Parser to make it usable on a background thread.
- Background Parsers cannot get the following data from Isolate (pass it to the
ctor instead): stack limit (background Parsers need a different stack limit),
UnicodeCache (background parsers need a separate UnicodeCache), hash seed
(Parser cannot access the Heap to get it). The Parser::Parse API won't change.

- Make the internalization phase (where Parser interacts with the heap) more
explicit. Previously, Parser was interacting with the heap here and there.

- Move HandleSourceURLComments out of DoParseProgram, so that background parsing
can use DoParseProgram too.

BUG=
R=rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23600 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 11:36:21 +00:00
jarin@chromium.org
a520e03442 Revert "Make FrameStates recursive (to be used for inlining)."
This reverts commit r23595.

TBR=sigurds@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23598 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 11:28:40 +00:00
sigurds@chromium.org
7117cae25e Make FrameStates recursive (to be used for inlining).
- Changes FrameState node to require a 5th input
  (use undefined as sentinel).
- Adds outer_state pointer to FrameStateDescriptor.
- Instruction selection dumps dependencies of FrameState chain into the instruction.
- Code generator builds the translation for rec. FrameStates.
  (will require further integration tests)

R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23595 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 10:49:27 +00:00
jarin@chromium.org
bb6cfbc416 Lazy deoptimization for comparisons in Turbofan.
BUG=
R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23594 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 10:38:31 +00:00
machenbach@chromium.org
b4adc1a12b Reland "Refactoring: Make gtest testsuite the default."
BUG=v8:3489
TBR=bmeurer@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23585 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 09:21:03 +00:00
machenbach@chromium.org
b77cb4a793 Revert "Refactoring: Make gtest testsuite the default."
This reverts commit cb8f08658767e7e3182e5deab0473f264f6ce92f.

TBR=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23584 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 09:17:26 +00:00
machenbach@chromium.org
a050734c35 Refactoring: Make gtest testsuite the default.
BUG=v8:3489
R=bmeurer@chromium.org
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23583 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 09:11:13 +00:00
bmeurer@chromium.org
30f18f0f7d Use Chrome compatible naming for compiler specifics.
Less useless creativity is best creativity!

R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23579 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 07:07:52 +00:00
bmeurer@chromium.org
7300a2a343 [turbofan] Fix MachineOperatorReducer to use JSGraph as well.
TEST=compiler-unittests,cctest
R=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23577 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-02 05:08:54 +00:00
dslomov@chromium.org
925298ad4f Add Collections perf tests to v8 public repo.
R=machenbach@chromium.org
BUG=374708
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23570 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 14:52:06 +00:00
mstarzinger@chromium.org
bf3d436b57 Fix typed lowering of JSUnaryNot to work with graph reducer.
R=titzer@chromium.org
TEST=cctest/test-js-typed-lowering/UnaryNot[Effects]

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23561 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 12:17:43 +00:00
bmeurer@chromium.org
b22724966b [turbofan] Merge compiler unit tests into src.
BUG=v8:3489
LOG=n
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23551 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 10:26:12 +00:00
bmeurer@chromium.org
40da0e5ee6 Use the "enum hack" to fix the SmiTagging constants.
The "enum hack" (see Item 2 of "Effective C++") is the only known
portable way to define constant integral values within template
classes. Fixes the weird work-arounds required for certain GCC
versions.

R=jarin@chromium.org, rossberg@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23550 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 10:24:04 +00:00
jarin@chromium.org
5fe360b9cd Fix typo in math-hyperbolic test.
TBR=jarin@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23549 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 10:23:07 +00:00
yangguo@chromium.org
fa1bf00e6a Port fdlibm implementation for Math.cosh.
R=rtoy@chromium.org
BUG=v8:3494
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23548 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 09:36:00 +00:00
jarin@chromium.org
a668cd6fc8 Context deoptimization and removal of the deoptimization block in Turbofan
This adds context deoptimization to Turbofan and Crankshaft (also submitted separately as https://codereview.chromium.org/515723004/).

The second patchset removes the deoptimization/continuation block from calls.

BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23547 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 09:31:14 +00:00
bmeurer@chromium.org
58a5d15ba7 Merge heap unit tests into src.
Also rip out the unused runtime-unittests; will be added back on-demand.

BUG=v8:3489
LOG=n
R=ulan@chromium.org, svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23545 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 09:12:50 +00:00
yangguo@chromium.org
7be66cf5d7 Do not expose termination exceptions to the Exception API.
R=verwaest@chromium.org
BUG=403509
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23544 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 09:11:44 +00:00
jarin@chromium.org
73da434b8e Fix manual allocation folding of RegExpConstructResult.
R=mstarzinger@chromium.org
BUG=409533
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23543 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 08:08:31 +00:00
bmeurer@chromium.org
4edcff907f Refactor libplatform unit tests to use GTest/GMock.
Also migrate them to src.

BUG=v8:3489
LOG=n
R=svenpanne@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23541 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-09-01 07:13:55 +00:00
rodolph.perfetta@arm.com
bfd5fb0693 [turbofan] Allow unittest to call TruncateDoubleToI.
Switches stack pointer if necessary.

BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23528 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-29 18:46:30 +00:00
mstarzinger@chromium.org
e019dc7414 Fix Node::ReplaceUses to handle unused nodes.
R=bmeurer@chromium.org
TEST=cctest/test-node/NodeUseIteratorReplaceNoUses

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23519 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-29 12:14:52 +00:00
bmeurer@chromium.org
5992acc242 Merge base unit tests into src to be in line with Chrome.
We still need the test/base-unittests folder until the test driver is
updated to handle unittests without the boilerplate.

TEST=base-unittests
R=svenpanne@chromium.org
BUG=v8:3489
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23516 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-29 10:53:08 +00:00
rodolph.perfetta@arm.com
fb7e3c8f95 ARM64: re-enable turbofan tests.
The tests were already passing.

BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23514 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-29 09:49:50 +00:00
svenpanne@chromium.org
dfda8950de More PNaCL fixes (without GYP/Makefile tweaks)
This is basically https://codereview.chromium.org/513923005/ with a
few changes:

   * Makefile.nacl and v8.gyp are untouched.

   * MAP_NORESERVE-handling is more defensive.

   * Added ugly busy-wait emulation of sem_timedwait.

R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23513 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-29 09:39:28 +00:00
yangguo@chromium.org
8938126d1b Port fdlibm implementation for Math.sinh.
R=rtoy@chromium.org
BUG=v8:3493
LOG=N

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23512 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-29 09:32:51 +00:00
sigurds@chromium.org
9091e87d8f Add more inlining unit tests.
- Scheduler can inline a function with a loop.
- Inlining strict into non-strict works correctly.
- Inlining non-strict into strict works correctly.

R=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23511 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-29 08:58:51 +00:00
bmeurer@chromium.org
804ef93d99 Fix windows build.
TBR=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23508 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-29 05:45:16 +00:00
bmeurer@chromium.org
ffbe019e22 Fix cctest/test-run-properties/TypedArrayLoad.
Note: The test failure was unrelated to the fact that it run on actual
ARM hardware, but it was failing because the test relied on undefined
and implementation defined behaviour of the C++ compiler.

TBR=mstarzinger@chromium.org
TEST=cctest

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23507 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-29 05:37:55 +00:00
mstarzinger@chromium.org
d0ea36cb5b Move constructors for [Element/Field]Access into AccessBuilder.
R=titzer@chromium.org
TEST=cctest/test-simplified-lowering

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23501 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-28 17:53:24 +00:00
mstarzinger@chromium.org
9faf9200ab Skip failing test on ARM after r23492.
TBR=vogelheim@chromium.org
TEST=cctest/test-run-properties/TypedArrayLoad

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23500 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-28 17:46:33 +00:00
mstarzinger@chromium.org
7c6759e982 Fix test failures after r23492.
R=vogelheim@chromium.org
TEST=cctest/test-run-properties/TypedArrayLoad

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23498 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-28 17:28:57 +00:00
mstarzinger@chromium.org
b2548ebddf Skip Windows failure after r23492.
TBR=vogelheim@chromium.org
TEST=cctest/test-run-properties/TypedArrayLoad

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23494 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-28 15:19:05 +00:00
mstarzinger@chromium.org
cc8cec354c Preliminary lowering of typed array loads in TF.
R=titzer@chromium.org
TEST=cctest/test-run-properties/TypedArrayLoad

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23492 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-28 14:35:11 +00:00
titzer@chromium.org
d6831dbd4b Use TruncateFloat64ToInt32 instead of ChangeFloat64ToInt32 in lowering of simplified operators NumberToInt32/NumberToUint32.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23491 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-28 13:31:55 +00:00
titzer@chromium.org
496697df4e Add MachineSignature, which is an encapsulation of the machine types for parameters and return values in a graph.
This utility will be used to simplify Linkage and fix representation inference
to work with graphs where parameters and return values are something other
than tagged. It will also make testing representation inference a lot
easier, since we can then exactly nail down the machine types of parameters
and returns.

This CL also adds c-signature.h, which demonstrates how to convert C function
signatures into MachineSignatures. The CSignatures will be used in tests to
make it easier and simpler to codegen tests.

R=jarin@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23490 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-28 13:17:38 +00:00
sigurds@chromium.org
7bdba61b02 Simplify inlining now that the scheduler is smart(er).
* Only control adjustment is to move everything from the inlinee's
  start block to the block the call was in.
* Add a unit test to ensure that the scheduler actually picks the
  right order when placing the code.

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

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23489 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-28 12:18:25 +00:00
balazs.kilvady@imgtec.com
0b1e18c231 MIPS: Fix [de]serialize problem of root objects.
BUG
TEST=mjsunit/deserialize-reference
R=yangguo@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23487 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-28 11:27:21 +00:00
jarin@chromium.org
2e1295d4dc Disable running some instruction selector test on unsupported backends.
BUG=
R=jarin@chromium.org

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

Patch from Chunyang Dai <chunyang.dai@intel.com>.

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23485 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-28 11:06:26 +00:00
sigurds@chromium.org
6afb739efe Fix build.
GCC needs definitions for constant members (clang doesn't).

TBR=mstarzinger@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23480 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-28 08:47:11 +00:00
sigurds@chromium.org
e7817a9e54 Remove dependency from generic lowering on compilation info for determining strictness and builtins.
This makes the graphs compositional for inlining (i.e. we can now inline a strict function into a non-strict function, or vice versa).

1) Store strict mode as parameter in StoreNamed/StoreProperty.

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

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23479 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-28 08:39:24 +00:00
machenbach@chromium.org
33c28c7152 Reland "Enable C++11 tests on windows."
TBR=svenpanne@chromium.org
BUG=400033
LOG=n

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23473 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-28 07:01:56 +00:00
titzer@chromium.org
f875dd66c6 Disable running some change tests on unsupported backends.
TBR=vogelheim@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23468 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-27 16:17:16 +00:00
jarin@chromium.org
8eb5c1524d Unit test of instruction selection for calls with deoptimization.
BUG=
R=bmeurer@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23467 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-27 15:56:11 +00:00
adamk@chromium.org
71fbe7d4ec Ensure that JSProxy::Fix gives the generated JSObject map a constructor
All JSObjects in V8 either have a map()->constructor() field or are
JSFunctions. JSProxy::Fix, however, was not enforcing this, and
Object.observe's use of JSObject::GetCreationContext() exposed this.

Note that this is not Object.observe-specific: the API call
v8::Object::CreationContext() also would have revealed this bug.

This patch chooses Object as a reasonable constructor to put on the
newly-fixed object's map. Note that this has no effect on the "constructor"
property in JS. In doing so, I've also tightened up the code underlying
JSProxy::Fix to only support JSObject and JSFunction as possible output
types.

BUG=405844
LOG=N
R=rossberg@chromium.org, verwaest@chromium.org

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23466 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-27 15:54:23 +00:00
titzer@chromium.org
79c8cfe2a8 Fix expectations of lowering tests.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23462 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-27 14:47:50 +00:00
titzer@chromium.org
fa34ea60c4 Disable some changes tests on ARM64. Also, fix the changes lowering to not use the more expensive TruncateFloat64ToInt32, but to use ChangeFloat64ToInt32/ChangeFloat64ToUint32, as it was before.
R=mstarzinger@chromium.org
BUG=

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

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@23460 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2014-08-27 13:49:30 +00:00