Commit Graph

13143 Commits

Author SHA1 Message Date
fschneider@google.com 5f2bdb2f7d Fix bug with missing unboxed mint-to-double conversion.
In case of a mixed integer/double operation that has a mint
input, the corresponding conversion from unboxed mint to unboxed
double was missing.

This CL converts a unboxed mint to a double by first boxing,
and then unboxing. Currently, we deoptimize in case the result
does not fit into a smi because we can only optimize mixed
smi/double operations and not yet mint/double operations.

BUG=dart:5721
TEST=tests/language/mint_arithmetic.dart
Review URL: https://codereview.chromium.org//11017017

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13372 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-08 20:20:53 +00:00
ager@google.com 70216ab4cd Hide internal details of VM string implementation.
R=lrn@google.com,srdjan@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13352 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-08 13:00:33 +00:00
asiva@google.com ceed3e5beb - Add support to interrupt a running isolate with the following command:
<===  InterruptCmd = "{" RequestId "," command ":" interrupt "," params ":" "{" isolateId ":" Integer "}" "}"
===>  InterruptCmdResp = "{" RequestId "}"

- Send isolate events over to the debugger client in the following format:
===>  "{" event ":" isolate "," params ":" "{" reason ":" created "," id ":" Integer "}" "}"
===>  "{" event ":" isolate "," params ":" "{" reason ":" shutdown "," id ":" Integer "}" "}"
===>  "{" event ":" paused "," params ":" "{" reason ":" interrupted "," callFrames ":" StackTrace "}" "}"

- Added id ";" Integer, to params in all paused events messages

- create per isolate debugger message queues, instead of the global static one

- Add 'i' command in ddbg to exercise the interrupt feature

- Add support for handling isolave event messages in ddbg
Review URL: https://codereview.chromium.org//11028040

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13333 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-05 23:10:28 +00:00
regis@google.com 3a45259cc5 Implement new scope rules for type variables (issue 5230).
Fix tests.
Review URL: https://codereview.chromium.org//11030056

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13316 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-05 20:29:02 +00:00
tball@google.com 76d7c9b105 Renamed Zone->StackZone, BaseZone->Zone, in preparation for changing isolate->get_zone() to return what was called the BaseZone instead of its wrapper. The GetBaseZone() methods were not renamed, to help the next CL.
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13314 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-05 19:52:55 +00:00
fschneider@google.com 3efefbd582 Faster 64-bit right-shift for the ia32 compiler.
Review URL: https://codereview.chromium.org//11027060

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13295 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-05 14:42:00 +00:00
iposva@google.com c8df70b904 Fix bug 5575:
- Remove residue of typed arrays from dart:core.
Review URL: https://codereview.chromium.org//11031063

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13274 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-05 06:52:42 +00:00
srdjan@google.com f78f482326 Restore x64 performance by reinstering an accidentally deleted LoadClassId instruction.
Review URL: https://codereview.chromium.org//11033032

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13257 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 20:20:17 +00:00
hausner@google.com be9679261e Better error message for const loop variables
issue 5629

The new error message is:


