sgjesse@chromium.org
a453a3ce65
ARM: Add multiplication and modulus to the type recording binary operation stub.
...
For now the smi part only handles power of two right hand side operands.
Fixed a bug when loading floating point value into core registers with VFP supported.
Review URL: http://codereview.chromium.org/6312059
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6560 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-02-01 16:38:25 +00:00
ager@chromium.org
8198db7934
ARM: Add support for DoMathAbs with double inputs.
...
Adds vabs instruction to simulator, assembler, disassembler and tests.
BUG=none
TEST=Added to cctest.
Review URL: http://codereview.chromium.org/6366016
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6531 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-31 10:16:28 +00:00
ager@chromium.org
dc61921bbf
Fix reintroduction of global variables that have been deleted.
...
Deletion of global properties puts 'the hole' in the global property
cell and updates the property details in the property dictionary with
the information that the property has been deleted. When setting
global properties that have been deleted in generated code we just
store the new value in the global property cell. This does not update
the property details in the property dictionary. Therefore, it looks
like the property is not there eventhough it was just reintroduced.
Perform 'the hole' checks in generated code for global property stores
and bail out of ICs and optimized code if storing to a property cell
that contains 'the hole'.
Review URL: http://codereview.chromium.org/6306014
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6508 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-27 08:35:39 +00:00
karlklose@chromium.org
592089419d
ARM: Implement DoInstanceOfAndBranch in the lithium code generator.
...
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6364007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6507 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-27 03:22:08 +00:00
karlklose@chromium.org
3141494c3e
Refactor recording of safepoints.
...
Refactor SafepointTableBuilder::DefineSafepoint and ARM LCodeGen::RecordSafepoint to use an enum for different kinds of safepoints. This change removes a lot of duplicated code and makes it easier to include new kinds of safepoints in the future. The remaining variants of LCodeGen::RecordSafepoint remain as a convinient way to record common safepoint kinds.
BUG=http://code.google.com/p/v8/issues/detail?id=1043
TEST=none
Review URL: http://codereview.chromium.org/6341008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6505 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-26 20:48:48 +00:00
ager@chromium.org
0e183035a2
ARM: Merging constants in simulator and assembler header files and other cleanup.
...
First stab at a general ARM cleanup patch. It merges ARM constants so that they can be used across simulator, assembler and disassembler, and tidies up some syntax and ambiguities.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6274009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6483 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-26 08:32:54 +00:00
fschneider@chromium.org
1c4dfa30fa
Revert r6543 and r6441.
...
This fixes a crash in the code generator.
BUG=1074
Review URL: http://codereview.chromium.org/6258020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6479 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-26 08:03:48 +00:00
sgjesse@chromium.org
06515b6f1b
ARM: Change BranchOnSmi/BranchOnNotSmi to JumpIfSmi/JumpIfNotSmi
...
Review URL: http://codereview.chromium.org/6272019
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6477 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-26 07:44:45 +00:00
fschneider@chromium.org
2444e3f247
Port to ARM and x64: Record the lazy deoptimization environmnent only at LLazyBailout-instructions.
...
This is a port of the change http://codereview.chromium.org/6348016/
to ARM and x64 platform.
Review URL: http://codereview.chromium.org/6350011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6453 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-25 10:35:57 +00:00
ager@chromium.org
883a56717d
ARM: Implement DoIsObject and DoIsObjectAndBranch in the lithium code generator.
...
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6308012
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6438 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-24 12:28:38 +00:00
fschneider@chromium.org
672f5ffab6
Port lithium template classes to ARM.
...
This is a port of the IA32 version and is needed to allow
changing the register allocator interface in a later change.
Review URL: http://codereview.chromium.org/6250027
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6436 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-24 09:43:14 +00:00
ricow@chromium.org
8a1416c78d
Fix double allocation of register on arm in DoDeferredMathAbsTaggedHeapNumber.
...
This should fix the sputnik issue on the arm simulator.
Priorly tmp2 and tmp3 could potentially be the same register as input.
Review URL: http://codereview.chromium.org/6293017
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6434 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-24 07:56:57 +00:00
vitalyr@chromium.org
7d96f2d40f
Fix Smi::IsValid assert in StringCharCodeAt deferred code.
...
Review URL: http://codereview.chromium.org/6303013
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6424 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-21 08:30:13 +00:00
karlklose@chromium.org
f914324293
Implement fast code for the common cases of left hand sides that are less than three times larger as the right hand side and and right hand sides that are powers of two up and including 32.
...
In the covered special cases the result is computed directly, else the generic stub is called. The implementation deoptimizes only for mod 0 and if the result may be a negative zero.
BUG=none
TEST=none
Review URL: http://codereview.chromium.org/6331005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6421 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-20 17:42:29 +00:00
ager@chromium.org
49d646b14c
ARM: Implement StringLength and StringCharCodeAt in the lithium-arm
...
backend.
Review URL: http://codereview.chromium.org/6368009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6419 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-20 14:20:54 +00:00
ager@chromium.org
1c2fddb4c8
ARM: Implement Math.abs in lithium code generator for the integer and
...
tagged case. I couldn't find a way to test the double case yet so I'm
leaving that unimplemented for now.
Review URL: http://codereview.chromium.org/6347007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6411 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-20 08:08:36 +00:00
sgjesse@chromium.org
3ff8e4d3fa
ARM: Implement DoInstanceOfKnownGlobal stub
...
BUG=none
TEST=none
Patch by Martyn Capewell from ARM Ltd.
Review URL: http://codereview.chromium.org/6248004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6403 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-19 14:53:38 +00:00
ager@chromium.org
56073b733f
ARM: Implement HasInstanceType in lithium backend.
...
Review URL: http://codereview.chromium.org/6283006
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6398 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-19 13:04:21 +00:00
ager@chromium.org
fb43b16e2b
ARM: Implement DoCmpJSObjectEqAndBranch.
...
Review URL: http://codereview.chromium.org/6381001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6396 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-19 11:56:32 +00:00
ager@chromium.org
e65647eafc
ARM: Implement StringCharAtStub.
...
Review URL: http://codereview.chromium.org/6334007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6390 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-19 11:35:41 +00:00
ager@chromium.org
2729e09caf
ARM: Implement double constants in the lithium ARM backend and fix
...
missing minus zero check in MathFloor implementation.
Review URL: http://codereview.chromium.org/6303009
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6362 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-18 11:31:17 +00:00
ager@chromium.org
7095d1ec26
ARM: Reenable Div and Mod in the ARM lithium codegenerator. The
...
crashes uncovered by this were caused by constant pool in safe-point
tables. This should be safe to enable now.
Review URL: http://codereview.chromium.org/6243005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6348 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-17 12:52:06 +00:00
ager@chromium.org
ac320205b9
ARM: Fix ARM safepoint tables by ensuring that constant pools are not
...
emitted as part of the safepoint tables.
Always emit the constant pool as part of generating deferred code
(whether or not there actually is any deferred code) and ASSERT that
there is no pending relocation info while using db and dd to write
tables.
Review URL: http://codereview.chromium.org/6360003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6347 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-17 12:45:39 +00:00
kmillikin@chromium.org
437914da90
Change the algorithm and generated code for parallel moves on IA32.
...
Instead of spilling and then immediately restoring eax to resolve
memory to memory moves, the gap move resolver now tracks registers
that are known to be free and uses one if available. If not it spills
but restores lazily when the spilled value is needed or at the end of
the algorithm.
Instead of using esi for resolving cycles and assuming it is free to
overwrite because it can be rematerialized, the gap move resolver now
resolves cycles using swaps, possibly using a free register as above.
The algorithm is also changed to be simpler: a recursive depth-first
traversal of the move dependence graph. It uses a list of moves to be
performed (because it mutates the moves themselves), but does not use
any auxiliary structure other than the control stack. It does not
build up a separate list of scheduled moves to be interpreted by the
code generate, but emits code on the fly.
Review URL: http://codereview.chromium.org/6263005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6344 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-17 11:25:36 +00:00
antonm@chromium.org
fae90d4f32
Make closures optimizable by Crankshaft compiler.
...
Currently only closures which only read from the context are supported.
Review URL: http://codereview.chromium.org/5753005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6340 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-17 08:11:03 +00:00
ager@chromium.org
0819ac76f6
Landing for Martyn Capewell.
...
ARM: Implement DoInteger32ToDouble in lithium codegen. Clean up
temporary register use.
Code review URL: http://codereview.chromium.org/6257003/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6339 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-17 07:26:36 +00:00
karlklose@chromium.org
d2d81743c9
Disable DivI and ModI again until the bug with SafepointWithRegistersAndDoubles is solved.
...
BUG=
TEST=
Review URL: http://codereview.chromium.org/6295004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6330 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 15:08:44 +00:00
kmillikin@chromium.org
199846b786
Move class LGapResolver to the platform specific backend implementation files.
...
This change is in preparation for introducing platform-specific strategies
for resolving parallel moves.
Review URL: http://codereview.chromium.org/6324003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6321 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 12:50:03 +00:00
karlklose@chromium.org
0e26f42bc1
ARM: Implement DoModI stub in the lithium code generator.
...
BUG=
TEST=
Review URL: http://codereview.chromium.org/6314003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6312 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 11:48:43 +00:00
karlklose@chromium.org
da03f275d2
ARM: Implement DoDivI in the lithium code generator.
...
This change provides fast code for a few special cases and calls the GenericBinaryOpStub for the rest.
It also changes the register allocation in the generation of lithium instructions to use fixed registers that are compatible with the generic stub. This allocation can be change once we use a more flexible implementation.
Finally, this change provides infrastructure to save double registers at safepoints, which is need to call the stub in deferred code.
BUG=
TEST=
Review URL: http://codereview.chromium.org/6164005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6304 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-14 08:49:52 +00:00
ager@chromium.org
0ec74d5829
Landing for Rodolph Perfetta.
...
Implementing Math.floor and Math.sqrt for crankshaft.
BUG=none
TEST=none
Code review URL: http://codereview.chromium.org/6250002/
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6298 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-13 12:21:47 +00:00
vitalyr@chromium.org
9e204dd5df
Simplify CheckPrototypeMaps.
...
This instruction only depends on the prototype and the holder and can
completely ignore the receiver and its map.
This change also fixes a small bug on arm where a cell was loaded
instead of the prototype from new space.
Review URL: http://codereview.chromium.org/6094020
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6290 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-13 00:34:08 +00:00
sgjesse@chromium.org
8f54606109
ARM: Always use the overflow flag to check for NaNs participating in a floating point compare.
...
Looks as if we don't need to use the vcmpe instruction instead of the vcmp, as the overflow FPSCR bit suits our purpose. If we at some point need vcmpe lte's implement it as a separate instruction.
Review URL: http://codereview.chromium.org/6197003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6277 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-12 07:47:13 +00:00
whesse@chromium.org
b6ebcd58c6
Crankshaft: Move LEnvironment and LPointerMap classes to platform-independent lithium.h. Move WriteTranslation method from LEnvironment class to LCodeGen class.
...
Review URL: http://codereview.chromium.org/6142011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6276 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 15:51:08 +00:00
karlklose@chromium.org
43b0399505
Implement DoApplyArguments.
...
ARM: Implement DoApplyArguments in the lithium code generator.
This patch also introduces an optional SafepointGenerator argument to InvokeFunction, InvokeCode and InvokeProloque.
BUG=
TEST=
Review URL: http://codereview.chromium.org/6164003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6272 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 14:11:03 +00:00
ager@chromium.org
59c158e43f
ARM: Implement ClassOf in the lithium arm backend.
...
Review URL: http://codereview.chromium.org/6201004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6271 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 14:01:53 +00:00
kmillikin@chromium.org
a7c743d3ac
Reuse the gap move resolver.
...
Rather than allocating a fresh gap move resolver for every parallel
move, use a single one per Lithium code generator. This avoids always
reallocating the temporary zone-allocated lists used by the gap move
resolver.
Review URL: http://codereview.chromium.org/6128007
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6270 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 13:50:12 +00:00
sgjesse@chromium.org
c4550bc6d5
ARM: Add instructions VFPCompareAndSetFlags and VFPCompareAndLoadFlags to macro assembler
...
Also removed the SBit from the vcmp instruction as it is not part of the instruction.
Review URL: http://codereview.chromium.org/6117003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6268 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 12:45:25 +00:00
ager@chromium.org
a314fa4581
ARM: Add deferred stack overflow checks to goto code generation in ARM
...
lithium when needed.
Review URL: http://codereview.chromium.org/6192005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6265 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 12:32:00 +00:00
fschneider@chromium.org
6b00bdf2f2
Fix ARM debug build by moving an assert.
...
Review URL: http://codereview.chromium.org/6127005
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6263 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 12:20:22 +00:00
ager@chromium.org
b3d4ea357c
ARM: use existing transcendental cache stub for tagged inputs.
...
Review URL: http://codereview.chromium.org/6167004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6261 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 11:54:37 +00:00
fschneider@chromium.org
b9f5ab9ef1
Remove duplicate members from some LIR instruction by using the HIR accessors.
...
Remove unused LOperands from keyed-loads. We do not have multiple representations
for load instructions anymore.
Correct number of output operands as for a couple of instructions form 1 to 0
because they do not produce a result (e.g. PushArgument)
Review URL: http://codereview.chromium.org/6158004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6258 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-11 11:41:01 +00:00
ager@chromium.org
cd4ae721e2
ARM: Implement delete operation in lithium codegen.
...
I'm using the post call generator for the macro assembler
InvokeBuiltin call to be consistent with the ia32 version. It only
generates one call, but using the post call generator it should be
easier to catch if we change that at some point.
Review URL: http://codereview.chromium.org/6119004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6247 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 12:24:19 +00:00
ager@chromium.org
5e3381c9c7
Landing for Martyn Capewell.
...
ARM: Fix comparison of NaN values.
Enables the cumulative exception flag when comparing values, and uses it to
detect NaN results.
BUG=1023
TEST=none
Code review URL: http://codereview.chromium.org/6142004
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6236 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 08:04:30 +00:00
ager@chromium.org
d9e5078bbc
Landing for Martin Maly.
...
Implement DoCallKeyed for arm lithium compiler.
Code review URL: http://codereview.chromium.org/6139002
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6234 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-10 07:59:13 +00:00
sgjesse@chromium.org
dae44fd3ee
ARM: Fix lithium codegeneration of TypeofIs
...
The previous implementation was incomplete and wrong.
TBR=karlklose@chromium.org
Review URL: http://codereview.chromium.org/6113003
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6231 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 14:27:32 +00:00
sgjesse@chromium.org
97621e7e32
ARM: Implement lithium codegen for DoTypeof, DoTypeofIs and DoSmiUntag
...
Review URL: http://codereview.chromium.org/6174001
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6227 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 13:44:05 +00:00
karlklose@chromium.org
e74b0ae7db
ARM: Support DoCallGlobal in lithium code generator.
...
BUG=
TEST=
Review URL: http://codereview.chromium.org/6094011
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6224 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 12:34:39 +00:00
sgjesse@chromium.org
a6c5fa6993
ARM implementations of LoadElements, LoadKeyedFastElement, StoreNamedField, StoreKeyedFastElement.
...
BUG=none
TEST=none
Patch by Martyn Capewell from ARM Ltd.
Review URL: http://codereview.chromium.org/5967008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6214 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-07 07:33:46 +00:00
karlklose@chromium.org
d4bbad8e4e
ARM: Support DoCheckInstanceType in lithium codegenerator.
...
BUG=
TEST=
Review URL: http://codereview.chromium.org/6040008
git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@6209 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
2011-01-06 15:25:03 +00:00