Commit Graph

114 Commits

Author SHA1 Message Date
adamk
d18dd375ac Remove unused Module-related AST nodes and associated codegen
BUG=v8:1569
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#28179}
2015-04-30 16:20:56 +00:00
mbrandy
543ae601de PPC: VectorICs: built-in function apply should use an IC.
Port 83a0af5500

Original commit message:
Handled a TODO that sent builtin function apply to the runtime on property get.

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

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

Cr-Commit-Position: refs/heads/master@{#28178}
2015-04-30 16:18:16 +00:00
mbrandy
2cc2ee0c1b PPC: Use a stub in crankshaft for grow store arrays.
Port fb8e613638

Original commit message:
We were deopting without learning anything.

This is a rebase/reland of https://codereview.chromium.org/368263003

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

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

Cr-Commit-Position: refs/heads/master@{#28177}
2015-04-30 15:43:03 +00:00
jochen
98140318fa Unify internal and external typed arrays a bit
Just give internal ones an ArrayBuffer with a NULL backing store. This
simplifies the access checks a lot.

BUG=v8:3996
R=hpayer@chromium.org,verwaest@chromium.org
LOG=n

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

Cr-Commit-Position: refs/heads/master@{#28168}
2015-04-30 13:46:34 +00:00
vogelheim
6b905c3a16 Implement kToBeExecutedOnceCodeAge.
An initial 'code age' state that will turn into a 'pre-aging' code age only after it was executed the first time.

BUG=470930
LOG=Y

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

Cr-Commit-Position: refs/heads/master@{#28162}
2015-04-30 12:31:46 +00:00
mbrandy
b108f4615c PPC: Fix HArrayBufferNotNeutered instruction
Fix faulty condition register usage after andi.

BUG=
R=dstence@us.ibm.com, michael_dawson@ca.ibm.com, jochen@chromium.org, bmeurer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#28116}
2015-04-28 17:19:46 +00:00
jochen
a2e6f970c7 Add HArrayBufferNotNeutered instruction
This instruction can be hoisted out of loops even though it contains a branch.

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

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

Cr-Commit-Position: refs/heads/master@{#28109}
2015-04-28 13:43:03 +00:00
mbrandy
63d14580d8 PPC: Don't MISS if you read the hole from certain FastHoley arrays.
Port caeb9004f0

Original commit message:
If the array's map is the initial FastHoley array map, and the array prototype
chain is undisturbed and empty of elements, then keyed loads can convert the
load of a hole to undefined.

BUG=

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

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

Cr-Commit-Position: refs/heads/master@{#28089}
2015-04-27 17:01:17 +00:00
conradw
ae7ce701ae [strong] Disallow implicit conversions for binary arithmetic operations
Implements the strong mode proposal's restrictions on
implicit conversions for binary arithmetic operations, not
including the + special case. Adds some infrastructure
for future implementation of the restrictions for other
operators.

BUG=v8:3956
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#28045}
2015-04-24 12:32:41 +00:00
svenpanne
4d3044e161 Removed src/{isolate,property-details,utils}-inl.h
Baby steps towards saner #includes...

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

Cr-Commit-Position: refs/heads/master@{#27958}
2015-04-21 10:21:37 +00:00
Ross McIlroy
063fc25122 Replace OVERRIDE->override and FINAL->final since we now require C++11.
R=jochen@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27937}
2015-04-20 13:08:14 +00:00
mbrandy
99c116ccda PPC: Reland "Add basic crankshaft support for slow-mode for-in to avoid disabling optimizations"
Port 8098253562

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

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

Cr-Commit-Position: refs/heads/master@{#27923}
2015-04-17 15:56:13 +00:00
mbrandy
cc01cd94ab PPC: Array() in optimized code can create with wrong ElementsKind in corner cases.
Port 13459c1ae3

Original commit message:
Calling new Array(JSObject::kInitialMaxFastElementArray) in optimized code
makes a stub call that bails out due to the length. Currently, the bailout
code a) doesn't have the allocation site, and b) wouldn't use it if it did
because the length is perceived to be too high.

This CL passes the allocation site to the stub call (rather than undefined),
and alters the bailout code to utilize the feedback.

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

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

Cr-Commit-Position: refs/heads/master@{#27895}
2015-04-16 16:13:12 +00:00
mbrandy
ccc7952e3b PPC: VectorICs: megamorphic keyed loads in crankshaft don't need a vector.
Port c8e4d57d3b

Original commit message:
They are content with a dummy vector, as MISSES won't result in
changing the real vector/slot at all.

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

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

Cr-Commit-Position: refs/heads/master@{#27850}
2015-04-15 14:43:55 +00:00
mstarzinger
b807d112d7 [turbofan] Fix ForInStatement that deopts during filter.
This adds a missing bailout id to a ForInStatement for when retrieving
and filtering a property name deoptimizes. This can happen with proxies
that have a getPropertyDescriptor trap.

R=jarin@chromium.org
TEST=mjsunit/for-in-opt

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

Cr-Commit-Position: refs/heads/master@{#27846}
2015-04-15 13:12:05 +00:00
svenpanne
83bc009d46 Added Donald Stence to PPC owners.
Review URL: https://codereview.chromium.org/1065443004

Cr-Commit-Position: refs/heads/master@{#27830}
2015-04-15 07:00:11 +00:00
adamk
5277c41044 Split TemplateHashMapImpl::Lookup into two methods
This avoids both a mysterious boolean argument ("insert") and lets
non-mutating lookups skip passing an allocator (in one such case,
we were passing a scary-looking ZoneAllocationPolicy(NULL)!).

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

Cr-Commit-Position: refs/heads/master@{#27799}
2015-04-13 19:01:15 +00:00
mbrandy
3118df2362 PPC: Remove unnecessary options from HTailCallThroughMegamorphicCache
Port e0844a24d3

Original commit message:
These options were added for a hydrogen code stub version of
the VectorIC dispatcher, which was discontinued.

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

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

Cr-Commit-Position: refs/heads/master@{#27797}
2015-04-13 18:44:43 +00:00
mbrandy
c7f40ce738 PPC: Fix NaN Canonicalization.
Use fsub rather than fadd to avoid stripping the sign from minus zero.

Fixes mjsunit/result-table-min and mjsunit/result-table-max test failures.

R=michael_dawson@ca.ibm.com
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27794}
2015-04-13 16:24:24 +00:00
michael_dawson
18f9771db9 PPC: Always update raw pointers when handling interrupts inside RegExp code.
Fix c67cb287a9

Cannot access kStartIndex and kDirectCall parameters as ints on 64-bit BE platforms.

R=yangguo@chromium.org, mbrandy@us.ibm.com
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27764}
2015-04-10 21:54:40 +00:00
michael_dawson
48947af7d1 PPC: [es6] implement spread calls
Port 74c381221c

R=mbrandy@us.ibm.com

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27763}
2015-04-10 21:16:01 +00:00
michael_dawson
3ab8a50244 PPC: Merge cellspace into old pointer space
Port 4e7163ce05

R=mbrandy@us.ibm.com

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27761}
2015-04-10 21:02:24 +00:00
michael_dawson
806e57f401 PPC: Vector-ICs - speed towards the monomorphic exit as quickly as possible.
Port 35a67b745d

Original commit message:
Thanks to some careful assumptions, we can examine the object found at
vector[slot] and trust it's a heap object where the second field is
either a map if it's a WeakCell, or definitely not a map if it's a
Symbol, String or FixedArray. Use this to save a memory read.

R=mbrandy@us.ibm.com

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27728}
2015-04-09 22:32:12 +00:00
michael_dawson
5110b400bf PPC: Make --always-opt also optimize top-level code.
Port 2d281e71ac

Original commit message:
This enables eager optimization of top-level code with TurboFan and
extends test coverage by triggering it with the --always-opt flag.
Script contexts are now also properly allocated in TurboFan.

R=titzer@chromium.org, mstarzinger@chromium.org,mbrandy@us.ibm.com
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27726}
2015-04-09 22:14:33 +00:00
michael_dawson
9fc9d8bd3d PPC: Code cleanup in GenerateRecordCallTarget.
Port 6a222b8ff0

R=mbrandy@us.ibm.com

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27725}
2015-04-09 22:13:22 +00:00
michael_dawson
ae475b54c9 PPC: Reland "Merge old data and pointer space."
Port 59be4ba7f4

Original commit message:
This reverts commit cbfcee5575.

R=mbrandy@us.ibm.com

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27723}
2015-04-09 21:45:48 +00:00
michael_dawson
a5d71c2cac PPC: JSEntryTrampoline: check for stack space before pushing arguments
Port 146598f44a

Original commit message:
Optimistically pushing a lot of arguments can run into the stack limit of the process, at least on operating systems where this limit is close to the limit that V8 sets for itself.

R=mbrandy@us.ibm.com

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27719}
2015-04-09 20:52:41 +00:00
hpayer
59be4ba7f4 Reland "Merge old data and pointer space."
This reverts commit cbfcee5575.

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27623}
2015-04-07 11:32:10 +00:00
yangguo
c67cb287a9 Always update raw pointers when handling interrupts inside RegExp code.
R=mstarzinger@chromium.org
BUG=chromium:469480
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#27615}
2015-04-07 09:44:57 +00:00
adamk
909500aa1d Reimplement Maps and Sets in JS
Previously, the only optimized code path for Maps and Sets was for String keys.
This was achieved through an implementation of various complex operations
in Hydrogen. This approach was neither scalable nor forward-compatible.

This patch adds the necessary intrinsics to implement Maps and Sets almost entirely
in JS. The added intrinsics are:

  %_FixedArrayGet
  %_FixedArraySet
  %_TheHole
  %_JSCollectionGetTable
  %_StringGetRawHashField

With these additions, as well as a few changes to what's exposed as runtime functions,
most of the C++ code backing Maps and Sets is gone (including both runtime code in
objects.cc and Crankshaft in hydrogen.cc).

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

Cr-Commit-Position: refs/heads/master@{#27605}
2015-04-07 00:12:04 +00:00
michael_dawson
452e5e6696 PPC: v8:3539 - hold constructor feedback in weak cells
Port b134ae74b5

Original commit message:
BUG=v8:3539
LOG=N

R=verwaest@chromium.org, mbrandy@us.ibm.com

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

Cr-Commit-Position: refs/heads/master@{#27594}
2015-04-02 19:49:04 +00:00
michael_dawson
4922412a72 PPC: Ensure object literal element boilerplates aren't modified.
Port 7c347c545e

Original commit message:
A bug allows JSObject literals with elements to have the elements in the
boilerplate modified.

R=mbrandy@us.ibm.com

BUG=466993
LOG=N

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

Cr-Commit-Position: refs/heads/master@{#27552}
2015-03-31 18:30:26 +00:00
verwaest
16ee55097a Generate common StoreFastElementStubs ahead of time
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27536}
2015-03-31 12:25:25 +00:00
michael_dawson
256f00c031 PPC: Serializer: move to a subfolder and clean up includes.
Port 019096f829

Original commit message:

R=mbrandy@us.ibm.com

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27506}
2015-03-27 21:58:58 +00:00
michael_dawson
fab0f042e6 PPC64: Fix return value checks for generated regexp code.
This fixes simulated debug-mode failures in the following tests:
  mjsunit/regexp-stack-overflow
  mjsunit/regress/regress-crbug-467047

R=mbrandy@us.ibm.com

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27500}
2015-03-27 13:30:45 +00:00
michael_dawson
918ec32d7b PPC: Switch full-codegen from StackHandlers to handler table.
Port 38a719f965

Original commit message:
This switches full-codegen to no longer push and pop StackHandler
markers onto the operand stack, but relies on a range-based handler
table instead. We only use StackHandlers in JSEntryStubs to mark the
transition from C to JS code.

Note that this makes deoptimization and OSR from within any try-block
work out of the box, makes the non-exception paths faster and should
overall be neutral on the memory footprint (pros).

On the other hand it makes the exception paths slower and actually
throwing and exception more expensive (cons).

TEST=cctest/test-run-jsexceptions/DeoptTry

R=yangguo@chromium.org, R=mbrandy@us.ibm.com

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27453}
2015-03-25 17:26:41 +00:00
michael_dawson
5a91597383 PPC: Ensure predictable code size at map_check in LCodeGen::DoInstanceOfKnownGlobal.
R=mbrandy@us.ibm.com, svenpanne@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27446}
2015-03-25 14:59:21 +00:00
michael_dawson
039247c4f3 PPC: VectorICs: keyed element loads were kicking out non-smi keys unnecessarily
Port 6689cc27eb