'file:/n.dart': Error: line 4 pos 8: Loop variable cannot be 'const'
  for (const i in [1,2,3]) {
       ^
Review URL: https://codereview.chromium.org//11027036

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13255 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 19:42:25 +00:00
srdjan@google.com 717e3c0396 Support for mixed null/smi equality: do not deoptimize, emit same optimized code as if that was smi-equality only.
Moved assert for duplicate class checks into ICData.
Allow CheckClassInstr to check for Smi as well.
Review URL: https://codereview.chromium.org//11048032

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13254 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 19:35:23 +00:00
hausner@google.com ed960e0432 Add catchless catch clauses
The Dart grammar says the catch clause is optional, ie. the following is legal:

try {
  ...
} on String {
  ...
}

Added a test case
Review URL: https://codereview.chromium.org//11051031

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13240 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 16:10:45 +00:00
fschneider@google.com e868adb00c Renaming Unboxed* IL instructions to shorter names.
Since we don't have boxed mint and double operations anymore,
we can use shorter names.
Review URL: https://codereview.chromium.org//11027026

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13237 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 15:54:16 +00:00
kmillikin@google.com 9ca8085565 Do not override (lower) the VM's code heap size for benchmarks tests.
R=zerny@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13227 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 13:08:05 +00:00
zerny@google.com c0418b9d52 Don't inline functions above the deoptimization threshold.
Moved deoptimization counter increment code into the PcMarker instruction where it executes on each occurring function in the optimized frame.

R=kmillikin@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13223 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 12:24:25 +00:00
fschneider@google.com f60ebcc5fb Add fast 64-bit bitwise negation to the IA32 optimizing compiler.
Review URL: https://codereview.chromium.org//11043020

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13221 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 12:01:12 +00:00
kmillikin@google.com 932b29c74e Pack deopt ID into the return before and return after deopt instructions.
Pack it into a machine word-sized bit field along with the object table
index.  The commands do not implicitly use the object table index any more,
which allows removing deopt IDs from the object table and pooling function
entries.

R=srdjan@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13214 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 09:03:28 +00:00
fschneider@google.com cb719805d8 Add fast 64-bit integer ADD and SUB to the optimizing compiler.
They operate on unboxed 64-bit integers stored in xmm registers.

I also fixed an issue with some SSE 4 specific assembler
tests where we hit an assert with an empty assembler buffer
when running with --no-use-sse41.
Review URL: https://codereview.chromium.org//11016028

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13211 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 08:50:28 +00:00
regis@google.com 1b8e614d7d Change compile-time errors into dynamic errors in instance creation expression
(issue 3085).
Change compile-time errors into dynamic errors in static getter and setter
calls (issues 3088, 3094).
Fix a crash in flow graph builder for missing static getter (issue 4360).
Add support in VM for NoSuchMethodError.
Remove support in VM for StaticResolutionException.
Add, remove, update related language tests.
Triage related co19 tests.
Review URL: https://codereview.chromium.org//11049038

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13208 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 00:15:38 +00:00
asiva@google.com 6076250adb 1. Create a port when a debugger object is created for an isolate, use this
port as the unique ID to represent an isolate in the debugger message
   format.

2. Switch the Event handler API to use an isolate id instead of the isolate
   object itself.

3. Add a unit test case for isolate debugger event handling with an
   interrupt of isolate to ensure that interrupting the isolate runs
   the interrupt event handler.
Review URL: https://codereview.chromium.org//11052006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13207 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-04 00:13:37 +00:00
zerny@google.com 3ae0b96762 Set previous instruction pointers when building the graph.
R=kmillikin@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13174 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-03 15:05:27 +00:00
fschneider@google.com 7c13f0a7f4 Remove now unused BinaryMintOp from the IL.
It has been replaced with UnboxedMintBinaryOp.
Review URL: https://codereview.chromium.org//11031024

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13172 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-03 14:20:45 +00:00
kmillikin@google.com 8a6dd23f3c Run canonicalization again after constant propagation.
This eliminates smi checks of constant-valued instructions.  Also fix
printing of block numbers in code comments.

R=fschneider@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13170 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-03 11:09:19 +00:00
fschneider@google.com c2ec22a652 Fix bug with mint unboxing on non-SSE 4.1 machines.
I forgot to check for SSE 4.1 support in one place. For machines
that do not support SSE 4.1 we should never generated unboxed
mint operations.
Review URL: https://codereview.chromium.org//11038016

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13164 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-03 09:11:21 +00:00
ager@google.com 35e073bf80 Minor style and comment fixes from review comments.
R=iposva@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13161 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-03 08:08:34 +00:00
cshapiro@google.com dc7ac3d520 Scavenge watched objects by scavenging their watchers.
BUG=http://code.google.com/p/dart/issues/detail?id=5546

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13157 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-03 01:40:23 +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
iposva@google.com ab16371668 - Add regression test case for dartbug.com/5546.
Review URL: https://codereview.chromium.org//11047007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13150 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-02 23:31:57 +00:00
srdjan@google.com 6388bd11c4 Fix crashes in Smi equality comparisons: Smi equality instruction may have null as inputs. Null is treated specially in equality and therefore does not enter the ICdata, type feedback does not know about null being encountered.
TODO: fix excessive deoptimziation due to one of the inputs not being Smi.
(Crash was reproduced running test suite with optimization counter threshold 5)
Review URL: https://codereview.chromium.org//11049011

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13149 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-02 22:52:39 +00:00
hausner@google.com 784b159e2f Eliminate support for old raw string format
Review URL: https://codereview.chromium.org//11043010

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13145 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-02 21:54:46 +00:00
srdjan@google.com 9dd3e6229c Split flag --trace-deopt into --trace-deoptimization and --trace-deoptimization-verbose. Print source line and function where deoptimization occured.
Review URL: https://codereview.chromium.org//11054002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13138 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-02 20:40:26 +00:00
asiva@google.com 31fe6a2c79 Fix dartium build break.
Review URL: https://codereview.chromium.org//11043003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13132 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-02 19:06:52 +00:00
asiva@google.com 27e1b05914 Add isolate event handler setup in order to be able to propagate isolate
events (create/shutdown/interrupted)
Review URL: https://codereview.chromium.org//11026011

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13130 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-02 18:09:55 +00:00
srdjan@google.com 8c30b899e3 Do not trigger optimization on functions that are not optimizable (e.g. natives).
Review URL: https://codereview.chromium.org//11031016

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13128 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-02 17:45:13 +00:00
srdjan@google.com 9bcd3727e5 Remove temporary hack for throttling inlining.
Review URL: https://codereview.chromium.org//11034023

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13118 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-02 14:56:37 +00:00
fschneider@google.com 6632f191c4 Support for unboxed 64-bit integer bitwise operations and equality on ia32.
This CL adds AND, OR, XOR and == operations on unboxed 64-bit integers
(aka. mints).

Unboxed mints are stored in xmm registers. Each xmm register location
has an additional bit to keep track of its value representation.

Unboxed mints are materialized on the heap on deoptmization in the same way as
unboxed doubles.

The SSE instructions used are available on all CPUs that support SSE 4.1.
Review URL: https://codereview.chromium.org//10968059

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13112 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-02 11:25:53 +00:00
johnmccutchan@google.com d8df86d5b9 Intrinsify Float32Array_setIndexed on IA32 and X64
Review URL: https://codereview.chromium.org//11032011

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13093 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-02 00:44:25 +00:00
iposva@google.com 12a115ffbd - WeakProperty keys in other generations are black. Avoid trying to
set the watch bit on keys in the VM isolate or on keys that are
  non-heap objects (aka Smis).
- Add appropriate tests.
- Fixes example code from comment 2 in issue 5546.
Review URL: https://codereview.chromium.org//11038004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13090 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-01 22:28:02 +00:00
srdjan@google.com 844f18a3eb Enable inlining of control flow, increase code heap size 12 -> 18Mb (note that code will be moved to old space where it can grow). Print heap size at exit of VM using trace-isolates.
Code heap increase because of inline-control-flow (dart2js):

production mode: 4,143k -> 5,143k
checked mode: 10,789k -> 14,545k
Review URL: https://codereview.chromium.org//11035009

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13085 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-01 20:24:23 +00:00
srdjan@google.com 62f74c19c9 Revert r13022 (revert inlining of methods with control flow), Review URL: https://codereview.chromium.org//10979078; disable inlining of methods with control-flow so that we do not run out of heap space.
Review URL: https://codereview.chromium.org//11029002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13081 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-01 18:33:13 +00:00
johnmccutchan@google.com 4f193292df Enable Float32Array_getIndexed on X64 now that cvtss2sd is implemented
Merge remote-tracking branch 'git-svn'

Implement cvtss2sd and cvtsd2ss on X64

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13077 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-01 17:59:51 +00:00
srdjan@google.com 2724469384 Add integer negate back to list of intrinsified methods.
Review URL: https://codereview.chromium.org//11032003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13075 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-01 16:57:20 +00:00
zerny@google.com 792a5cbcee Added slow_assert macro and flag for slow development assertions in the VM.
R=kmillikin@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13069 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-01 14:27:45 +00:00
ager@google.com 7ce8d31093 Cleaning up in VM number hierarchy which was exposing a bunch
of implementation details as public methods.

The only remaining thing is that int and double have a pow
method in the VM which is not officially a part of corelib.
Maybe it should be so I have left that out of this change
and maybe we should add it to num and implement in dart2js
too?

R=sgjesse@google.com,lrn@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13066 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-01 13:31:18 +00:00
kmillikin@google.com d7115e5eda Remove deoptimization index PC descriptors.
Put the PC (offset) of the deoptimization point and the deoptimization
reason in the DeoptInfo table.  The table entries are now triples of
(PC offset, info, reason).

R=srdjan@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13056 260f80e4-7a28-3924-810f-c04153c831b5
2012-10-01 10:16:22 +00:00
srdjan@google.com a2d8d4c1dc The real fix of float32.
Review URL: https://codereview.chromium.org//10987103

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13047 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-28 23:20:57 +00:00
srdjan@google.com b8a2d9f283 Fix broken x64 build temporarily. cvtss2sd missing on x64.
Review URL: https://codereview.chromium.org//11013003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13046 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-28 23:17:06 +00:00
johnmccutchan@google.com 3c93a72008 Intrinsify Float32Array_getIndexed on IA32 and X64.
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13044 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-28 23:02:20 +00:00
srdjan@google.com 04d28f2ed1 Convert MOD to AND for power-of-two positive constants.
Review URL: https://codereview.chromium.org//10982095

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13040 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-28 20:14:05 +00:00
srdjan@google.com a5e9100c46 Inline String isEmpty, refactor inlining of intrinsics.
Review URL: https://codereview.chromium.org//10993023

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13032 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-28 17:40:29 +00:00
kmillikin@google.com c4e717264d Revert several inlining related changes.
Revert svn revisions r12990, r12991, r12995, and r13000.  Increased inlining
leads to excessive code growth, preventing dart2js to run in checked mode.
The changes will be relanded when we can come up with improved size
thresholds.

R=ngeoffray@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@13022 260f80e4-7a28-3924-810f-c04153c831b5
2012-09-28 13:50:17 +00:00