zra@google.com
b3158827fd
Fixes ARM SIMD vabsqs instruction in the simulator.
...
R=srdjan@google.com
Review URL: https://codereview.chromium.org//77553008
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30529 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-21 16:41:02 +00:00
zra@google.com
df1e5247fe
Adds support for ARM softfp calling convention.
...
The cross-compiler with the Android NDK doesn't support
the 'hard' calling convention, so we need both. I've
added a preprocessor define to the gyp file for the
standalone vm indicating support for 'hard' so that I
don't have to modify the Dartium gyp files.
R=srdjan@google.com
Review URL: https://codereview.chromium.org//52803002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29577 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-30 18:57:55 +00:00
srdjan@google.com
d78737298c
Last cleanup int -> intptr_t. Also removed a hack (boolean is not an integer).
...
R=asiva@google.com
Review URL: https://codereview.chromium.org//26345002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28372 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-08 18:54:00 +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
srdjan@google.com
8cd4bf5b92
Change inlined stack frame iterator to use code and pc instead of frame.
...
R=asiva@google.com
Review URL: https://codereview.chromium.org//23494026
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27140 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-04 19:36:20 +00:00
zra@google.com
a783459837
Preserves callee-saved FPU registers on ARM
...
Preserves callee-saved FPU registers on ARM when
going from C++ to Dart code. Adds assertions to
the simulator to make sure this is being done
correctly.
R=regis@google.com
Review URL: https://codereview.chromium.org//23549013
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27072 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-03 18:23:43 +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
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
asiva@google.com
b4d9e0d620
Auto create ApiLocalScope before calling native functions, this ensures that
...
native functions do not have to call Dart_EnterScope/Dart_ExitScope
when they callback into the VM.
Remove Dart_EnterScope/Dart_ExitScope calls around native functions in 'bin'
directory.
R=regis@google.com , srdjan@google.com
Review URL: https://codereview.chromium.org//22303002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25827 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-06 19:27:48 +00:00
zra@google.com
8f3e8783f8
Implements the two argument shuffle SIMD instruction for ARM.
...
R=regis@google.com
Review URL: https://codereview.chromium.org//21004011
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25638 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-30 20:49:22 +00:00
zra@google.com
42217dc159
Implements far-branches on ARM.
...
R=regis@google.com
Review URL: https://codereview.chromium.org//21159002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25617 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-30 15:33:36 +00:00
zra@google.com
af23dfc5b2
Increases the number of ARM floating-point registers.
...
This is to be consistent with VFPv3_D32. Later, we'll detect
VFPv3_D16 at runtime.
R=regis@google.com
Review URL: https://codereview.chromium.org//19806005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25352 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-23 18:25:44 +00:00
zra@google.com
dd9adc1a86
Adds more SIMD instructions for ARM.
...
Adds the vnegqs, vabsqs, and vandq instructions.
Also reverts the increase in the number of floating point registers since it is causing crashes on hardware.
R=regis@google.com
Review URL: https://codereview.chromium.org//19493004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25320 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-22 23:26:12 +00:00
zra@google.com
4b97f8c18c
Adds reciprocal squre root SIMD instructions for ARM.
...
R=regis@google.com
Review URL: https://codereview.chromium.org//19875002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25291 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-22 18:19:44 +00:00
zra@google.com
a15bac1044
Adds ARM SIMD instructions.
...
vminqs, maxqs, vrecpeqs (Reciprocal estimate), vrecpsqs (Reciprocal Newton-Raphson step).
R=regis@google.com
Review URL: https://codereview.chromium.org//19773017
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25245 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-19 21:32:03 +00:00
zra@google.com
18f6092d52
Implements ARM SIMD comparison instructions.
...
R=regis@google.com
Review URL: https://codereview.chromium.org//19678020
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25189 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-18 22:56:45 +00:00
zra@google.com
d886c10f6e
Enables a SIMD test for ARM.
...
Required adding the veorq, vmovq, and vdup instructions.
R=regis@google.com
Review URL: https://codereview.chromium.org//19776007
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25165 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-18 18:40:27 +00:00
zra@google.com
4731ad6b71
Adds the vtbl ARM SIMD instruction.
...
It is needed for the Float32x4ShuffleInstr of the intermediate language.
R=regis@google.com
Review URL: https://codereview.chromium.org//19400003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25073 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-16 21:18:26 +00:00
zra@google.com
344b295eee
Implements ARM SIMD multiplication and subtraction instructions.
...
R=regis@google.com
Review URL: https://codereview.chromium.org//19290006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25052 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-16 16:13:56 +00:00
zra@google.com
f219f81b14
Begins implementation of ARM neon instructions.
...
Just adds the vadd instruction, but also changes the
arm assembler to expose the Q registers rather than the
D registers. Q0 = D1:D0 = S3:S2:S1:S0. This is similar
to how ia32 and x64 use only the xmm registers for
floating point.
R=regis@google.com
Review URL: https://codereview.chromium.org//18684008
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24982 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-12 23:22:50 +00:00
zra@google.com
765960a56f
Removes checks for stack overflow from arm and mips simulators
...
The checks were performed before runtime and native calls,
but if we abort on an assertion failure there, then we
never make it to the StackOverflow runtime call.
R=regis@google.com
Review URL: https://codereview.chromium.org//18704006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24979 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-12 23:06:27 +00:00
zra@google.com
c2652c8bc4
Fixes bug in double to int conversion on arm.
...
R=regis@google.com
Review URL: https://codereview.chromium.org//18295007
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24960 260f80e4-7a28-3924-810f-c04153c831b5
2013-07-12 16:56:38 +00:00
regis@google.com
3711825476
Fix Random_nextState intrinsic on ARM.
...
R=zra@google.com
Review URL: https://codereview.chromium.org//18054006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24548 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-27 20:16:53 +00:00
zra@google.com
364c5406b8
Fixes floating point bug in ARM simulator.
...
Adjusts status files to match.
R=regis@google.com
Review URL: https://codereview.chromium.org//17742003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24473 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-26 15:48:22 +00:00
zra@google.com
8edda78ccc
Enables more tests for SIMMIPS.
...
. Fixes register allocation bugs
. Implements float <-> double conversion in assembler and simulator.
. Fixes floating point argument passing for simarm and simmips,
and floating point return for simarm, and adjusts tests to match.
R=regis@google.com
Review URL: https://codereview.chromium.org//17502002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24365 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-24 20:16:16 +00:00
zra@google.com
6ea08a30af
Allows exception object to be null in simarm and simmips.
...
Also, updates status files.
R=regis@google.com
Review URL: https://codereview.chromium.org//17587015
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@24361 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-24 18:38:46 +00:00
regis@google.com
8f62a87598
Switch code generation on ARM from softfp ABI to hardfp ABI.
...
Support leaf float runtime calls in ARM simulator.
Enable previously failing tests.
R=zra@google.com
Review URL: https://codereview.chromium.org//16638012
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@23868 260f80e4-7a28-3924-810f-c04153c831b5
2013-06-11 16:47:01 +00:00
regis@google.com
479c0427d9
Fix leaf floating point runtime calls on ARM (work still needed in simulator).
...
Various cleanups.
R=zra@google.com
Review URL: https://codereview.chromium.org//15945006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@23506 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-31 23:51:38 +00:00
zra@google.com
e5229295a0
Removes ARM mrc instruction.
...
It is a privileged instruction and was only being used in tests
running on the simulator.
R=regis@google.com
Review URL: https://codereview.chromium.org//16194010
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@23367 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-29 21:31:27 +00:00
zra@google.com
26fa41d1b1
Implements intrinsics for ARM.
...
R=regis@google.com
Review URL: https://codereview.chromium.org//15822008
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@23311 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-28 22:55:51 +00:00
regis@google.com
ac2e804324
Fix a bug in optimized ARM code.
...
Fix a bug in deoptimization (wrong stack layout assumption, worked on Intel by
chance).
Implement megamorphic instance call on ARM.
Improve line number reporting in simulator backtraces.
R=zra@google.com
Review URL: https://codereview.chromium.org//15692005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@23169 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-24 18:52:34 +00:00
srdjan@google.com
d88e9adedf
Fix broken Mac build.
...
Review URL: https://codereview.chromium.org//15412005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22974 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-22 00:06:18 +00:00
regis@google.com
d7f7604cf0
Implement backtracing and toggling of execution tracing in ARM simulator.
...
R=zra@google.com
Review URL: https://codereview.chromium.org//14711013
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22967 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-21 22:07:55 +00:00
zra@google.com
fabc87d633
Fixes for integer division on ARM hardware so that assembler tests pass.
...
Now, all VM tests that pass on SIMARM, pass on ARM.
Also, more assertions in the ARM disassembler and simulator to
make sure that condition codes aren't used with bkpt.
R=regis@google.com
Review URL: https://codereview.chromium.org//14784011
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22471 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-07 18:21:18 +00:00
regis@google.com
ad6005e5c4
Support debugger API on ARM.
...
Support smull ARM instruction in order to detect 32-bit multiplication overflow.
Enable debugger api tests on ARM.
Enable isolate tests on ARM.
Enable code descriptors tests on ARM.
Enable snapshot tests on ARM.
Enable heap tests on ARM.
Review URL: https://codereview.chromium.org//13983016
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21890 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-23 16:10:22 +00:00
iposva@google.com
539588333e
- Reduce warnings about project settings in Xcode 4.
...
- Address compilation warnings found by clang.
Review URL: https://codereview.chromium.org//14084006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21786 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-22 05:31:03 +00:00
regis@google.com
48bb59325d
Reset simulator top exit frame info when coming via long jump from a throw.
...
Thanks to Srdjan for reporting the crash on Mac.
Review URL: https://codereview.chromium.org//14141008
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21695 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-18 19:30:26 +00:00
regis@google.com
d79c7c1969
Implement long jump in ARM and MIPS simulators.
...
Implement error and exception handler stubs on ARM.
Hook up simulator for object tests.
Enable codegen and object tests on ARM.
Review URL: https://codereview.chromium.org//14309004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21680 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-18 16:23:25 +00:00
regis@google.com
05e2ba9540
Support FrameLookup vm test on ARM, requiring among other things:
...
Maintain a separate top_exit_frame_info for simulated frames and use it to
verify that longjumps are safe.
Make sure unwinding of scopes works in the presence of a simulator.
Support inline allocation of objects.
Support checking of inline cache and instance calls.
Support subtype test cache.
Support (some) equality checks.
Support for (some) conditional branches.
Support for pool pointer setup in stubs.
Review URL: https://codereview.chromium.org//13502002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@20890 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-03 20:17:14 +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
7611d6f772
Fixes a build warning about a format string.
...
Review URL: https://codereview.chromium.org//12871004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@20043 260f80e4-7a28-3924-810f-c04153c831b5
2013-03-14 18:56:07 +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
regis@google.com
7766ac76d4
Implement leaf runtime call stub on ARM and corresponding call redirection
...
in ARM simulator.
Implement jump patching on ARM.
Add missing ICache flush calls.
Review URL: https://codereview.chromium.org//12439005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@19724 260f80e4-7a28-3924-810f-c04153c831b5
2013-03-08 21:16:46 +00:00
regis@google.com
b95087eb73
Implement native call stub on ARM and native call redirection in ARM simulator.
...
Pass PatchStaticCall test.
Review URL: https://codereview.chromium.org//12629004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@19704 260f80e4-7a28-3924-810f-c04153c831b5
2013-03-08 18:22:14 +00:00
iposva@google.com
f507e542de
- Add a skeleton MIPS assembler, disassembler and simulator.
...
- Remove unused fields and methods from ARM simulator.
- Remove unused 5th parameter from Simulator::Call.
Review URL: https://codereview.chromium.org//12541003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@19606 260f80e4-7a28-3924-810f-c04153c831b5
2013-03-07 11:04:27 +00:00
zra@google.com
31da7d6c55
Adds muls, sdiv, udiv instructions to ARM simulator, assembler, disassembler
...
Review URL: https://codereview.chromium.org//12459005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@19511 260f80e4-7a28-3924-810f-c04153c831b5
2013-03-05 19:53:43 +00:00
zra@google.com
c9c0881ac7
Adds mrc instruction to arm simulator, assembler, disassembler.
...
This instruction will be used to query an arm processor to
determine whether it supports the sdiv and udiv instructions.
Also adds a flag --sim_has_int_div to the arm simulator,
which changes the result of the mrc instruction so we can
test both ways.
Review URL: https://codereview.chromium.org//12378080
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@19439 260f80e4-7a28-3924-810f-c04153c831b5
2013-03-05 01:03:22 +00:00
regis@google.com
a879bba2ff
Second codegen test passing on ARM (simulated).
...
This required support on ARM for:
- compilation of static calls
- patching of static calls
- stub to call into runtime
- redirection support for calls from simulator to host runtime
- stack frame iteration
Review URL: https://codereview.chromium.org//12381034
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@19405 260f80e4-7a28-3924-810f-c04153c831b5
2013-03-04 18:08:38 +00:00
zra@google.com
767b8ec8fc
Adds vstm, vldm to ARM simulator, assembler, disassembler
...
Review URL: https://codereview.chromium.org//12390039
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@19404 260f80e4-7a28-3924-810f-c04153c831b5
2013-03-04 17:45:38 +00:00
regis@google.com
3b374ead4b
Compile and simulate first dart function on arm generated from ast.
...
Review URL: https://codereview.chromium.org//12335102
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@19152 260f80e4-7a28-3924-810f-c04153c831b5
2013-02-27 17:13:51 +00:00