Original commit message:
Handlers should be in charge of this work. The change uncovered a bug in
vector-ics related to keyed loads into strings. It's important for
StringCharCodeAtGenerator, a helper used in full code and in
LoadIndexedStringStub (a handler) to protect the vector and slot registers
when it makes a runtime call to convert a HeapNumber to a Smi.

It's still possible for the handler to MISS after this call, perhaps due
to out of bounds access. In that case, the vector and slot registers need
to be delivered safely to the MISS handler.

R=mbrandy@us.ibm.com, svenpanne@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27430}
2015-03-25 06:42:25 +00:00
michael_dawson
052020e514 PPC: Fix 'PPC: Serializer: serialize internal references via object visitor.'
Port 56d2ee0310

Original commit message:

R=mbrandy@us.ibm.com

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27428}
2015-03-25 06:40:09 +00:00
michael_dawson
f8183277c1 PPC: [es6] implement Reflect.apply() & Reflect.construct()
Port d21fd15467

Original commit message:
BUG=v8:3900
LOG=N

R=mbrandy@us.ibm.com, svenpanne@chromium.org, danno@chromium.org, jkummerow@chromium.org, dslomov@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27392}
2015-03-24 09:37:59 +00:00
michael_dawson
833364a7de PPC: [es6] generate rest parameters correctly for subclass constructors
commit bef80fcfd7

