Commit Graph

32 Commits

Author SHA1 Message Date
johnmccutchan@google.com 34721f9adc Add cvtsd2ss into X64 disassembler
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org//23653014

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27291 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-09 14:45:59 +00:00
johnmccutchan@google.com 6d11a8fa15 Add signMask getter to Float32x4
R=srdjan@google.com, zra@google.com

Review URL: https://codereview.chromium.org//22947006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26394 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-20 21:35:53 +00:00
jacobr@google.com 605b33c1bc fix cpp11 compile errors
R=asiva@google.com

Review URL: https://codereview.chromium.org//23072026

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26387 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-20 20:24:11 +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
johnmccutchan@google.com 10969ab342 Inline two argument shuffle operations on IA32 and X64.
R=vegorov@google.com

Review URL: https://codereview.chromium.org//20467004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25580 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-29 18:57:35 +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
zra@google.com f6da1febeb Drops into Simulator Debugger only in a session that is already interactive.
This change backs out an earlier change to the disassemblers that
made them return false if an instruction couldn't be decoded.
This was used in the simulator debuggers for arm and mips to avoid
executing an instruction that couldn't be decoded.

Instead, now when an unknown instruction is encountered in the simulator,
if the simulator is running interactively, we drop into
the debugger, and otherwise die. We detect that a simulator is
running interactively by setting a flag if we enter the debugger
for a user set break point.
Review URL: https://codereview.chromium.org//12903006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@20394 260f80e4-7a28-3924-810f-c04153c831b5
2013-03-22 18:11:05 +00:00
zra@google.com 2905da6a38 Fix build.
Review URL: https://codereview.chromium.org//12607009

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@19961 260f80e4-7a28-3924-810f-c04153c831b5
2013-03-13 19:00:53 +00:00
zra@google.com 82367b380d Copies Simulator Debugger from ARM to MIPS.
Also includes changes to keep it from aborting unexpectedly.
Among other things, I changed the Disassembler::Disassemble to return false
when the underlying decoder can't decode an instruction. Then,
the MIPS SimulatorDebugger will refuse to step or cont on an instruction
that the Disassembler can't decode.
Review URL: https://codereview.chromium.org//12431016

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@19958 260f80e4-7a28-3924-810f-c04153c831b5
2013-03-13 18:43:16 +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
vegorov@google.com 932a05420a Reland r17365.
Introduce InvokeMathCFunction that can be used to directly invoke mathematical
function provided by runtime.

Use it to unconditionally inline _Double.pow.

Use it to inline floor, ceil, round, truncate, round when SSE4.1 is not
available.

Perform representation selection phase after constant propagation to minimize
boxing.

Add support for enter instruction in the x64 disassembler.

Add test for optimized pow and fix compilation on windows.

R=fschneider@google.com
BUG=dart:8002

Review URL: https://codereview.chromium.org//12038013

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@17393 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-22 12:18:31 +00:00
vegorov@google.com ab91977173 Revert "Introduce InvokeMathCFunction that can be used to directly invoke mathematical function provided by runtime."
This reverts commit r17365.

TBR=fschneider@google.com

Review URL: https://codereview.chromium.org//12042014

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@17367 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-21 17:16:16 +00:00
vegorov@google.com a20c8d28b8 Introduce InvokeMathCFunction that can be used to directly invoke mathematical function provided by runtime.
Use it to unconditionally inline _Double.pow.

Use it to inline floor, ceil, round, truncate, round when SSE4.1 is not available.

Perform representation selection phase after constant propagation to minimize boxing.

Add support for enter instruction in the x64 disassembler.

R=fschneider@google.com
BUG=dart:8002

Review URL: https://codereview.chromium.org//12050002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@17365 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-21 16:59:37 +00:00
fschneider@google.com 75c4844bf5 Cleanup uses of X::CheckedHandle where X::Cast or X::Handle is sufficient.
The only places where CheckedHandle is appropiate is with arguments to
runtime functions and values from Dart API functions.

For other places in the VM either normal Handle and ^=, or Cast is sufficient.

T::Cast is used when the value is guaranteed to be of type T (and never Object::null()).
Otherwise, the operator^= is used for casting.

Also fix a style issue where a Raw* should be used as return type.
Review URL: https://codereview.chromium.org//11826024

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@17013 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-14 09:51:48 +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
kmillikin@google.com f49dcf37e9 Guard against buffer overflow in the x64 disassembler.
BUG=

