Commit Graph

35 Commits

Author SHA1 Message Date
kmillikin@google.com 25ac913c69 Remove the default contains_call parameter on location summaries.
The plan is to use this parameter to make finer distinctions between
calls (e.g., safepoint vs. non-safepoint).  It's a bit safer to eliminate
the default.

R=vegorov@google.com
BUG=

Review URL: https://chromiumcodereview.appspot.com//10843006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@10052 260f80e4-7a28-3924-810f-c04153c831b5
2012-07-31 11:51:47 +00:00
vegorov@google.com 61dc368874 Fix kStoreBufferBlockProcessRuntimeEntry calling sequence.
Poping of volatile registers was performed without taking into account the fact that stack pointer could have been  modified to ensure correct alignment _after_ volatile registers were pushed.

Enable --use-ssa on x64 again.

BUG=4221

Review URL: https://chromiumcodereview.appspot.com//10820053

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@10007 260f80e4-7a28-3924-810f-c04153c831b5
2012-07-30 10:38:48 +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
vegorov@google.com d83a634324 Add spill slot locations.
Review URL: https://chromiumcodereview.appspot.com//10805053

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9810 260f80e4-7a28-3924-810f-c04153c831b5
2012-07-23 14:05:48 +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
vegorov@google.com 1bd5a9b414 Skeleton of a linear scan register allocator.
BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//10696151

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9563 260f80e4-7a28-3924-810f-c04153c831b5
2012-07-11 18:52:17 +00:00
iposva@google.com dd800b6870 - On store buffer block overflow call a VM leaf function to
add the entries into the store buffer.
- Add a way to preserve and restore caller saved registers.
- Clean up the implementation of the stub for Assembler::Stop.
Review URL: https://chromiumcodereview.appspot.com//10758008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9490 260f80e4-7a28-3924-810f-c04153c831b5
2012-07-09 22:58:27 +00:00
iposva@google.com cccf112d1e - Document the store barrier.
Review URL: https://chromiumcodereview.appspot.com//10658008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9051 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-23 00:17:25 +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
iposva@google.com 936e659da1 - Remove extra jumps from store barrier on x64.
Review URL: https://chromiumcodereview.appspot.com//10641018

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@9014 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-22 07:57:11 +00:00
iposva@google.com 5e52657f33 - Implement the filtering store barrier on x64.
Review URL: https://chromiumcodereview.appspot.com//10581049

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8953 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-20 23:48:26 +00:00
asiva@google.com 88243dfce2 Rework leaf calls as just simple C calls with a signature and not the NativeArgumentDescriptor.
Review URL: https://chromiumcodereview.appspot.com//10592006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8881 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-19 23:57:40 +00:00
vegorov@google.com 959cf98b00 Implement a simple register allocator that tries to keep instruction results in registers.
Add --optimization-filter flag that allows to disbable optimizations for all function which do not match prefix. This allows to quickly localize problems with code generation.

BUG=
TEST=

Review URL: https://chromiumcodereview.appspot.com//10559035

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8811 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-18 18:04:22 +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
cshapiro@google.com 4dc1d4de6d Intrinsify some ByteArray methods.
get:length is intrinsified for internal and external subtypes.

[] is intrinsified for 8- and 16-bit internal subtypes on ia32.

[] is also intrinsified for 32-bit internal subtypes on x64.

Review URL: https://chromiumcodereview.appspot.com//10546035

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8371 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-06 23:43:42 +00:00
srdjan@google.com 0912e4ded7 More code for ia32, more shared code.
CreateArrayComp, EqualityCompareComp, StoreStaticField, LoadStaticField, StoreIndexedComp, StoreInstanceFieldComp, Throw, Rethrow, AssertBooleanComp.
Made more code shared, which has the disadvantage od splitting MakeLocationSummary from EmitNativeCode. Discuss.
Review URL: https://chromiumcodereview.appspot.com//10543013

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8343 260f80e4-7a28-3924-810f-c04153c831b5
2012-06-06 15:42:07 +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
vegorov@google.com 9125248ea2 In generated code for x64 don't load object's class directly from class_ field.
Instead look it up in class table by class index taken from object's tags.

R=iposva@google.com

Review URL: https://chromiumcodereview.appspot.com//10458031

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8159 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-31 15:35:14 +00:00
srdjan@google.com 60cb692878 Do pops instead of addq(RSP when possible).
Review URL: https://chromiumcodereview.appspot.com//10458033

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@8110 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-30 16:05:10 +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
srdjan@google.com 8dd46bccc7 Implement some intrinsics on x64, fix a bug in ia32 intrinciscs (must return false if there is a fall-through, so that slow path will be generated).
Review URL: https://chromiumcodereview.appspot.com//10450006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7951 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-24 16:15:09 +00:00
vegorov@google.com f999f30052 Extend assembler with ability to produce comments for the generated code.
Extend x64 disassembler with ability to decode and output recorded comments.

Example output (currently comments are emitted only by flow graph compiler at block/instruction boundaries, once instruction printing is refactored and supports printing into buffer simple "instruction" comment will be replaced with the actual IL construct):

        ;; B0
        ;; B1
        ;; instruction
0x007f0fff812525 00000055 49 bb 21 00 b4 04 10  mov    $0x7f1004b40021,%r11
0x007f0fff81252c 0000005c 7f 00 00
0x007f0fff81252f 0000005f 41 53                 push   %r11

R=srdjan@google.com

Review URL: https://chromiumcodereview.appspot.com//10407019

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7723 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-17 21:56:16 +00:00
efortuna@google.com b81f7a7402 Un revert the revert
Review URL: https://chromiumcodereview.appspot.com//10386152

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7672 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-15 22:28:10 +00:00
efortuna@google.com 01b3e58e08 reverting 7668??
Not clear why this claused widespread breakage. Investigating.
Review URL: https://chromiumcodereview.appspot.com//10388154

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7671 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-15 22:21:25 +00:00
fschneider@google.com c47128bd66 Replace long sequences of popq with a Drop(int) macro instruction.
This is for now only done on x64.
Review URL: https://chromiumcodereview.appspot.com//10383189

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@7668 260f80e4-7a28-3924-810f-c04153c831b5
2012-05-15 21:41:25 +00:00
asiva@google.com 3107319e40 Simplify representation of stack frames. Remove the special types DartFrame/StubFrame and instead use StackFrame with methods IsDartFrame and IsStubFrame for frames representing Dart or Stub Code. This eliminates all the complexity that was added to ensure that we always see only one stub frame before hitting a dart frame during iteration.
Fixes bug 6380625 which was another case when we had two stub frames before hitting the dart frame.
Review URL: https://chromiumcodereview.appspot.com//10173008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@6920 260f80e4-7a28-3924-810f-c04153c831b5
2012-04-25 01:15:28 +00:00
regis@google.com d1d3235013 Modify 'movq reg, reg' encoding in 64-bit code.
Use 0x89 encoding (instead of 0x8B encoding), which is expected by gdb64
older than 7.3.1-gg5 when disassembling a function's prolog (movq rbp, rsp)
for proper unwinding of Dart frames (use --generate_gdb_symbols and -O0).
Review URL: https://chromiumcodereview.appspot.com//10052013

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@6422 260f80e4-7a28-3924-810f-c04153c831b5
2012-04-11 18:13:09 +00:00
regis@google.com 344dcbde12 Print stop message.
Review URL: http://codereview.chromium.org//9128002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@3124 260f80e4-7a28-3924-810f-c04153c831b5
2012-01-10 00:32:51 +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