Original commit message:
BUG=v8:3977
R=dslomov@chromium.org, arv@chromium.org
LOG=N

R=mbrandy@us.ibm.com, svenpanne@chromium.org, danno@chromium.org, jkummerow@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27390}
2015-03-24 09:27:29 +00:00
michael_dawson
cff4fb97dc PPC: Serializer: serialize internal references via object visitor.
Port 7c149afb6c

Original commit message:

R=mbrandy@us.ibm.com, svenpanne@chromium.org, danno@chromium.org, jkummerow@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27388}
2015-03-24 09:16:54 +00:00
michael_dawson
8d4c7fea0d PPC: Disinherit PropertyCell from Cell
Port 8c0d289772

Original commit message:

R=mbrandy@us.ibm.com, svenpanne@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27382}
2015-03-23 21:41:55 +00:00
michael_dawson
890c0eac21 PPC: Remove kind field from StackHandler.
Port 15f8213809

Original commit message:
This relands commit 96f79568a9.

This makes the Isolate::Throw logic not depend on a prediction of
whether an exception is caught or uncaught. Such a prediction is
inherently undecidable because a finally block can decide between
consuming or re-throwing an exception depending on arbitray control
flow.

There still is a conservative prediction mechanism in place that
components like the debugger or tracing can use for reporting.