Review URL: https://codereview.chromium.org//11092099

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13598 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-12 08:12:24 +00:00
srdjan@google.com b2f09ea5df FIx crash in disassembler: check that an addrs is tagged before testing it to be part of the heap.
Review URL: https://codereview.chromium.org//10915256

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12308 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-13 09:46:04 +00:00
cshapiro@google.com 0cf51fb239 Eliminate a potential warning about extra format arguments.
Review URL: https://chromiumcodereview.appspot.com//10908133

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@12001 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-07 00:08:56 +00:00
cshapiro@google.com fa741e74e6 A third attempt to provide correct conversion specifiers on MacOS.
Review URL: https://chromiumcodereview.appspot.com//10905120

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11915 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-06 01:32:19 +00:00
cshapiro@google.com da14bf70a7 Add attributions so printf like functions can have their arguments checked.
This change also corrects some misuses of format strings and format
arguments that discovered by the compiler checks.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11912 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-06 00:58:25 +00:00
vegorov@google.com be313b5530 Restrict objects printing in disassembler to avoid GC.
R=iposva@google.com
BUG=4709

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11637 260f80e4-7a28-3924-810f-c04153c831b5
2012-08-30 18:08:30 +00:00
vegorov@google.com 3635a7436a Repair x64 disassembler:
- fix disassembler constructor to initialize fields correctly;
- move more code from InstructionDecode to DecodeInstructionType, this ensures that it'll use the right value of current variable (which is not always equal to **data as it assumed before).

R=kmillikin@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@10898 260f80e4-7a28-3924-810f-c04153c831b5
2012-08-17 14:04:10 +00:00
srdjan@google.com db0d864629 Add X64 assembler.
Review URL: https://chromiumcodereview.appspot.com//10826248

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@10517 260f80e4-7a28-3924-810f-c04153c831b5
2012-08-10 17:20:10 +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
hausner@google.com 6d9abc5e3b StepOver, StepInto, StepOut
Implement single stepping in the debugger.
- Add PC descriptors for function return
- functions to set temporary breakpoints on all
  locations in a function.
- patching/restoring of function return code pattern
- determine call target of instance calls
Review URL: https://chromiumcodereview.appspot.com//9484002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@4639 260f80e4-7a28-3924-810f-c04153c831b5
2012-02-27 22:00:28 +00:00
sgjesse@google.com 65896148c9 Move utils.h and utils.cc from runtime/vm to runtime/platform
Moved additional parts of globals.h from vm/ to platform/ to support
types and constants used by utils.*.

R=ager@google.com, iposva@google.com

BUG=
TEST=

Review URL: http://codereview.chromium.org//9209001

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@3337 260f80e4-7a28-3924-810f-c04153c831b5
2012-01-16 13:23:40 +00:00
sgjesse@google.com bf67f24098 Move assert.h/assert.cc from runtime/vm to runtime/platform
The purpose of this change is twofold:

1. Source in the bin directory can now use the same assertions as
   source in the vm directory. The ASSERT macro used by the code
   in runtime/bin was just defined to use assert from the standard
   C library.
2. Moving other implementation parts from runtime/vm to
   runtime/platform (e.g. classes Monitor and Mutex) for sharing
   between runtime/bin and runtime/vm will be easier as these
   implementations rely on these assertion macros.

Created two gypi files for the platform directory. One for the
headers and one for the source. The source one is only included
when building the VM library and will be present in libdart.a
when the dart executable is linked.

All the code for asserts is still in the dart namespace.

Also re-arranged the order of includes to be alphabetically in
the files touched.

R=ager@google.com, iposva@google.com

BUG=
TEST=

Review URL: http://codereview.chromium.org//9189003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@3335 260f80e4-7a28-3924-810f-c04153c831b5
2012-01-16 12:28:10 +00:00
regis@google.com e27623a4ef Disable x64 disassembler under win32.
Add x64 assembler macros.
Review URL: http://codereview.chromium.org//8760015

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@1955 260f80e4-7a28-3924-810f-c04153c831b5
2011-11-30 23:55:30 +00:00
regis@google.com d55fe56fcc Disassembler for x64.
Review URL: http://codereview.chromium.org//8758005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@1953 260f80e4-7a28-3924-810f-c04153c831b5
2011-11-30 23:12:46 +00:00
dgrove@google.com 4c0f559d23 Initial checkin.
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@15 260f80e4-7a28-3924-810f-c04153c831b5
2011-10-05 05:20:07 +00:00