bmeurer@chromium.org
557e9b9d5c
Fix IfBuilder to use instruction factories. Add missing instruction factories.
...
This also makes the instruction constructors private and fixes
all uses of the public constructors to use the factory methods
instead.
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/23654051
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16808 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-19 06:45:45 +00:00
verwaest@chromium.org
4da303d937
Unify load handling into CanLoad and Load.
...
R=titzer@chromium.org
Review URL: https://chromiumcodereview.appspot.com/24088003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16792 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-18 14:56:18 +00:00
bmeurer@chromium.org
8588b74491
Remove unused context parameter from AddIncrementCounter().
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/23622033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16728 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-16 11:30:10 +00:00
verwaest@chromium.org
e9c4a49866
Reland Handle non-JSObject heap objects using slow-path IC stub guarded by the map.
...
R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/23578030
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16696 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-12 22:04:04 +00:00
titzer@chromium.org
49d9555a97
Generate a custom OSR entrypoint for OSR compiles on all platforms, and transition to optimized code using the special entrypoint, instead of through the deoptimizer. Do not install the OSR compiled code as _the_ optimized code for a function.
...
Remove OSR-related stuff from deoptimizer.
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/21340002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16599 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-09 16:34:40 +00:00
verwaest@chromium.org
e25e6ab25d
Let BuildStore/BuildLoad distinguish between keyed/named load/stores.
...
R=bmeurer@chromium.org
Review URL: https://chromiumcodereview.appspot.com/23537024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16575 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-06 13:06:39 +00:00
verwaest@chromium.org
79a5834cd0
Wrap PushLoad and BuildStoreInEffect in CHECK_ALIVE.
...
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/23903017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16558 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-05 16:22:46 +00:00
verwaest@chromium.org
924463984c
Use ast_id (id) instead of return_id (LoadId) in simulates for load instructions.
...
R=svenpanne@chromium.org
Review URL: https://chromiumcodereview.appspot.com/23889006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16519 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-04 09:19:17 +00:00
verwaest@chromium.org
6f8713e25b
Put store of postcrement in EffectContext.
...
R=svenpanne@chromium.org
Review URL: https://chromiumcodereview.appspot.com/23514034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16516 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-04 08:16:54 +00:00
verwaest@chromium.org
80dda72f4b
Unify all 3 implementations of load handling.
...
R=svenpanne@chromium.org
Review URL: https://chromiumcodereview.appspot.com/23496031
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16510 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-09-03 14:07:38 +00:00
hpayer@chromium.org
95c7ae8149
Simplified BuildFastLiteral by eliminating manual allocation folding.
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/23030002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16422 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-29 12:06:45 +00:00
bmeurer@chromium.org
b320dfcf58
Reland^2 "Add Chromium-style TimeDelta, Time and TimeTicks classes, and a new ElapsedTimer class."
...
These classes are meant to replace OS::Ticks() and OS::TimeCurrentMillis(),
which are broken in several ways. The ElapsedTimer class implements a
stopwatch using TimeTicks::HighResNow() for high resolution, monotonic
timing.
Also fix the CpuProfile::GetStartTime() and CpuProfile::GetEndTime()
methods to actually return the time relative to the unix epoch as stated
in the documentation (previously that was relative to some arbitrary
point in time, i.e. boot time).
The previous Windows issues have been resolved, and we now use GetTickCount64()
on Windows Vista and later, falling back to timeGetTime() with rollover
protection for earlier Windows versions.
BUG=v8:2853
R=machenbach@chromium.org , yurys@chromium.org
Review URL: https://codereview.chromium.org/23490015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16413 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-29 09:15:13 +00:00
bmeurer@chromium.org
adab11d0f9
Revert "Cross-compiling from Linux to Android requires -lrt for the host toolset.", "Fix Visual Studio debug build after r16398." and "Reland "Add Chromium-style TimeDelta, Time and TimeTicks classes, and a new ElapsedTimer class.""
...
This reverts commit r16398, r16399 and r16402 for breaking the Windows
WebKit tests. Will reland fix which doesn't use High Resolution Timer
for ElapsedTimer (we suspect QueryPerformanceCounter overhead is
responsible for test breakage).
TBR=machenbach@chromium.org
Review URL: https://codereview.chromium.org/23710002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16405 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-28 14:32:08 +00:00
bmeurer@chromium.org
e2b4525397
Reland "Add Chromium-style TimeDelta, Time and TimeTicks classes, and a new ElapsedTimer class."
...
These classes are meant to replace OS::Ticks() and OS::TimeCurrentMillis(),
which are broken in several ways. The ElapsedTimer class implements a
stopwatch using TimeTicks::HighResNow() for high resolution, monotonic
timing.
Also fix the CpuProfile::GetStartTime() and CpuProfile::GetEndTime()
methods to actually return the time relative to the unix epoch as stated
in the documentation (previously that was relative to some arbitrary
point in time, i.e. boot time).
BUG=v8:2853
R=machenbach@chromium.org
Review URL: https://codereview.chromium.org/23469013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16398 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-28 13:03:06 +00:00
bmeurer@chromium.org
1d3f6815e3
Revert "Add Chromium-style TimeDelta, Time and TimeTicks classes, and a new ElapsedTimer class."
...
This reverts commit r16390 for breaking the Windows build. Will
reland fixed version, which also uses the platform/ folder instead
of time/ folder as per offline discussion.
TBR=machenbach@chromium.org
Review URL: https://codereview.chromium.org/23690003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16391 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-28 11:38:20 +00:00
bmeurer@chromium.org
fa5216a145
Add Chromium-style TimeDelta, Time and TimeTicks classes, and a new ElapsedTimer class.
...
These classes are meant to replace OS::Ticks() and OS::TimeCurrentMillis(),
which are broken in several ways. The ElapsedTimer class implements a
stopwatch using TimeTicks::HighResNow() for high resolution, monotonic
timing.
Also fix the CpuProfile::GetStartTime() and CpuProfile::GetEndTime()
methods to actually return the time relative to the unix epoch as stated
in the documentation (previously that was relative to some arbitrary
point in time, i.e. boot time).
BUG=v8:2853
R=machenbach@chromium.org , yurys@chromium.org
Committed: https://code.google.com/p/v8/source/detail?r=16388
Review URL: https://codereview.chromium.org/23295034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16390 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-28 11:06:11 +00:00
bmeurer@chromium.org
cfb126c52a
Revert "Add Chromium-style TimeDelta, Time and TimeTicks classes, and a new ElapsedTimer class."
...
This reverts commit r16388 for breaking build due to merge typo,
will reland with typo fixed.
TBR=machenbach@chromium.org
Review URL: https://codereview.chromium.org/23698002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16389 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-28 11:04:40 +00:00
bmeurer@chromium.org
8faf4d4291
Add Chromium-style TimeDelta, Time and TimeTicks classes, and a new ElapsedTimer class.
...
These classes are meant to replace OS::Ticks() and OS::TimeCurrentMillis(),
which are broken in several ways. The ElapsedTimer class implements a
stopwatch using TimeTicks::HighResNow() for high resolution, monotonic
timing.
Also fix the CpuProfile::GetStartTime() and CpuProfile::GetEndTime()
methods to actually return the time relative to the unix epoch as stated
in the documentation (previously that was relative to some arbitrary
point in time, i.e. boot time).
BUG=v8:2853
R=machenbach@chromium.org , yurys@chromium.org
Review URL: https://codereview.chromium.org/23295034
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16388 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-28 10:59:07 +00:00
mvstanton@chromium.org
7fea193609
Convert FastNewClosureStub into hydrogen.
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/22562002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16356 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-27 11:55:08 +00:00
jkummerow@chromium.org
da037f9872
H-BuildIncrement should make use of available type feedback
...
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/22611009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16353 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-27 11:44:45 +00:00
mvstanton@chromium.org
c9591f005e
Store mode for keyed stores should be passed in from type feedback
...
regardless of the map used in polymorphic stores.
BUG=
R=jkummerow@chromium.org , verwaest@chromium.org
Review URL: https://codereview.chromium.org/21058003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16323 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-26 12:28:08 +00:00
titzer@chromium.org
e886eff3bf
Remove dead methods related to InformativeDefinitions.
...
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/22914029
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16274 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-22 13:21:53 +00:00
verwaest@chromium.org
6337281204
Pass checked values to HLoadNamedField, removing the need for extra type-check field.
...
R=titzer@chromium.org
Review URL: https://chromiumcodereview.appspot.com/22831003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16260 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-21 14:49:56 +00:00
bmeurer@chromium.org
c2c6b2813d
Reland "Use V8_FINAL and V8_OVERRIDE in various places, fixing bugs revealed by them.".
...
- Use V8_FINAL and V8_OVERRIDE in Ast classes.
- Use V8_FINAL and V8_OVERRIDE in Lithium mips backend.
- Use V8_FINAL and V8_OVERRIDE in Lithium arm backend.
- Use V8_FINAL and V8_OVERRIDE in Lithium x64 backend.
- Use V8_FINAL and V8_OVERRIDE in Lithium ia32 backend.
- Use V8_FINAL and V8_OVERRIDE in Lithium classes.
- Use V8_FINAL and V8_OVERRIDE in Hydrogen classes.
TBR=dslomov@chromium.org
Review URL: https://codereview.chromium.org/22796020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16244 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-20 11:10:24 +00:00
bmeurer@chromium.org
60e7d4b1e3
Revert "Use V8_FINAL and V8_OVERRIDE in various places, fixing bugs revealed by them."
...
This reverts commit r16232 for breaking the
tools/gen-postmortem-metadata.py script. Will reland without the
objects.{cc,h} changes.
TBR=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/23143007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16243 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-20 10:52:23 +00:00
bmeurer@chromium.org
9929a9cd12
Use V8_FINAL and V8_OVERRIDE in various places, fixing bugs revealed by them.
...
- Use V8_FINAL and V8_OVERRIDE in objects.
- Use V8_FINAL and V8_OVERRIDE in Ast classes.
- Use V8_FINAL and V8_OVERRIDE in Lithium mips backend.
- Use V8_FINAL and V8_OVERRIDE in Lithium arm backend.
- Use V8_FINAL and V8_OVERRIDE in Lithium x64 backend.
- Use V8_FINAL and V8_OVERRIDE in Lithium ia32 backend.
- Use V8_FINAL and V8_OVERRIDE in Lithium classes.
- Use V8_FINAL and V8_OVERRIDE in Hydrogen classes.
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/23064017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16232 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-20 07:27:06 +00:00
verwaest@chromium.org
ee53b0a5ed
Make all load-named-fields depend on their map-check, unless explicitly ignored.
...
BUG=
R=titzer@chromium.org
Review URL: https://chromiumcodereview.appspot.com/22555004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16139 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-09 18:40:10 +00:00
mstarzinger@chromium.org
cc3b7a007f
Allow HPhis to have an invalid merge index.
...
All phis that do not represent local variables or values on the operand
stack are not allowed to carry a merge index, as the replay of the
HEnvironment during LChunkBuilder time might get out of sync due to
colliding indexes.
R=danno@chromium.org
BUG=v8:2815
Review URL: https://codereview.chromium.org/22494003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16135 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-09 15:18:23 +00:00
mvstanton@chromium.org
201c512dc7
Deoptimization is easier to diagnose when there is a text reason.
...
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/22339018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16131 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-09 12:50:42 +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
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
svenpanne@chromium.org
d5b9616991
Clean some unuse code of unary negation
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/22089002
Patch from Weiliang Lin <weiliang.lin2@gmail.com>.
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16036 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-05 06:34:26 +00:00
loislo@chromium.org
d2c443b774
Extract hardcoded error strings into a single place and replace them with enum.
...
I'd like to propagate bailout reason to cpu profiler.
So I need to save it into heap object SharedFunctionInfo.
But:
1) all bailout reason strings spread across all the sources.
2) they are native strings and if I convert them into String then I may have a performance issue.
3) one byte is enough for 184 bailout reasons. Otherwise we need 8 bytes for the pointer.
Also I think it would be nice to have error strings collected in one place.
In that case we will get additional benefits:
It allows us to keep this set of messages under control.
It gives us a chance to internationalize them.
It slightly reduces the binary footprint.
From the other hand the developers have to add new strings into that enum.
BUG=
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/20843012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@16024 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-08-02 09:53:11 +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
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
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
82e4ba6f70
Turn mark deoptimize on undefined into a proper HPhase.
...
This patch also removes the implicit recursion on phi operands,
using a loop and a worklist instead, to avoid potential stack
overflows.
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/21065003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15952 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-30 10:25:20 +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
mstarzinger@chromium.org
f06f57f7fb
Make standalone D8 trace to single hydrogen.cfg file.
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/20204005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15882 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-25 14:11:53 +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
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
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
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
bmeurer@chromium.org
44f576ba65
Replace BuildExternalArrayElementAccess() with AddExternalArrayElementAccess().
...
This is trivial cleanup. All calls to BuildExternalArrayElementAccess()
pass the result to AddInstruction().
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/19658004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15791 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-22 08:20:47 +00:00
bmeurer@chromium.org
1b73068626
Replace BuildFastElementAccess() with AddFastElementAccess().
...
This is trivial cleanup. All calls to BuildFastElementAccess() pass
the result to AddInstruction().
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/19759003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15789 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-22 07:00:46 +00:00
mvstanton@chromium.org
ec8c6f4692
Rename AllocationSiteInfo to AllocationMemento
...
This is just a rename change with the exception of a bug found along the way in
CodeStubGraphBuilder<FastCloneShallowArrayStub>::BuildCodeStub(). There, the
intent is to get the boilerplate object from an AllocationSite. But the wrong
HObjectAccess was used. It only succeeds because it happened to be the same
offset :).
BUG=
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/19595004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15778 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-19 13:30:49 +00:00
verwaest@chromium.org
be472d82fd
Fix wrong bailout id in polymorphic stores.
...
BUG=chromium:259787
R=titzer@chromium.org , ulan@chromium.org
Review URL: https://chromiumcodereview.appspot.com/19528005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15763 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-19 08:45:47 +00:00
jkummerow@chromium.org
22f2fd8397
Synchronize Compare-Literal behavior in FullCodegen and Hydrogen
...
BUG=chromium:260345
R=danno@chromium.org
Review URL: https://codereview.chromium.org/19582002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15723 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-17 13:13:38 +00:00
bmeurer@chromium.org
410b4b2db4
Reland "Turn ElementsTransitionAndStore stub into a HydrogenCodeStub".
...
Fix the invalid array length check, replacing it with a check of
the elements pointer similar to TransitionElementsKindStub.
Refactor common code from ElementsTransitionAndStoreStub and TransitionElementsKindStub into BuildTransitionElementsKind() helper method.
Add test case for the MD5 computation that used to crash before,
and a small test case for the specific issue.
R=danno@chromium.org
Review URL: https://codereview.chromium.org/19367003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15713 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-17 11:37:20 +00:00
svenpanne@chromium.org
0e99e77143
Removed unused HOptimizedGraphBuilder::BuildCallSetter method.
...
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/19235011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15696 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-17 08:02:08 +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
bmeurer@chromium.org
fb77805ab7
Turn propagate deoptimizing mark into a proper HPhase.
...
Also turn the recursion on the domination chain into a loop with
an explicit stack, to avoid possible stack overflow here.
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/19150002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15660 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-15 09:53:00 +00:00
bmeurer@chromium.org
1384094efc
Cleanup leftover definitions in HGraph.
...
R=danno@chromium.org
Review URL: https://codereview.chromium.org/19154002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15654 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-15 07:41:18 +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
bmeurer@chromium.org
c294a40e0a
Turn canonicalization into a proper HPhase.
...
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/18758003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15613 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-11 08:21:50 +00:00
bmeurer@chromium.org
695b18c050
Turn merge removable simulates into a proper HPhase.
...
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/18258004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15609 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-10 16:34:28 +00:00
bmeurer@chromium.org
5664bcaed3
Refactor compute minus zero checks into a proper HPhase.
...
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/18666006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15595 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-10 14:08:19 +00:00
verwaest@chromium.org
cc877e4836
Turn polymorphic calls using the same prototype monomorphic.
...
R=mvstanton@chromium.org
Review URL: https://chromiumcodereview.appspot.com/18918002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15593 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-10 13:05:41 +00:00
bmeurer@chromium.org
bdff9c70b8
Use BuildGrowElementsCapacity for the TransitionElementsKind stub.
...
R=danno@chromium.org , dslomov@chromium.org
Review URL: https://codereview.chromium.org/18876004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15589 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-10 12:19:02 +00:00
verwaest@chromium.org
22d7a85519
Unify Count Operation assignment with other assignments
...
This relands 15578, disables 1 test in harmony observe re bug v8:2774
R=dslomov@chromium.org
Review URL: https://chromiumcodereview.appspot.com/18452013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15588 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-10 12:02:18 +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
dslomov@chromium.org
6071894047
Revert "Unify the Count Operation assignment with other assignments."
...
This reverts commit r15578.
This change made mjsunit/harmony/object-observe.js flaky.
TBR=verwaest@chromium.org
Review URL: https://codereview.chromium.org/18537006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15580 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-10 07:53:16 +00:00
verwaest@chromium.org
5eeed4636d
Unify the Count Operation assignment with other assignments.
...
This does not enable inlining of setters (yet).
R=danno@chromium.org
Review URL: https://chromiumcodereview.appspot.com/17432004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15578 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-09 17:08:47 +00:00
mvstanton@chromium.org
67d9051bcd
Create AllocationSite objects, pointed to by AllocationSiteInfo.
...
This creates a platform where we can do additional things with allocation sites,
other than just aid in reducing array transitions.
BUG=
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/15094018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15545 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 10:02:16 +00:00
bmeurer@chromium.org
47df386841
Turn the representation changes into a proper HPhase.
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/18832002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15541 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 09:02:09 +00:00
bmeurer@chromium.org
99f171a128
Turn redundant bounds checks elimination into a proper HPhase.
...
R=dslomov@chromium.org , mvstanton@chromium.org
Review URL: https://codereview.chromium.org/18826002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15537 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 08:36:28 +00:00
bmeurer@chromium.org
b899185790
Turn infer types into proper HPhase.
...
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/18568007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15535 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 08:33:03 +00:00
bmeurer@chromium.org
e5b69658e4
Turn redundant phi elimination into proper HPhase.
...
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/18549004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15533 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-08 08:18:29 +00:00
bmeurer@chromium.org
17e58e8198
Turn dead code elimination into a proper HPhase.
...
R=dslomov@chromium.org
Review URL: https://codereview.chromium.org/18791002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15529 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-07 06:00:15 +00:00
danno@chromium.org
bd50e6d38f
Refactoring and cleanup of control instructions
...
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/18331004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15513 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-05 10:40:14 +00:00
danno@chromium.org
345cc98a25
Generate StoreGlobal stubs with Hydrogen
...
- Constants globals are inlined into Hydrogen code using code dependencies that invalidate the Crankshafted code when global PropertyCells or the global object change.
- The more general case generates code that is just as good as the hand-written assembly stubs on all platforms.
R=rossberg@chromium.org , ulan@chromium.org
Committed: http://code.google.com/p/v8/source/detail?r=15419
Review URL: https://codereview.chromium.org/16925008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15512 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-05 10:34:02 +00:00
olivf@chromium.org
240c7aced9
Convert UnaryOpStub to a HydrogenCodeStub
...
BUG=
R=danno@chromium.org
Review URL: https://codereview.chromium.org/18712002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15506 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-05 09:26:22 +00:00
titzer@chromium.org
bddf08b0b1
Factor out OSR-related graph-building functionality from hydrogen.cc.
...
BUG=
Review URL: https://codereview.chromium.org/18496002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15488 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-04 09:20:07 +00:00
olivf@chromium.org
950a372834
Revert "Convert UnaryOpStub to a HydrogenCodeStub"
...
The problem is the HCallConstantFunction which is not context sensitive, so we leak the builtin. We first need a Hydrogen version of __ IvokeBuiltin.
BUG=
R=danno@chromium.org , machenbach@chromium.org
Review URL: https://codereview.chromium.org/18650003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15486 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-03 19:57:25 +00:00
olivf@chromium.org
0d2fed8f26
Convert UnaryOpStub to a HydrogenCodeStub
...
BUG=
R=danno@chromium.org
Review URL: https://codereview.chromium.org/17229005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15473 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-03 14:56:53 +00:00
titzer@chromium.org
63abcc515b
Remove HFixedArrayBaseLength instruction and replace with regular HLoadNamedField.
...
BUG=
Review URL: https://codereview.chromium.org/18508002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15454 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-02 15:31:17 +00:00
bmeurer@chromium.org
f60609bd1b
Turn UInt32 analysis into a proper HPhase.
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/18487003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15441 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-02 10:53:08 +00:00
danno@chromium.org
77c20c30a3
Revert r15419: "Generate StoreGlobal stubs with Hydrogen"
...
TBR=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/18357004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15427 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-01 15:12:21 +00:00
danno@chromium.org
a3bce19868
Generate StoreGlobal stubs with Hydrogen
...
- Constants globals are inlined into Hydrogen code using code dependencies that invalidate the Crankshafted code when global PropertyCells or the global object change.
- The more general case generates code that is just as good as the hand-written assembly stubs on all platforms.
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/16925008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15419 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-07-01 13:22:13 +00:00
mstarzinger@chromium.org
c28a6c9ea2
Use HInstructionIterator more broadly for hydrogen.
...
R=svenpanne@chromium.org
Review URL: https://codereview.chromium.org/18068002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15394 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 16:31:11 +00:00
mstarzinger@chromium.org
8b976da60e
First simplistic implementation of escape analysis.
...
R=jkummerow@chromium.org , titzer@chromium.org
Review URL: https://codereview.chromium.org/17914002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15393 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 16:09:54 +00:00
mvstanton@chromium.org
83519ec87a
Hydrogen array constructor cleanup and improvements
...
* Cleanup of LCallNewArray::PrintDataTo() method
* Created HCallNewArray::PrintDataTo()
* Created many more tests in array-constructor-feedback.js
* Removed redundant instructions in
GenerateRecordCallTarget
* Bugfix in CreateArrayDispatchOneArgument: on a call to
new Array(0), we'd like to set the type feedback cell to
a packed elements kind, but we shouldn't do it if the
cell contains the megamorphic sentinel.
* When used from crankshaft, ArrayConstructorStubs can
avoid verifying that the function being called is the
array function from the current native context, relying
instead on the fact that crankshaft issues an
HCheckFunction to protect the constructor call. (this
new minor key is used in LCodeGen::DoCallNewArray(), and
influences code generation in
CodeStubGraphBuilderBase::BuildArrayConstructor()).
* Optimization: the array constructor specialized for
FAST_SMI_ELEMENTS can save some instructions by looking
up the correct map on the passed in constructor, rather
than indexing into the array of cached maps per element
kind.
BUG=
R=danno@chromium.org
Review URL: https://codereview.chromium.org/17091002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15383 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 13:16:14 +00:00
bmeurer@chromium.org
382ec92f2a
Make use of templatized convienience functions for adding Hydrogen instructions.
...
Building on the previous changes from https://codereview.chromium.org/18050004/
this patch makes even more use of the templatized functions for adding
Hydrogen instructions.
R=danno@chromium.org
BUG=
Review URL: https://codereview.chromium.org/18051010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15379 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 11:44:16 +00:00
bmeurer@chromium.org
f11af230e8
Refactor HInferRepresentation into an HPhase and use the phase zone.
...
Rename HInferRepresentation to HInferRepresentationPhase,
following naming scheme suggested by danno@chromium.org in
https://codereview.chromium.org/17458002
The HInferRepresentationPhase now uses the phase zone for all its
allocations.
Depends on https://codereview.chromium.org/17587008
R=danno@chromium.org
BUG=
Review URL: https://codereview.chromium.org/18054002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15373 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-28 07:40:35 +00:00
hpayer@chromium.org
2957b2fdf8
Fix check style breakage.
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/18056005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15363 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-27 15:17:55 +00:00
danno@chromium.org
f95ddc8891
Add templatized convienience functions for adding hydrogen instructions
...
R=bmeurer@chromium.org
Review URL: https://codereview.chromium.org/18050004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15360 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-27 14:36:14 +00:00
bmeurer@chromium.org
32f5e099d4
Add templatized Run() method for Hydrogen phases.
...
Depends upon https://codereview.chromium.org/17657004
R=danno@chromium.org
BUG=
Review URL: https://codereview.chromium.org/18034003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15355 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-27 13:13:18 +00:00
bmeurer@chromium.org
98786ae073
Refactor Hydrogen GVN into an HPhase and use the phase zone.
...
The HGlobalValueNumberer class is renamed to HGlobalValueNumberingPhase,
following the naming scheme suggested by danno@chromium.org in
https://codereview.chromium.org/17458002
The GVN phase now uses the phase zone for all its allocations.
Depends upon https://codereview.chromium.org/18022002
R=danno@chromium.org
BUG=
Review URL: https://codereview.chromium.org/17657004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15353 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-27 13:09:08 +00:00
bmeurer@chromium.org
073b1d1dfb
Move phase_zone from CompilationInfo to CompilationPhase.
...
Each CompilationPhase has its own zone, used for phase local
allocations. The zone of CompilationInfo should only be used
for non phase local allocations.
R=danno@chromium.org
BUG=
Review URL: https://codereview.chromium.org/18022002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15352 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-27 13:03:01 +00:00
olivf@chromium.org
21cd74eaa2
Avoid Unnecessary Smi Checks
...
BUG=
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/16026023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15344 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-26 17:37:55 +00:00
bmeurer@chromium.org
9f05d61a1d
Split HPhase for Lithium and Hydrogen using common CompilationPhase base.
...
Add new base class CompilationPhase, which is the base for both HPhase, LPhase and LAllocatorPhase. HPhase is now for Hydrogen passes only, LPhase is for Lithium passes and LAllocatorPhase is for LAllocator phases.
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/17572011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15321 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-25 12:22:26 +00:00
hpayer@chromium.org
7ba980f2b1
Added pretenuring support for fast literal allocation in old data space.
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/17580011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15306 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-25 07:47:53 +00:00
mstarzinger@chromium.org
bd90e71b01
Fix ugly typo in HValue::UpdateRepresentation.
...
R=jkummerow@chromium.org
TEST=mjsunit/math-min-max --extra-flags="--gc-interval=500"
Review URL: https://codereview.chromium.org/17580019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15301 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-24 14:34:07 +00:00
bmeurer@chromium.org
3481344df8
Drop (mis)use of HPhase in full code gen.
...
The full code generator is not a proper Hydrogen phase. The full code
gen ticks are tracked in a special member of HStatistics, so HPhase is
most probably misused at this point.
R=danno@chromium.org
BUG=
Review URL: https://codereview.chromium.org/17590005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15291 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-24 13:25:44 +00:00
mstarzinger@chromium.org
ea87d08557
Revert r14930 and r14935 temporarily.
...
This is a temporary revert to track down a potential perf regression
introduced in r14930. The following two changes were reverted:
- "Deprecate HAllocateObject in favor of HAllocate."
- "Added pretenuring support for call new."
R=danno@chromium.org
BUG=chromium:247504
Review URL: https://codereview.chromium.org/17491002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15229 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-20 10:48:14 +00:00
verwaest@chromium.org
e829fb4fa2
Merge assignment handling for Assignment and CompoundAssignment
...
R=danno@chromium.org
Review URL: https://chromiumcodereview.appspot.com/17328005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15226 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-20 09:19:19 +00:00
mstarzinger@chromium.org
6510948b2c
Make Zone::allocation_size work with parallel zones.
...
R=yangguo@chromium.org
Review URL: https://codereview.chromium.org/16858018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15197 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-19 07:48:41 +00:00
verwaest@chromium.org
773c08c58f
Try convert polymorphic stores into a single monomorphic store.
...
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/16975006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15158 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-14 14:16:03 +00:00
verwaest@chromium.org
91eda65014
Reduce usage of AssumeRepresentation
...
BUG=
R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/16871011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15132 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-13 18:09:33 +00:00
verwaest@chromium.org
1d74cfaaf4
Refactor turning polymorphic loads into monomorphic loads
...
- remove special code for polymorphic loading of array length
- use it in VisitCountOperation
BUG=
R=hpayer@chromium.org
Review URL: https://chromiumcodereview.appspot.com/16948005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15126 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-13 16:36:15 +00:00
rossberg@chromium.org
94f651bc1b
Migrate Compare ICs to new type rep
...
(Does not yet use common AST expression type field.)
R=jkummerow@chromium.org
BUG=
Review URL: https://codereview.chromium.org/16361015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15093 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-12 17:20:37 +00:00
mstarzinger@chromium.org
93ab1864ea
Allow the deoptimizer translation to track de-materialized objects.
...
This allows the deoptimizer to materialize objects (e.g. the arguments
object) while deopting without having a consective stack area holding
the object values. The LEnvironment explicitly tracks locations for
these values and preserves them in the translation.
R=svenpanne@chromium.org
TEST=mjsunit/compiler/inline-arguments
Review URL: https://codereview.chromium.org/16779004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15087 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-12 14:22:49 +00:00
yangguo@chromium.org
74556569d1
Reland "Enable map dependency to in-flight compilation info."
...
BUG=248076
R=ulan@chromium.org
Review URL: https://chromiumcodereview.appspot.com/16782004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15077 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-12 09:43:22 +00:00
yangguo@chromium.org
6da97b1d4a
Revert "Enable map dependency to in-flight compilation info."
...
This includes r15032, r15030 and r15005.
R=ulan@chromium.org
BUG=248076
Review URL: https://chromiumcodereview.appspot.com/16482004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15061 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-11 11:55:56 +00:00
olivf@chromium.org
946ea53264
use compare nil ic only for non-strict equality. strict-equality only has one check and cannot deopt. should therefore not be part of the stub.
...
BUG=
R=rossberg@chromium.org
Review URL: https://codereview.chromium.org/16732002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15045 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-10 15:47:23 +00:00
olivf@chromium.org
3a26dda780
revert accidental dcommit
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15044 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-10 15:43:40 +00:00
olivf@chromium.org
73b7ab9ae6
remove equality kind from compare nil ic
...
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15042 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-10 15:30:02 +00:00
yangguo@chromium.org
1594eca8ed
Fix parallel recompilation wrt initial object/array map dependency.
...
R=ulan@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/16641002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15030 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-10 11:17:48 +00:00
yangguo@chromium.org
17cfe68015
Enable map dependency to in-flight compilation info.
...
R=ulan@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/16542003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@15005 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-07 13:27:03 +00:00
verwaest@chromium.org
8bd4199fdd
Don't force representations in the loop builder.
...
Additionally, infer None-typed CompareIDAndBranch to Smi+actual input.
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/16365004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14960 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-05 17:24:14 +00:00
mvstanton@chromium.org
56f3337ebc
Adapt hydrogen-based Array constructor to also support InternalArray and function call
...
versions.
BUG=
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/14576005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14948 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-05 10:43:18 +00:00
jkummerow@chromium.org
20cedf9a4b
Liveness analysis for environment slots in Hydrogen
...
R=titzer@chromium.org
Review URL: https://codereview.chromium.org/15533004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14938 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-04 16:41:24 +00:00
mvstanton@chromium.org
8a02fd3be3
Turn off allocation site info for crankshafted array constructor calls.
...
Once we crankshaft a method, we should turn off allocation site info for
constructed arrays. Additionally, the semantics for doing this were
awkward because the constructed array code stubs get an
AllocationSiteMode as a minor key, but it's used as a permission to
determine the final mode locally based on ElementsKind. I refactored
this to a simpler boolean for override or local control.
BUG=
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/16206007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14934 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-04 12:48:51 +00:00
mstarzinger@chromium.org
d7975dfdab
Deprecate HAllocateObject in favor of HAllocate.
...
This 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/15714005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14930 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-06-04 08:28:33 +00:00
verwaest@chromium.org
7d32e7451f
Don't explicitly pass requested representations to constants; implement ConstantS
...
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/15932011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14874 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-29 10:47:55 +00:00
hpayer@chromium.org
44fd249cd2
Refacturing BuildEmitDeepCopy.
...
BUG=
Review URL: https://codereview.chromium.org/15700007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14845 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-28 10:44:21 +00:00
rossberg@chromium.org
6fda4e4c28
Collect type feedback in separate pass and store it in AST
...
Notes:
- For now, just adds the missing type info fields to the AST nodes directly.
I'd like to factor that out more nicely in a follow-up CL.
- All type feedback now is uniformly collected through AST nodes'
RecordTypeFeedback functions. At some point, this logic should be moved
out of ast.cc.
- The typing pass currently simulates the exact same conditions under
which feedback was collected in Hydrogen before. That also should be
made more generic in the future.
- Type information itself is unchanged. Making it more regular is
yet more future work.
Some additional cleanups:
- Lifted out nested class ObjectLiteral::Property, to enable forward declaration.
- Moved around some auxiliary enums.
R=svenpanne@chromium.org
BUG=
Review URL: https://codereview.chromium.org/14990014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14825 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-27 13:59:20 +00:00
titzer@chromium.org
0a4289618d
Extract GlobalValueNumberer and helper classes from hydrogen.cc and move to hydrogen-gvn.cc.
...
BUG=
Review URL: https://codereview.chromium.org/16095004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14824 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-27 12:45:46 +00:00
verwaest@chromium.org
8fc2101ce0
Fix build
...
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/15881004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14815 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-27 08:50:52 +00:00
verwaest@chromium.org
3cb8f95c91
Tag smi-constants as smi. This also fixes code that copies holes into arrays.
...
BUG=
R=jkummerow@chromium.org
Review URL: https://chromiumcodereview.appspot.com/15861009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14814 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-27 08:43:58 +00:00
titzer@chromium.org
94b4240f5c
Introduce ObjectAccess, which is used by LoadNamedField and StoreNamedField to denote what parts of an object are referred to by a given load or store. Refactor HGraphBuilder to use ObjectAccess, which removes the need to manually set GVN flags and simplifies the code as well.
...
Review URL: https://codereview.chromium.org/14284010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14791 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-24 08:38:21 +00:00
titzer@chromium.org
68eb1e50ca
Improve dead code elimination by transitively marking live code and removing all dead code. Replace unreachable phi removal algorithm with the new dead code elimination pass, which is more thorough.
...
Review URL: https://codereview.chromium.org/14676011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14661 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-14 13:10:52 +00:00
danno@chromium.org
05e8e0e7b4
Elide hole checks on KeyedLoads of holey double arrays
...
Improves NavierStokes by about 5%
R=ulan@chromium.org
Review URL: https://codereview.chromium.org/15014020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14630 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-13 07:35:26 +00:00
ulan@chromium.org
9e620bb689
Revert r14610 because of test-262 failures.
...
R=mstarzinger@chromium.org
Review URL: https://chromiumcodereview.appspot.com/14838012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14622 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-10 13:21:24 +00:00
ulan@chromium.org
36910718fe
Verify that no-side-effects scope does not add unsafe phis and does not change push-pop balance of the environment.
...
R=danno@chromium.org
BUG=v8:2671
Review URL: https://chromiumcodereview.appspot.com/14696015
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14610 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-10 09:26:53 +00:00
mvstanton@chromium.org
d7b013de57
Becuase of cross-context calls, hydrogen-based Array constructor needs to ensure
...
the array constructor pointer passed in matches that of the current context.
BUG=
R=verwaest@chromium.org
Review URL: https://codereview.chromium.org/14846017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14581 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-07 21:01:53 +00:00
verwaest@chromium.org
46d39cabd6
Fix polymorphic to monomorphic load to take representation into account.
...
Review URL: https://chromiumcodereview.appspot.com/14966005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14565 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-07 10:32:23 +00:00
titzer@chromium.org
dbcd0e925a
Remove HLoadElements instruction and replace with use of more general HLoadNamedField. This removes the need for both the hydrogen and lithium instructions and allows both kinds of loads to be GVN'd.
...
Review URL: https://codereview.chromium.org/14556020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14542 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-05-03 12:21:16 +00:00
mvstanton@chromium.org
e751ad06d9
Constructed arrays can be created with Hydrogen code stubs. The feature is still off by default (--optimize-constructed-arrays).
...
BUG=
Review URL: https://codereview.chromium.org/12385014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14441 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-25 16:00:32 +00:00
danno@chromium.org
f8ddf3a262
Add monomorphic CompareNilICs and Crankshaft support
...
R=mvstanton@chromium.org
Review URL: https://codereview.chromium.org/14367018
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14407 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-24 11:32:17 +00:00
mstarzinger@chromium.org
6f595c231a
Replace CheckBuilder with IfBuilder everywhere.
...
This deprecates and removes the CheckBuilder which is less powerful
than the generic IfBuilder which can deopt as well by now.
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/14075013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14372 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-22 11:15:43 +00:00
mstarzinger@chromium.org
e288a65ec1
Switch elements access to use IfBuilder instead of CheckBuilder.
...
R=danno@chromium.org
Review URL: https://codereview.chromium.org/14365014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14360 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-19 16:21:09 +00:00
danno@chromium.org
0c5c6c50bb
Remove unused member variables in IfBuilder
...
R=jkummerow@chromium.org
Review URL: https://codereview.chromium.org/14328042
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14351 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-19 13:20:45 +00:00
danno@chromium.org
fded35e019
Fix bugs in IfBuilder and improve functionality
...
R=mstarzinger@chromium.org
Review URL: https://codereview.chromium.org/14344004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14327 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-18 10:51:24 +00:00
titzer@chromium.org
705735ce79
Remove previous_ast_id and related code in hydrogen.
...
BUG=
Review URL: https://codereview.chromium.org/14178011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14308 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-17 14:11:39 +00:00
svenpanne@chromium.org
0d8b7f7608
Improve handling of unary plus.
...
Simple strategy: Transform unary plus into multiplication by one directly in the
parser and remove it from the Hydrogen graph later. This gives correct type
feedback without any special stub for it.
BUG=v8:2527
Review URL: https://codereview.chromium.org/13902013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14306 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-17 12:47:15 +00:00
yangguo@chromium.org
e1742a6716
Remove relocation lock.
...
Freeze HValue hash codes that are based on object addresses.
R=svenpanne@chromium.org
BUG=
Review URL: https://chromiumcodereview.appspot.com/14040006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14273 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-16 11:00:02 +00:00
hpayer@chromium.org
e7a5e69688
Remove unnecessary BailoutIds.
...
BUG=
Review URL: https://codereview.chromium.org/14222007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14246 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-12 09:36:56 +00:00
hpayer@chromium.org
66f5c75dab
Separate calculation of double element and object element sizes in IsFastLiteral.
...
BUG=
Review URL: https://codereview.chromium.org/13985005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14241 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-12 08:42:17 +00:00
hpayer@chromium.org
5fd24b0afa
Added non observable side effects scope and removed unnecessary calls to AddSimulate.
...
BUG=
Review URL: https://codereview.chromium.org/14174002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14232 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-11 13:07:37 +00:00
hpayer@chromium.org
2db9e62fc8
Build fast literals in hydrogen.
...
BUG=
Review URL: https://codereview.chromium.org/12880017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14211 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-10 13:52:08 +00:00
hpayer@chromium.org
ff85f50e84
Refactoring BuildAllocateElements.
...
BUG=
Review URL: https://codereview.chromium.org/13693004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14147 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-05 08:35:40 +00:00
mstarzinger@chromium.org
af25102f41
Compile FastCloneShallowArrayStub using Crankshaft.
...
R=danno@chromium.org
Review URL: https://codereview.chromium.org/12521011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14143 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-04 17:55:43 +00:00
dslomov@chromium.org
a172a5e839
Remove (H|L)JSArrayLength instructions
...
BUG=
Review URL: https://codereview.chromium.org/12491023
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14127 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-04-03 16:25:24 +00:00
dslomov@chromium.org
e357ddc249
Replace ICStub for array.length with hydrogen stub
...
BUG=
Review URL: https://codereview.chromium.org/12700006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14090 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-28 12:43:19 +00:00
danno@chromium.org
b8fd25277a
Fix bugs in previous_ast_id tracking
...
R=hpayer@chromium.org
Review URL: https://codereview.chromium.org/12957005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14045 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-22 12:34:38 +00:00
danno@chromium.org
ffd0c712e8
Implement many KeyedStoreStubs using Crankshaft
...
- Addition of a compiled hydrogen stub for KeyedStores.
- Inlining of "grow" stubs into OPTIMIZED_FUNCTIONs
- Addition of new "ignore OOB" ic stub that silently swallows out-of-bounds stores to external typed arrays.
- Addition of new "copy-on-write" ic stub that inlines allocation and copying operations for cow array
- New stub are generated with Crankshaft, so they are automatically inlined into OPTIMIZED_FUNCTIONs
Review URL: https://codereview.chromium.org/12221064
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@14001 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-20 10:37:13 +00:00
mmassi@chromium.org
73e83b0b0f
Handling expression decomposition and array bounds check hoisting: working code with lots of debugging PrintFs, postdominance check still missing.
...
Review URL: https://codereview.chromium.org/12377072
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13961 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-18 08:06:00 +00:00
yangguo@chromium.org
a722726dc4
Parallel recompilation: fewer handle dereferences and tighter checks.
...
BUG=
Review URL: https://chromiumcodereview.appspot.com/12832002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@13935 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2013-03-13 16:13:05 +00:00