kmillikin@chromium.org
c3172a6b7e
Refactor polymorphic load and inline function graph construction.
...
Change the way we construct the graph for polymorphic loads to match that of
polymorphic stores.
Introduce a stack-allocated helper for saving and restoring all the
function-specific graph builder state that needs to change when we begin
translating an inlined function. Make this class authoritative by moving
redundant state out of the builder and deferring to the current function's
state.
Ensure that we always print a tracing message when abandoning an inlining
attempt.
Review URL: http://codereview.chromium.org/6628012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7074 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-07 11:52:36 +00:00
whesse@chromium.org
632e79bfe7
X64 Crankshaft: Revert r7071 and fix DoStoreContextSlot in a different way.
...
Review URL: http://codereview.chromium.org/6627048
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7073 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-07 11:26:43 +00:00
whesse@chromium.org
3ea38d412b
X64 Crankshaft: Fix bug in DoStoreContextSlot, and enable it.
...
Review URL: http://codereview.chromium.org/6627046
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7071 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-07 10:28:37 +00:00
whesse@chromium.org
9cc9ecbfe9
Revert change 7048
...
Review URL: http://codereview.chromium.org/6613019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7049 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 16:09:52 +00:00
whesse@chromium.org
721d8d5b57
X64 Crankshaft: Fix and enable StoreContextSlot in lithium codegen on x64.
...
Review URL: http://codereview.chromium.org/6614017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7048 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 15:36:13 +00:00
sgjesse@chromium.org
98d82ea9de
Add lithium support for %_GetCachedArrayIndex for IA32 and X64
...
BUG=v8:1093
Review URL: http://codereview.chromium.org/6611014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7037 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-03 09:33:08 +00:00
whesse@chromium.org
9d89ec5c00
Add ArithmeticD(MOD) to x64 optimizing code generator. Minor changes to ArithmeticD on other platforms.
...
Review URL: http://codereview.chromium.org/6594118
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7029 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-02 15:04:20 +00:00
ricow@chromium.org
3b5256b352
X64: implement DoHasCachedArrayIndex in lithium compiler.
...
Review URL: http://codereview.chromium.org/6596104
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7015 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-02 10:12:33 +00:00
ricow@chromium.org
33bc7f974f
X64: Always use rax as left register from DoInstanceOfKnownGlobal.
...
On IA32 we use InstanceofStub::left(), but on x64 we have just used rax and rdx directly. This fixes the assertion crashes on x64 crankshaft.
Review URL: http://codereview.chromium.org/6596101
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7010 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-02 07:52:14 +00:00
ricow@chromium.org
63beeed358
Revert 6996, causes Mozilla debug failures on x64 with crankshaft.
...
Review URL: http://codereview.chromium.org/6594076
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@7003 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-01 16:32:30 +00:00
fschneider@chromium.org
8a72161585
Add lazy deoptimization environment to instanceof by marking it as a call.
...
This fixes an assert when an exception is thrown inside instanceof.
BUG=v8:1207
TEST=mjsunit/regress/regress-1207.js
Review URL: http://codereview.chromium.org/6588083
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6999 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-01 15:37:24 +00:00
ricow@chromium.org
4cac2c91b7
Reenable DoStoreContextSlot, I can't reproduce any local bugs on this.
...
Review URL: http://codereview.chromium.org/6588082
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6996 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-01 14:33:33 +00:00
whesse@chromium.org
83248ea0fd
X64 Crankshaft: Add DoPower to lithium compiler on x64 platform.
...
Review URL: http://codereview.chromium.org/6592038
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6980 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-03-01 09:30:56 +00:00
ricow@chromium.org
c416ddf166
X64: Implement DoHasInstanceType
...
Review URL: http://codereview.chromium.org/6581036
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6940 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-24 19:25:22 +00:00
whesse@chromium.org
0d067b56c7
Temporarily disable DoStoreContextSlot in x64 lithium codegen to diagnose non-reproducible buildbot error. Fix presubmit error.
...
Review URL: http://codereview.chromium.org/6572002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6915 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 13:52:11 +00:00
whesse@chromium.org
c61ac2cd84
X64 Crankshaft: Add DoOuterContext to x64 lithium.
...
Review URL: http://codereview.chromium.org/6570008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6914 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 13:26:28 +00:00
whesse@chromium.org
65443b3879
X64 Crankshaft: Add Typeof and TypeofIs to x64 lithium. Fix presubmit.
...
Review URL: http://codereview.chromium.org/6568004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6912 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 11:29:11 +00:00
fschneider@chromium.org
288b4fb8f4
HIR refactoring.
...
Review URL: http://codereview.chromium.org/6538080
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6910 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 11:19:50 +00:00
ager@chromium.org
a4ffbdc61b
x64: Implement delete property in lithium backend.
...
Review URL: http://codereview.chromium.org/6570005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6907 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 10:10:47 +00:00
ager@chromium.org
bfb1cb4288
x64: Implement context stores and loads, unknown osr value, and osr
...
entry in lithium backend.
Review URL: http://codereview.chromium.org/6566002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6906 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-23 09:51:53 +00:00
whesse@chromium.org
08377c8449
X64 Crankshaft: Implement CallKeyed in optimizing compiler.
...
Review URL: http://codereview.chromium.org/6541069
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6897 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 14:40:13 +00:00
whesse@chromium.org
b5c3b18f29
X64 Crankshaft: Implement DoubleToI in optimizing compiler.
...
Review URL: http://codereview.chromium.org/6551009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6889 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-22 12:02:47 +00:00
whesse@chromium.org
e1448ebd34
X64 Crankshaft: Add ModI and ModT to x64 optimizing compiler.
...
Review URL: http://codereview.chromium.org/6548005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6863 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-21 11:32:28 +00:00
ager@chromium.org
1e89c4aa67
x64: implement apply with arguments in lithium backend.
...
Includes the plumbing to make sure that all calls generated by the macroassembler for lithium will generate record a safepoint.
Review URL: http://codereview.chromium.org/6469053
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6859 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-21 07:54:55 +00:00
whesse@chromium.org
4ac9f20601
X64 Crankshaft: Implement MathRound, MathFloor, MathSqrt, and MathPowHalf UnaryMathOperations in optimizing code generator. Remove unneeded bailout on Math.pow(-0, 0.5) from ia32 and x64 platforms - we produce the correct value without bailing out.
...
Review URL: http://codereview.chromium.org/6532054
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6856 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-18 14:34:17 +00:00
ager@chromium.org
b8f0b88b54
x64: Implement regexp literals and string CharCodeAt in lithium backend.
...
Review URL: http://codereview.chromium.org/6469052
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6853 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-18 14:00:46 +00:00
ager@chromium.org
fc7e79a838
x64: Implement the missing generic load and store operations.
...
Review URL: http://codereview.chromium.org/6541019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6852 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-18 12:54:43 +00:00
whesse@chromium.org
4752373976
X64 Crankshaft: Implement LValueOf and (dummy) LArgumentsObject.
...
Review URL: http://codereview.chromium.org/6542011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6850 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-18 12:06:52 +00:00
whesse@chromium.org
7e38b1bb01
X64 Crankshaft: Start using LCallFunction, remove errors in it.
...
Review URL: http://codereview.chromium.org/6529053
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6826 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-16 15:45:45 +00:00
whesse@chromium.org
8986022133
X64 Crankshaft: Implement InstanceOf and InstanceOfKnownGlobal
...
Review URL: http://codereview.chromium.org/6529024
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6824 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-16 15:15:20 +00:00
danno@chromium.org
12b4e0efe7
Implement crankshaft support for pixel array stores.
...
Review URL: http://codereview.chromium.org/6528013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6817 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-16 13:31:12 +00:00
karlklose@chromium.org
7de60ef84d
ARM: Implement GetCachedArrayIndex in the lithium code generator.
...
Add GetCachedArrayIndex to the Hydrogen instruction set and implement GetCachedArrayIndex in the lithium code generator. The x64 and ia32 code generators implementations abort in the chunk builder.
Review URL: http://codereview.chromium.org/6499014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6803 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-16 08:21:45 +00:00
ager@chromium.org
7dd0cc2db6
More x64 work.
...
x64: Implement DoArgumentsElements, DoNumberUntagD, DoArgumentsLength,
DoAccessArgumentsAt, DoStringLength in lithium x64 backend.
Fix a bug in DoConstantD where only 32-bits of a double was loaded to
an xmm register.
Review URL: http://codereview.chromium.org/6474039
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6771 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-14 12:34:11 +00:00
whesse@chromium.org
ba97312891
Add ArithmeticD instruction to x64 Crankshaft.
...
Review URL: http://codereview.chromium.org/6515010
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6767 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-14 11:42:06 +00:00
fschneider@chromium.org
56f6cbbeae
Revert r6748.
...
I'm seeing some crashes after this change which I need to investigate.
Review URL: http://codereview.chromium.org/6486033
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6755 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-11 14:34:02 +00:00
fschneider@chromium.org
bbba0dbd61
Add a genuine unary minus instruction to Crankshaft.
...
This change introduces an instruction for negation instead
of generating a multiplication with -1.
The code for x64 and ARM is not included in this change.
Review URL: http://codereview.chromium.org/6461021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6748 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-11 12:56:30 +00:00
ricow@chromium.org
512a02764f
X64: Add DoCallNamed, DoContext, DoCallGlobal, and DoLoadFunctionPrototype lithium instructions.
...
Review URL: http://codereview.chromium.org/6471025
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6734 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-10 16:33:01 +00:00
danno@chromium.org
1bd9f602be
Implement crankshaft support for pixel array loads.
...
Review URL: http://codereview.chromium.org/6410112
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6725 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-10 12:02:36 +00:00
fschneider@chromium.org
73fe82426f
Strengthen requirements for fixed registers at calls.
...
Already done on ia-32. This change is for x64 and ARM.
We now always require fixed input registers at calls to
avoid overlap with temp registers.
This fixes the affected instructions on ARM.
Review URL: http://codereview.chromium.org/6471021
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6722 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-10 10:31:55 +00:00
ricow@chromium.org
f64966085e
x64: Add MulI and DivI to lithium instructions.
...
Review URL: http://codereview.chromium.org/6448001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6681 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 14:37:50 +00:00
whesse@chromium.org
46e82e2f7e
X64 Crankshaft: Implement DoCodeStub on X64 platform.
...
Review URL: http://codereview.chromium.org/6451001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6673 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 11:26:42 +00:00
fschneider@chromium.org
f740d1adbe
Refactor lithium instructions for constants.
...
1. Remove unnecessary superlcass LConstant.
2. Use hydrogen accessor instead of duplicating the value.
Review URL: http://codereview.chromium.org/6410120
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6672 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 10:45:21 +00:00
vegorov@chromium.org
76cf30d9c8
Support %_IsConstructCall in the Crankshaft pipeline.
...
Provide special case for f.bind(obj).
Review URL: http://codereview.chromium.org/6368138
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6671 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 10:08:47 +00:00
ager@chromium.org
52cfd6ab16
Fixed a number of issues on x64 crankshaft port:
...
- Don't use SmiSub when overflow can occur. It asserts that overflow
does not happen.
- Actually use CompareICs and signal to crankshaft whether or not smi
code was inlined.
- Fix bug in CmpI where 64 bits were compared instead of 32 bits.
- Implement Throw, DeferredStackCheck, StoreKeyedFastElement in
lithium backend.
BUG=
TEST=
Review URL: http://codereview.chromium.org/6312193
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6669 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-08 07:49:59 +00:00
ager@chromium.org
596b25511d
x64: Implement SmiUntag, SmiTag, LoadHeapObject and LoadNamedGeneric
...
in the lithium backend.
Review URL: http://codereview.chromium.org/6312185
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6666 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-07 14:11:53 +00:00
lrn@chromium.org
19b734fd82
Fix potential overwriting of debug jumps of following code.
...
Add JSArrayLength, CallKnownFunction, and InstanceType operations.
Remove LadGlobal and StoreGlobal again (they fail).
Review URL: http://codereview.chromium.org/6347067
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6645 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-04 14:09:03 +00:00
fschneider@chromium.org
17da434b29
Remove instruction summaries.
...
Instead of constructing a temporary container for all LOperands of each
instruction, the register works directly on the LIR instructions that
provide an abstract interface for input/output/temp operands.
This saves allocation of zone memory and speeds up LIR construction,
but makes iterating over all uses in the register allocator slightly
more expensive because environment uses are stored in a linked list of
environments. We can fix this by using a flat representation of LOperands.
Review URL: http://codereview.chromium.org/6352006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6638 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-04 13:28:23 +00:00
whesse@chromium.org
c5de2c95fa
X64 Crankshaft: Add bit operations and shifts to x64 crankshaft.
...
Review URL: http://codereview.chromium.org/6246099
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6632 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-04 11:10:39 +00:00
ager@chromium.org
3a214b8f50
x64: Implemented object, array and function literals in lithium codegen.
...
Review URL: http://codereview.chromium.org/6371019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6628 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-04 06:54:45 +00:00
ager@chromium.org
c554faa74d
X64: Implement FixedArrayLength, BoundsCheck, LoadElements,
...
LoadKeyedFastElement in lithium codegen.
Tested locally by hardcoding DoTaggedToI to convert smis to untagged.
Review URL: http://codereview.chromium.org/6312124
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6625 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-03 17:01:10 +00:00