With this change we can get rid of the StackHandler::kind field, a
pre-requisite to do table-based lookups of exception handlers.

R=mbrandy@us.ibm.com, yangguo@chromium.org, svenpanne@chromium.org

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27381}
2015-03-23 21:32:56 +00:00
michael_dawson
c277e7efad PPC: Remove PropertyCell space
Port 16c8485a35

Original commit message:
Replaces StoreGlobalCell / LoadGlobalCell with NamedField variants that use write barriers.

R=mbrandy@us.ibm.com, svenpanne@chromium.org
BUG=

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

Cr-Commit-Position: refs/heads/master@{#27380}
2015-03-23 21:31:43 +00:00
mstarzinger
11fb202f96 Move CompilationInfo::this_has_uses to HGraph::this_has_uses.
R=titzer@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27378}
2015-03-23 19:11:29 +00:00
michael_dawson
8977d6c973 PPC: Use platform specific stubs for vector-based Load/KeyedLoad.
Port 34a1a76ddf

Original commit message:
A hydrogen code stub is not the best approach because it builds a frame
and doesn't have the technology to discard roots at tail call exits.
Platform-specific stubs provide much better performance at this point.

R=verwaest@chromium.org, mbrandy@us.ibm.com

BUG=

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

Cr-Commit-Position: refs/heads/master@{#27365}
2015-03-23 13:25:22 +00:00
hpayer
cbfcee5575 Revert "Merge old data and pointer space."
TBR=verwaest@chromium.org,ulan@chromium.org,ishell@chromium.org
NOTRY=true

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

Cr-Commit-Position: refs/heads/master@{#27323}
2015-03-19 22:03:32 +00:00
bmeurer
e18e3cd4d8 [stubs] Add missing interface descriptor for the CompareIC.
R=jarin@chromium.org

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

Cr-Commit-Position: refs/heads/master@{#27305}
2015-03-19 13:09:37 +00:00
svenpanne
736fa1d21e Add IBM people to PPC owners.
Review URL: https://codereview.chromium.org/1014063002

Cr-Commit-Position: refs/heads/master@{#27278}
2015-03-18 16:12:14 +00:00