verwaest@chromium.org
e8d6f44183
Mark CheckMaps that can cause migration with ChangesNewSpacePromotion.
...
BUG=
R=danno@chromium.org
Review URL: https://chromiumcodereview.appspot.com/22982003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16166 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-13 09:38:46 +00:00
verwaest@chromium.org
3715358145
Replace LoadNamedFieldPolymorphic with explicit branches.
...
R=ulan@chromium.org
Review URL: https://chromiumcodereview.appspot.com/22213002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16133 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-09 14:04:47 +00:00
verwaest@chromium.org
5f9ff709f0
Reduce some code duplication
...
R=svenpanne@chromium.org
Review URL: https://chromiumcodereview.appspot.com/22732006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16130 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-09 12:33:06 +00:00
verwaest@chromium.org
d435819e36
Replace MathFloor/Round by HChange if the input representation does not match the output representation
...
R=svenpanne@chromium.org
Review URL: https://chromiumcodereview.appspot.com/22398009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16129 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-09 12:03:40 +00:00
verwaest@chromium.org
19659646ca
Fix smi-based math floor.
...
BUG=chromium:270268
R=svenpanne@chromium.org
Review URL: https://chromiumcodereview.appspot.com/22623007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16128 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-09 11:21:03 +00:00
svenpanne@chromium.org
bc6fe88030
Desugar bitwise negation into XOR and kill all UnaryOp stuff.
...
R=mstarzinger@chromium.org , verwaest@chromium.org
Review URL: https://codereview.chromium.org/22184004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16073 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-06 13:34:51 +00:00
verwaest@chromium.org
9d9930ce99
Migrate instance of deprecated maps in HCheckMaps.
...
Currently only direct map checks are supported. Otherwise only polymorphic cases with a generic fallback behave properly, regular polymorphic cases still need to be adapted.
R=danno@chromium.org
Review URL: https://chromiumcodereview.appspot.com/21536003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16057 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-05 16:42:39 +00:00
verwaest@chromium.org
04b5e7fa63
Replace HCheckPrototypeMaps by explicit map checks of constant values.
...
R=danno@chromium.org
Review URL: https://chromiumcodereview.appspot.com/21065006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16055 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-05 13:45:16 +00:00
mstarzinger@chromium.org
1e296936eb
Store transition on HStoreNamedField as HConstant.
...
This allows optimization passes that run in the parallel compiler thread
to use the map that a store transitions to for further analysis even
though the map handle cannot be dereferenced.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/21560002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16028 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-02 11:24:55 +00:00
titzer@chromium.org
af2663afd8
Remove instructions and infrastructure related to IDEFs that is now obsolete (and was never turned on). The new bounds check elimination phase doesn't make use of these features, as they were the first parts of the previous approach which was never completed.
...
BUG=
R=danno@chromium.org
Review URL: https://codereview.chromium.org/21579003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16027 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-02 11:17:26 +00:00
bmeurer@chromium.org
3da5d1ad7b
Get rid of HStringLength.
...
Use HLoadNamedField to load the string length field instead.
Depends on: https://codereview.chromium.org/21488002
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/21499002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16002 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-01 08:42:47 +00:00
bmeurer@chromium.org
9f8d162471
Fix broken HCheckInstanceType::Canonicalize().
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/21488002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15999 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-01 08:27:46 +00:00
hpayer@chromium.org
68271ddc0e
Print HAllocate flags in --trace-hydrogen.
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/21374004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15994 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-01 07:56:36 +00:00
danno@chromium.org
4cdffbf4fe
Improve instruction creating/adding shorthand in HGraphBuilder
...
Add multi-argument templates for New, NewUncasted, Add and AddUncasted that
call boilerplate HInstruction::New methods rather than the constructor directly.
This allows for automatic passing of the zone and context for instructions that
need them.
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/21356002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15990 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-31 14:58:39 +00:00
bmeurer@chromium.org
44e4c2756a
Avoid the use of set_type() in instruction constructors.
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/21348002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15984 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-31 10:56:46 +00:00
bmeurer@chromium.org
8823e8e89f
Get rid of HLinkObjectInList.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/21345002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15983 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-31 10:47:44 +00:00
verwaest@chromium.org
3143f5f88b
Remove special handling of fields in combination with elements transitions in Crankshaft.
...
Instead first try to keep ICs monomorphic if elements kinds generalize. If that fails, use standard polymorphic handling. The Try*PolymorphicAsMonomorphic methods will automatically produce code similar to the previous approach using CheckMapsWithTransitions.
BUG=
R=hpayer@chromium.org
Review URL: https://chromiumcodereview.appspot.com/21107004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15982 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-31 10:08:05 +00:00
bmeurer@chromium.org
843cf1f654
Compile fix for older GCCs.
...
TBR=titzer@chromium.org
Review URL: https://codereview.chromium.org/21142007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15981 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-31 10:03:59 +00:00
bmeurer@chromium.org
bacc626f57
Fix HType handling for HConstant with external references.
...
We cannot use set_type() with HType::None() in the HConstant
constructor, since set_type() asserts that the new type is a
subtype of the previous one, but HType::None() is not a subtype
of HType::Tagged() which is the initial type set by the HValue
constructor.
This patch adds an optional type parameter to the HValue,
HInstruction and HTemplateInstruction constructors.
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/21317004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15980 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-31 09:38:37 +00:00
titzer@chromium.org
d87296eb1f
Eagerly set the types of many kinds of hydrogen instructions.
...
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/21072002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15979 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-31 09:29:30 +00:00
hpayer@chromium.org
b6a6fc76dc
Allocation space decisions are precisely made in hydrogen.
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/21089006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15970 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-31 07:03:16 +00:00
verwaest@chromium.org
f328c2c77c
HasNonSmiUse should ignore tagged uses
...
R=verwaest@chromium.org
Review URL: https://chromiumcodereview.appspot.com/21105006
Patch from Weiliang Lin <weiliang.lin2@gmail.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15950 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-30 09:06:42 +00:00
bmeurer@chromium.org
b019910a38
This adds generic support for ExternalReferences in Hydrogen (and Lithium), as required for AddIncrementCounter.
...
R=danno@chromium.org , titzer@chromium.org
Review URL: https://codereview.chromium.org/19562003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15936 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-29 13:56:51 +00:00
titzer@chromium.org
37ee4a0369
Fix IsDeletable() for HStringAdd, HStringCharCodeAt, HStringCharFromCode.
...
BUG=
R=mstarzinger@chromium.org , svenpanne@chromium.org
Review URL: https://codereview.chromium.org/20241005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15934 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-29 12:35:43 +00:00
titzer@chromium.org
f403969d1f
Remove Uninitialized from HType.
...
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/20711002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15925 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-29 09:42:57 +00:00
verwaest@chromium.org
5de783d47e
Adding Smi support to Add, Sub, Mul, and Bitwise
...
R=svenpanne@chromium.org
Review URL: https://chromiumcodereview.appspot.com/20070005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15879 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-25 11:53:38 +00:00
titzer@chromium.org
5dd517ff3b
Move representation into HObjectAccess and remove from HLoadNamedField and HStoreNamedField.
...
BUG=
R=danno@chromium.org
Review URL: https://codereview.chromium.org/18503006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15875 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-25 09:37:52 +00:00
mmassi@chromium.org
b5a43f48a6
New array bounds check elimination pass (focused on induction variables and bitwise operations).
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/17568015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15866 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-25 06:37:25 +00:00
verwaest@chromium.org
6b83c868f0
Convert CONSTANT_FUNCTION to CONSTANT
...
R=yangguo@chromium.org
Review URL: https://chromiumcodereview.appspot.com/19485008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15858 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-24 12:34:50 +00:00
mstarzinger@chromium.org
3cdeb2f9cd
Avoid adding HWrapReceiver during graph building.
...
This adds an early check to the graph builder which prevents adding an
HWrapReceiver instruction if the receiver type is already known at graph
building time. Also HAllocate no longer unnecessarily postpones setting
it's type until type inference but sets it right away. These changes are
in preparation for escape analysis.
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/19493005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15843 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-24 08:05:49 +00:00
hpayer@chromium.org
6c83b7d6c1
Support double allocations when folding allocation.
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/19956002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15839 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-23 19:27:00 +00:00
danno@chromium.org
8cbbdd066c
Unify SoftDeoptimize and Deoptimize hydrogen instructions
...
BUG=chromium:258519
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/19528003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15827 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-23 13:35:10 +00:00
verwaest@chromium.org
7e08f81e6d
Also eliminate map checks with transitions.
...
R=ulan@chromium.org
Review URL: https://chromiumcodereview.appspot.com/19888006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15821 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-23 10:01:06 +00:00
verwaest@chromium.org
babce318d1
Eliminate map checks of constant values.
...
R=ulan@chromium.org
Review URL: https://chromiumcodereview.appspot.com/19954005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15819 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-23 09:18:42 +00:00
olivf@chromium.org
b8d7bee4a3
Avoid tagged values for Instructions that truncate the operands with ToNumber.
...
I case the ToNumber is applied to a non numeric value but its not observable (some constants and oddballs) we should already do it in hydrogen...
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/19798002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15818 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-23 09:13:59 +00:00
hpayer@chromium.org
067d921cc0
Limit the amount of memory that can be folded together.
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/19804002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15804 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-22 12:34:23 +00:00
hpayer@chromium.org
ecc31a0cee
Prefill pre-allocated memory of folded allocation with one pointer fillers when heap verifier is on.
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/19723004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15798 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-22 11:07:43 +00:00
mvstanton@chromium.org
3761e0388d
With >= 64 non-string instance types, I removed an optimization that allowed us to detect internalized strings with a single bit test. ( https://code.google.com/p/v8/source/detail?r=15358 ) But that change caused a regression, so here is an improvement:
...
Put the internalized string types in the lower 64 entries of
INSTANCE_TYPE, and non-internalized string types in the next 64 entries.
This way we can restore the single bit check.
BUG=
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/19749004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15773 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-19 11:29:11 +00:00
bmeurer@chromium.org
d750a6dcd8
Consistently use HStringAdd instead of HCallStub with CodeStub::StringAdd.
...
Previously there were two ways to actually use the StringAddStub
from Hydrogen:
- Either using HStringAdd (which implied NO_STRING_CHECK_IN_STUB
and and does the argument handling internally),
- or using HCallStub with CodeStub::StringAdd (which implied
NO_STRING_ADD_FLAGS and expected the arguments to be on the
stack already).
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/19541003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15771 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-19 09:42:15 +00:00
mvstanton@chromium.org
b9f0c06ab2
The gc should be able to traverse all AllocationSites for decision making. The sites are threaded into a weak list. Special problems include:
...
* Allocations of AllocationSites occur in generated code, so generated code needs to be able to add to the list. For now I have a special hydrogen instruction, though it would be nice to use general purpose instructions.
* The snapshot contains AllocationSites, and these need to be re-threaded into the list on deserialization.
Something nice is that the AllocationSites are only created in old space, so a special new space visitor isn't required.
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/18173013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15715 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-17 11:50:24 +00:00
mvstanton@chromium.org
4465c83104
Calls to HCheckFunction can be eliminated if the value is an HConstant.
...
Reland "Calls to HCheckFunction can be eliminated if the value is an HConstant"
(https://codereview.chromium.org/18751003/ ).
The CL failed because of heap snapshot issues. alph@chromium.org just checked in
a fix for that (https://code.google.com/p/v8/source/detail?r=15694 ).
BUG=
R=danno@chromium.org
Review URL: https://codereview.chromium.org/19504007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15704 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-17 08:46:01 +00:00
hpayer@chromium.org
a65cb03955
Added tracing information to the case when allocation folding cannot be performed.
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/19290008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15686 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-16 08:54:41 +00:00
mstarzinger@chromium.org
35052bc2ea
Reland deprecation of HAllocateObject in favor of HAllocate.
...
This essentially relands r14930 and r14935 with adaptions to the current
code base. It models the instantiation of an implicit receiver for
CallNew nodes in hydrogen using HAllocate together with generic stores
instead of one specialized HAllocateObject instruction, hence creating a
single choking point for inlined allocation in optimized code.
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/19207002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15673 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-15 15:12:16 +00:00
hpayer@chromium.org
90056df999
Use filler maps for folded allocations when verify heap is turned on.
...
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/18863011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15636 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-11 15:29:02 +00:00
hpayer@chromium.org
90a8ac78bd
Remove filler map when folding allocations and turn on allocation folding.
...
BUG=
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/18384004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15631 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-11 13:53:54 +00:00
hpayer@chromium.org
99d541a486
Allocation folding integrated into the GVN phase.
...
BUG=
R=mstarzinger@chromium.org , titzer@chromium.org
Review URL: https://codereview.chromium.org/18596005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15624 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-11 11:41:33 +00:00
mvstanton@chromium.org
448b268962
Revert "Calls to HCheckFunction can be eliminated if the value is an HConstant"
...
This reverts commit 3f96122cc572f7a0b638c30f65328c3cb3666795.
BUG=
R=danno@chromium.org
Review URL: https://codereview.chromium.org/18998003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15590 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-10 12:19:37 +00:00
olivf@chromium.org
857178ad23
Replace custom builtin invocation instructions by a generic version
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/18154004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15582 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-10 09:02:23 +00:00
jkummerow@chromium.org
f0811f4e6f
Fix and cleanup can_be_minus_zero computation
...
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/18434004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15546 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 11:15:24 +00:00
mvstanton@chromium.org
eea586f2a1
Calls to HCheckFunction can be eliminated if the value is an HConstant
...
function, and that function handle matches the target handle.
BUG=
R=danno@chromium.org , mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/18751003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15540 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 09:00:59 +00:00