asiva@google.com
f1fb425901
Fix build break.
...
Review URL: https://codereview.chromium.org//63753003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30098 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-08 04:23:08 +00:00
asiva@google.com
46d4709b79
Fix build break on the bots.
...
Review URL: https://codereview.chromium.org//63993003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30097 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-08 02:41:03 +00:00
asiva@google.com
eaebf15f43
Fix for issue 14790 - Crash when using dartium devtools
...
The stack frame iteration during GC was missing one slot in stub frames that
did not save the pool pointer.
- This change makes all stub frames uniform, i.e they always save/restore the pool pointer. This ensures that we will traverse all slots on the stack.
- A new constant called kFirstObjectSlotFromFp has been added which is used as the slot to start stack traversal.
(The ARM and MIPs changes will be in a different CL)
R=iposva@google.com , regis@google.com , zra@google.com
Review URL: https://codereview.chromium.org//63093003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30088 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-08 00:25:40 +00:00
zra@google.com
7a41b5a83f
Fixed x64 assembler tests that load large immediates.
...
R=asiva@google.com
Review URL: https://codereview.chromium.org//25354002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28069 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-30 22:11:24 +00:00
zra@google.com
e75bbe26a1
Eliminates more large immediates from x64 code.
...
R=fschneider@google.com
Review URL: https://codereview.chromium.org//25118002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28067 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-30 20:19:23 +00:00
zra@google.com
df2054dae7
Sets a register aside on x64 for use as a pool-pointer. It is loaded and restored from the code object on Frame entry and exit. All LoadObject calls that can, and many calls and jumps through ExternalLabels now use the pool-pointer. The --compiler-stats flag when running dart2js indicates that code size is reduced ~13%, and more is probably possible.
...
R=fschneider@google.com , srdjan@google.com
Review URL: https://codereview.chromium.org//22825023
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27295 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-09 15:39:26 +00:00
fschneider@google.com
9d8049dd4d
Small code cleanup in the assembler/simulator.
...
Review URL: https://codereview.chromium.org//23578013
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27189 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-05 11:07:09 +00:00
fschneider@google.com
cfab482b84
Follow-up fix to my change to IsPowerOfTwo: Alignment of one means no alignment, not zero.
...
We assert that the alignment is a power of two. Therefore, platforms that do not need
alignment should return alignment of one instead of zero.
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//23745008
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27037 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-03 10:56:43 +00:00
johnmccutchan@google.com
4ba3c7b2c9
Add packed add and subtract to IA32 and X64 assemblers
...
R=srdjan@google.com
Review URL: https://codereview.chromium.org//23129014
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26325 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-19 19:57:22 +00:00
srdjan@google.com
3f8487cf19
Fix build failures on buidl bot (compiles fine on my Mac Pro).
...
Review URL: https://codereview.chromium.org//21417003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25686 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-31 23:13:01 +00:00
srdjan@google.com
66fb716dce
Implement some conditional moves instructions for ia32/x64. Use them in MinMax instruction implementation.
...
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//21307004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25685 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-31 22:57:33 +00:00
johnmccutchan@google.com
1b09112ce0
Add two argument SSE shuffle instructions
...
R=srdjan@google.com
Review URL: https://codereview.chromium.org//19940005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25301 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-22 20:20:50 +00:00
srdjan@google.com
1ccf49ce9f
Use rep_movsb for copying one-byte strings in substring intrinsic.
...
Review URL: https://codereview.chromium.org//14122002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21293 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-11 16:39:34 +00:00
vegorov@google.com
11edd87390
Convert diamond shaped control flow into a single conditional instruction.
...
Adds a IfConverter pass that right now recognizes two simple patterns cond ? 0 : 2^n and cond ? x : x+-1 that can be generated without branches on ia32 and x64 using setcc instruction.
R=fschneider@google.com
Review URL: https://codereview.chromium.org//14057004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21207 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-10 15:09:46 +00:00
vegorov@google.com
0e17b438eb
On x64 use 32bit idiv when possible instead of 64bit one.
...
64bit idiv requires twice as much cycles and has 2-3 times higher latency.
R=srdjan@google.com
Review URL: https://codereview.chromium.org//12545067
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@20565 260f80e4-7a28-3924-810f-c04153c831b5
2013-03-27 17:13:58 +00:00
vegorov@google.com
0e9a59eb59
Use shorter write-barrier filtering sequence when value is known to be non-smi.
...
R=iposva@google.com
Review URL: https://codereview.chromium.org//12438032
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@20373 260f80e4-7a28-3924-810f-c04153c831b5
2013-03-22 11:28:13 +00:00
srdjan@google.com
1bc8991142
For Doubl erounding call C-function instead of attempting to inline it. Fixes issue 8760.
...
Review URL: https://codereview.chromium.org//12334080
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@19013 260f80e4-7a28-3924-810f-c04153c831b5
2013-02-25 23:05:43 +00:00
regis@google.com
8c44be4313
Add support for object pool that will be used on ARM and MIPS architectures.
...
Modify code patching infrastructure to accept code object, which is necessary to
get to the object pool containing patchable target addresses.
Modify assembler test infrastructure to provide associated code object.
Review URL: https://codereview.chromium.org//12260026
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@18604 260f80e4-7a28-3924-810f-c04153c831b5
2013-02-15 23:55:31 +00:00
johnmccutchan@google.com
9fb0984c9d
SSE Assembler + Linux build fixes
...
Review URL: https://codereview.chromium.org//12223115
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@18493 260f80e4-7a28-3924-810f-c04153c831b5
2013-02-13 23:05:17 +00:00
johnmccutchan@google.com
dd140c2958
Revert SSE assembler changes
...
Review URL: https://codereview.chromium.org//12212151
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@18410 260f80e4-7a28-3924-810f-c04153c831b5
2013-02-12 23:14:12 +00:00
johnmccutchan@google.com
06eb49d537
SSE Assembler and Disassembler support
...
Review URL: https://codereview.chromium.org//12207117
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@18406 260f80e4-7a28-3924-810f-c04153c831b5
2013-02-12 22:43:48 +00:00
fschneider@google.com
3cd9fa513f
Fix bug in the x64 assembler's movw instruction.
...
The order of prefixes was wrong. The operand size prefix (0x66)
must occur before the REX prefix. From the instruction set reference:
[...]the REX prefix byte must immediately precede the opcode byte or
the escape opcode byte (0FH). [...]
Also, make movw(reg, addr) unavailable, consistent with ia32.
TEST=runtime/vm/assembler_x64_test.cc
Review URL: https://codereview.chromium.org//11961013
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@17135 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-16 12:12:21 +00:00
srdjan@google.com
40a7130741
Inline Doubles truncate and round.
...
Review URL: https://codereview.chromium.org//11573044
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@16983 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-11 20:42:47 +00:00
johnmccutchan@google.com
92d6c1e317
Add support for XMM8..XMM15
...
Review URL: https://codereview.chromium.org//11358262
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@15162 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-20 17:37:07 +00:00
fschneider@google.com
8aa175b9e6
Restrict immediate operands to smi where only smis are supported.
...
Re-enable redundant phi elimination.
Add x64 codegen templates and assembler instructions for immediate operands.
Fix x64 assembler for imull when using r8-r15.
Add x64 instruction for imulq(reg, imm).
Fix x64 disassembler printing of immediates.
Review URL: https://codereview.chromium.org//11362210
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14814 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-12 22:44:34 +00:00
srdjan@google.com
2693f662aa
Fix movmskpd test, add masking to result.
...
Review URL: https://codereview.chromium.org//11049013
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13154 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-02 23:49:30 +00:00
srdjan@google.com
fd09b935dd
Intrinsify Double.toInt.
...
Review URL: https://chromiumcodereview.appspot.com//10914142
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12064 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-07 20:41:53 +00:00
vegorov@google.com
1911b2bc81
Make register allocator to disregard constant computation with no uses.
...
Inline constant values into environments, instead of creating a use of the constant definition.
Change BinarySmiOpComp code template to allow inline constant uses for the right hand side.
R=fschneider@google.com
BUG=
Review URL: https://chromiumcodereview.appspot.com//10916082
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11798 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-04 09:58:57 +00:00
vegorov@google.com
264c4f6d1a
Add support for XMM registers in SSA code generation pipeline.
...
Split BinaryDoubleOp into several instructions that manipulate unboxed doubles.
R=fschneider@google.com
BUG=
Review URL: https://chromiumcodereview.appspot.com//10875030
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11313 260f80e4-7a28-3924-810f-c04153c831b5
2012-08-24 14:45:42 +00:00
srdjan@google.com
d0a991a41c
Various cleanups, adding tests.
...
Review URL: https://chromiumcodereview.appspot.com//10807070
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9821 260f80e4-7a28-3924-810f-c04153c831b5
2012-07-23 17:55:53 +00:00
srdjan@google.com
9b391ef9cf
Add some missing x64 instruction variations.
...
Review URL: https://chromiumcodereview.appspot.com//10696183
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9578 260f80e4-7a28-3924-810f-c04153c831b5
2012-07-12 00:41:45 +00:00
srdjan@google.com
e74f5a721b
Implement more intrinisification for x64 (not as inlined code but as header of the target).
...
Review URL: https://chromiumcodereview.appspot.com//10701147
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9573 260f80e4-7a28-3924-810f-c04153c831b5
2012-07-11 22:37:41 +00:00
iposva@google.com
d4bd618e75
- Fix the x64 store-barrier.
...
- Allow assembler test drivers to be shared across architectures.
- Add a shared StoreIntoObject assembler test.
Review URL: https://chromiumcodereview.appspot.com//10636017
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9050 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-22 23:48:51 +00:00
regis@google.com
7527d97cf5
Inline Math.sqrt in new compilers.
...
Review URL: https://chromiumcodereview.appspot.com//10542167
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8702 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-15 00:56:25 +00:00
vegorov@google.com
bd19464867
Implement kDoubleToDouble and kIntegerToDouble on ia32 and x64.
...
Fix bug in assembling of cvtsi2sd on x64.
R=srdjan@google.com
Review URL: https://chromiumcodereview.appspot.com//10534116
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8593 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-13 08:29:40 +00:00
vegorov@google.com
70a81f4264
Implement inlined version of binary arithmetic operations for doubles.
...
No attempt to reuse temporary boxes or locally propagate types is done.
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com//10533053
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8433 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-08 11:27:28 +00:00
srdjan@google.com
755790f46f
Adding unary op optimizations, missing assembly operations.
...
Review URL: https://chromiumcodereview.appspot.com//10440099
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8174 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-31 20:38:55 +00:00
srdjan@google.com
91ef28b321
More intrinsification x64: array index load and store.
...
Review URL: https://chromiumcodereview.appspot.com//10451026
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7970 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-25 00:00:36 +00:00
regis@google.com
a577991ad5
Port code generator to x64.
...
Review URL: http://codereview.chromium.org//8984003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@2557 260f80e4-7a28-3924-810f-c04153c831b5
2011-12-17 00:56:02 +00:00
regis@google.com
ec7f6331d1
Add 64-bit stubs to call into the runtime and to call native functions.
...
Fix 64-bit assembler bugs.
Review URL: http://codereview.chromium.org//8818001
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@2206 260f80e4-7a28-3924-810f-c04153c831b5
2011-12-08 00:03:08 +00:00
regis@google.com
b2a50c744b
Port object tests to x64.
...
Review URL: http://codereview.chromium.org//8758012
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@1959 260f80e4-7a28-3924-810f-c04153c831b5
2011-12-01 01:44:01 +00:00
regis@google.com
503896daef
Initial revision of assembler for x64.
...
Review URL: http://codereview.chromium.org//8747023
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@1951 260f80e4-7a28-3924-810f-c04153c831b5
2011-11-30 22:02:21 +00:00