Ryan Macnak
b0f203db19
[vm-service] Include external sizes in the allocation table.
...
Bug: https://github.com/dart-lang/sdk/issues/30380
Change-Id: Ieec5adf13548b73bac886816d4a2174de7585880
Reviewed-on: https://dart-review.googlesource.com/7685
Commit-Queue: Ryan Macnak <rmacnak@google.com >
Reviewed-by: Todd Turnidge <turnidge@google.com >
2017-09-25 18:33:07 +00:00
Régis Crelier
b3a7dd6e9d
[VM generic function reification] Support generic functions in Invocation class.
...
Make VM object TypeArguments a Dart instance.
Add a test verifying that noSuchMethod works with generic functions.
R=floitsch@google.com , rmacnak@google.com
Review-Url: https://codereview.chromium.org/3007603002 .
2017-08-28 17:00:39 -07:00
Ryan Macnak
466385ceb6
[vm, gc] Require a safepoint for heap iteration.
...
Assert a safepoint operation can only be started from a thread in the VM state. Fix several unit tests missing a native-to-vm transition.
R=asiva@google.com , danunez@google.com
Review-Url: https://codereview.chromium.org/2995543004 .
2017-08-07 17:51:25 -07:00
Zachary Anderson
6cd8a79078
VM: Re-format to use at most one newline between functions
...
R=asiva@google.com
Review-Url: https://codereview.chromium.org/2974233002 .
2017-07-13 08:08:37 -07:00
Erik Corry
c6a199e40b
Sort class IDs before training AppJIT snapshots
...
R=fschneider@google.com , rmacnak@google.com
BUG=
Review-Url: https://codereview.chromium.org/2699853002 .
2017-02-20 12:14:17 +01:00
Siva Annamalai
d77809e15f
Fix the following tsan errors:
...
1. Race updating the allocation stats for a class
WARNING: ThreadSanitizer: data race (pid=16346)
Write of size 8 at 0x7bac00011930 by thread T4:
#0 dart::AllocStats<long>::AddOld(long, long) /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/class_table.h:56 (dart+0x000000769278)
#1 dart::ClassTable::UpdateAllocatedOld(long, long) /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/class_table.cc:423 (dart+0x00000076923a)
#2 dart::Object::Allocate(long, long, dart::Heap::Space) /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/object.cc:1880 (dart+0x00000092ddff)
#3 dart::Array::New(long, long, dart::Heap::Space) /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/object.cc:21586 (dart+0x00000098d3fd)
Previous write of size 8 at 0x7bac00011930 by thread T3:
#0 dart::AllocStats<long>::AddOld(long, long) /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/class_table.h:56 (dart+0x000000769278)
#1 dart::ClassTable::UpdateAllocatedOld(long, long) /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/class_table.cc:423 (dart+0x00000076923a)
#2 dart::Object::Allocate(long, long, dart::Heap::Space) /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/object.cc:1880 (dart+0x00000092ddff)
#3 dart::Array::New(long, long, dart::Heap::Space) /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/object.cc:21586 (dart+0x00000098d3fd)
#4 dart::Array::New(long, dart::Heap::Space) /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/object.cc:21575 (dart+0x000000932f6d)
2. Race while updating c++ table entry into Object::builtin_vtables_
WARNING: ThreadSanitizer: data race (pid=16346)
Atomic write of size 8 at 0x00000210c970 by main thread:
#0 __tsan_atomic64_compare_exchange_val <null> (dart+0x0000005bad8a)
#1 dart::AtomicOperations::CompareAndSwapWord(unsigned long*, unsigned long, unsigned long) /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/atomic_linux.h:63 (dart+0x00000074b744)
#2 dart::ClassTable::Register(dart::Class const&) /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/class_table.cc:127 (dart+0x000000767cbc)
#3 dart::Isolate::RegisterClass(dart::Class const&) /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/isolate.cc:170 (dart+0x0000008e0046)
#4 dart::RawClass* dart::Class::New<dart::Array>() /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/object.cc:2037 (dart+0x000000931055)
Previous read of size 8 at 0x00000210c970 by thread T3:
#0 dart::ClassTable::Register(dart::Class const&) /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/class_table.cc:130 (dart+0x000000767cc9)
#1 dart::Isolate::RegisterClass(dart::Class const&) /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/isolate.cc:170 (dart+0x0000008e0046)
#2 dart::RawClass* dart::Class::New<dart::Array>() /usr/local/google/home/asiva/workspace/dart-ws3/sdk/out/DebugX64/../../runtime/vm/object.cc:2037 (dart+0x000000931055)
BUG=
R=regis@google.com
Review-Url: https://codereview.chromium.org/2602123002 .
2016-12-29 13:20:58 -08:00
Zachary Anderson
a1bcf051d8
clang-format runtime/vm
...
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org/2481873005 .
2016-11-08 13:54:47 -08:00
Ryan Macnak
bff1351a22
Address additional comments re class id sorting.
...
R=asiva@google.com
Review URL: https://codereview.chromium.org/2305493002 .
2016-08-31 17:38:20 -07:00
Ryan Macnak
6a5a868a4e
AOT: Reassign class ids so class hierarchies have contiguous ranges.
...
R=fschneider@google.com
Review URL: https://codereview.chromium.org/2281263002 .
2016-08-26 16:17:05 -07:00
Carlo Bernaschina
b0582b3bb7
Converted Observatory heap-profile element
...
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org/2255613002 .
2016-08-17 15:51:38 -07:00
Ryan Macnak
6b5f29fb70
Reload: Don't free the saved class table while another thread may be reading it.
...
Fixes #27016 .
R=asiva@google.com , johnmccutchan@google.com
Review URL: https://codereview.chromium.org/2240283002 .
2016-08-12 16:12:25 -07:00
Ryan Macnak
9470c085c3
Fix allocation stats for cross-compiled AOT targeting ARM or MIPS.
...
Resolves disagreement between SIMARM and ARM on the size of ClassHeapStats. Fixes assertion failures in AllocStats::Verify.
R=fschneider@google.com
Review URL: https://codereview.chromium.org/2172803002 .
2016-07-21 16:04:57 -07:00
Ryan Macnak
4914592fbd
Initialize non-product members of ClassTable.
...
R=fschneider@google.com
Review URL: https://codereview.chromium.org/2143243002 .
2016-07-12 14:53:54 -07:00
Ryan Macnak
a6f954b0f3
Don't track allocations in product mode.
...
R=fschneider@google.com
Review URL: https://codereview.chromium.org/2143153002 .
2016-07-12 14:15:02 -07:00
Zachary Anderson
a503570e3a
Fuchsia: Initial check-in.
...
Instructions to build and run are in README.fuchsia.
R=asiva@google.com
Review URL: https://codereview.chromium.org/2117593002 .
2016-07-01 12:42:05 -07:00
Florian Schneider
46f8b02dbb
VM: Don't generate allocation stats code in product mode.
...
They are not needed since there is no observatory/profiling support
in product mode.
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/2105383003 .
2016-06-30 13:35:40 -07:00
Ryan Macnak
524fbc1e0f
Use clustered serialization for full snapshots.
...
Retain the recursive-descent format for script and message snapshots.
Flutter gallery app on a Nexus 4
- Snapshot, excluding instruction/rodata sections 3429177 -> 2874997B (-16%)
- InitOnce 54.1 -> 8.4ms (-84%)
- InitializeIsolate 374.3 -> 170.8ms (-54%)
R=asiva@google.com
Review URL: https://codereview.chromium.org/2032153003 .
2016-06-29 19:50:06 -07:00
Ryan Macnak
3f8c0bb0a9
Don't overload FreeListElement for become.
...
R=asiva@google.com , johnmccutchan@google.com
Review URL: https://codereview.chromium.org/2026643004 .
2016-06-02 10:57:34 -07:00
Siva Annamalai
c45ebeba70
Fix some potential data races based on output from tsan.
...
R=zra@google.com
Review URL: https://codereview.chromium.org/1765533003 .
2016-03-04 13:35:25 -08:00
Ryan Macnak
4b112c6d25
Precompilation: drop unused types and type arguments and empty classes and libraries.
...
precompiled dart2js arm 20748837 -> 20639848 (-0.52%)
precompiled flutter asteriods arm64 8926398 -> 8782136 (-1.6%)
R=regis@google.com
Review URL: https://codereview.chromium.org/1686773002 .
2016-02-22 14:05:03 -08:00
Srdjan Mitrovic
ee55c3c9ef
Minor work for background compilation
...
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1702093002 .
2016-02-16 11:16:47 -08:00
John McCutchan
d295b9c311
Remove many features when building product mode
...
Move all JSON printing code from object.cc to object_service.cc.
Not compiled in:
- Service protocol
- Debugger
- Debugger API
- JSONStream
- ObjectIdRing
- Profiler service
- Object JSON printing
Size of dart_bootstrap before: 5670365 bytes
Size of dart_bootstrap after: 5287631 bytes
Reduction in size: 382734 bytes.
R=rmacnak@google.com
Review URL: https://codereview.chromium.org/1660063002 .
2016-02-05 09:55:51 -08:00
Srdjan Mitrovic
354fcb12cf
Cleanups. More mutator thread asserts.
...
BUG=
R=asiva@google.com
Review URL: https://codereview.chromium.org/1448463004 .
2015-11-16 10:29:01 -08:00
Daniel Andersson
b62e3204ed
Make old-space heap stats safe for parallel marking.
...
Record live count/size stats locally in each marking task and sum the
results at the end.
This is needed for parallel (and later, concurrent) marking.
This also yields a more compact representation of
the stats compared to ClassHeapStats, which interleaves new/old/etc.
BUG=
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//1346333003 .
2015-09-16 15:09:05 -07:00
John McCutchan
ec675a3b0d
Enable allocation tracing for classes owned by vm isolate
...
- Don't store the allocation tracing toggle bit in the class.
- Make sure that array and context slow path stubs are added to the code object's static call table.
- Add missing MaybeTraceAllocation to context allocation stub.
R=fschneider@google.com
Review URL: https://codereview.chromium.org//1292723002 .
2015-08-14 06:55:05 -07:00
Florian Schneider
8d38a58c18
Make array allocation stub shared between isolates.
...
This allows to make the last explicitly named stubs shared between isolates.
When sharing code stubs, we can't do patching at their entry anymore.
Therefore, I had to remove patching support of the array allocation stub.
Is this a functionality we want to keep?
The change is mostly performance-neutral because optimized code has an inlined fast
path for array allocation and only uses the stub for the slow-case.
The only isolate-specific stubs left are object allocation stubs which are
associated with their Class are per-isolate.
Since this CL removes any isolate-specific stubs from StubCode, it becomes AllStatic.
BUG=
R=koda@google.com
Review URL: https://codereview.chromium.org//1247783002 .
2015-07-23 12:56:16 +02:00
Florian Schneider
0cf617ef13
VM: Refactor allocation stats code and remove duplicate code.
...
Make context allocation stub shared between isolates.
The fast-path used in optimized code still has isolate-specific
addresses inlined for performance reasons.
Common functions are moved into class_table.h/.cc.
This is a preparation for adding an isolate-independent version of the
allocation code and allocation tracking code.
BUG=
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//1241863002 .
2015-07-17 15:15:33 +02:00
John McCutchan
598c67001b
Update Assembler::TryAllocate to support inline allocation tracing
...
- Track whether class allocation should be traced in existing ClassHeapStats structure.
- Emit compare and branch at top of ::TryAllocate
These changes appear to be performance neutral.
An alternative approach is to deoptimize all code that inlined allocations for a specific class. I do not think this is a good approach because we will spoil the water- allocations that aren't occurring in the (optimized steady state) running program will appear in the allocation profile. This will make the data much less actionable bordering on misleading. The approach used in this CL will guarantee the allocation profile aligns with the actual running program.
R=regis@google.com , srdjan@google.com
Review URL: https://codereview.chromium.org//1213013002 .
2015-07-10 12:19:01 -07:00
turnidge@google.com
ca5de9eac9
Kill service_test.cc tests in favor of dart tests for the service protocol.
...
Associated cleanups and fixes that I noticed as I rewrote the tests.
Review URL: https://codereview.chromium.org//1090293003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45257 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-17 21:08:02 +00:00
johnmccutchan@google.com
57ea35671c
Add getClassList RPC
...
BUG=
Review URL: https://codereview.chromium.org//895093002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43414 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-03 17:59:45 +00:00
johnmccutchan@google.com
172baa03ff
Service isolate rework take 2
...
Review URL: https://codereview.chromium.org//889443002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43306 260f80e4-7a28-3924-810f-c04153c831b5
2015-01-29 18:31:27 +00:00
johnmccutchan@google.com
db271b0477
Revert r43217, r43215, r43208, r43207, and r43202.
...
Reverting because of some isolate spawn issues (on Windows, and pub bots).
Review URL: https://codereview.chromium.org//867113003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43219 260f80e4-7a28-3924-810f-c04153c831b5
2015-01-27 22:56:18 +00:00
johnmccutchan@google.com
66aa470fc6
* Create vm-service isolate at Dart_Initialize time.
...
* Remove Service create callback.
* Simplify creation of service isolate.
* Creation is done on thread pool.
* Use vm-service isolate for loading in standalone embedder.
* Remove import of dart:io from builtin library.
performance changes:
no service isolate:
$ ./tools/test.py -m release
Test configuration: none_vm_release_ia32
[01:27 | 100% | +12363 | - 0]
$ ./tools/test.py -m release
Test configuration: none_vm_release_ia32
[01:27 | 100% | +12363 | - 0]
always start service isolate (as a thread pool task):
$ ./tools/test.py -m release
Test configuration: none_vm_release_ia32
[01:45 | 100% | +12363 | - 0]
$ ./tools/test.py -m release
Test configuration: none_vm_release_ia32
[01:44 | 100% | +12363 | - 0]
service does I/O (calls to Dart_LoadScript block until service is running):
$ ./tools/test.py -m release
Test configuration: none_vm_release_ia32
[01:55 | 100% | +12363 | - 0]
$ ./tools/test.py -m release
Test configuration: none_vm_release_ia32
[01:55 | 100% | +12363 | - 0]
R=asiva@google.com
Review URL: https://codereview.chromium.org//584023004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43202 260f80e4-7a28-3924-810f-c04153c831b5
2015-01-27 19:45:48 +00:00
koda@google.com
d4481420e0
Copy-on-write class table for concurrent reading.
...
Make ClassTable::At thread safe by keeping old copies of the class table.
They can be safely deallocated during the stop-the-world phase of GC.
This avoids making a copy for every sweeper task, and is the first step towards removing the fake Isolate workaround.
R=iposva@google.com
Review URL: https://codereview.chromium.org//816773005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43048 260f80e4-7a28-3924-810f-c04153c831b5
2015-01-21 18:13:12 +00:00
koda@google.com
f346d2ec7a
Fix allocation stats bug on ARM; add unit test.
...
Also add sanity checks to ClassHeapStats.
Array allocation stub was using an address instead of a size for the allocation size.
R=zra@google.com
Review URL: https://codereview.chromium.org//747463002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@41862 260f80e4-7a28-3924-810f-c04153c831b5
2014-11-20 19:20:17 +00:00
iposva@google.com
2ee3263277
- Add and enable concurrent sweeper.
...
- Keep separate lists for normal sized executable and data pages.
R=koda@google.com
Review URL: https://codereview.chromium.org//503363005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39593 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-27 13:37:55 +00:00
koda@google.com
015211b474
Track per-class promotion stats.
...
This will be useful for allocation policy and heap growth policy.
Also include these stats in the VM service.
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//487973002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39415 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-20 17:57:12 +00:00
koda@google.com
bd979f84d5
Send allocation stats with each class and show in class view.
...
For each class, if there are any allocations, shows current number of instances, shallow size, and the already existing link for retained size.
Also refactor code in ClassTable to reduce duplication.
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//345543003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37566 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-20 20:17:42 +00:00
johnmccutchan@google.com
452545ddcd
Visual refresh of allocation profile page
...
- Redo layout of page.
- Show human readable strings for used, free, and external memory for each space.
- Track time of last forced GC/accumulator reset in isolate and display them in allocation profile page.
- Track allocation statistics on Class object itself.
- Make isolate's heap reporting use heap's PrintToJSON.
- Manually insert allocation profile table rows into dom (removes usage of template repeat).
- Add some timing information to allocation profile page update (to help diagnose slow downs).
Other changes:
- Upgrade to Polymer 0.11-dev (finally ends erroneous console spam).
- Replace enteredView/leftView with attached/detached (polymer change).
- Add <link> tag to polymer.html for each element (polymer change).
- Move <script> tag outside of element (uniformity, clarity).
- Remove unused collapsible-content element.
R=koda@google.com
Review URL: https://codereview.chromium.org//342513004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@37456 260f80e4-7a28-3924-810f-c04153c831b5
2014-06-18 17:39:37 +00:00
turnidge@google.com
9243ffc4ff
Always use the same json for null in the vm service.
...
PrintToJSONStream -> PrintJSON.
ALSO:
Fix <em> tags in the Observatory.
BUG=
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//257053003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35532 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-29 18:10:02 +00:00
koda@google.com
00ae3f7848
Fix accumulated size stats for fixed-size instances.
...
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//249843003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35321 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-23 18:17:03 +00:00
koda@google.com
f6fa809628
Check for class id overflow to exit rather than crash.
...
BUG=dart:18284
R=iposva@google.com , rmacnak@google.com
Review URL: https://codereview.chromium.org//243133004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@35170 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-18 16:42:01 +00:00
koda@google.com
9a8671276b
Add class and address information to heap map; display on hover.
...
Display a string like "String @ 0xe97c3328" while hovering over the map.
Also add page separators (black).
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//204103009
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34195 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-20 18:56:45 +00:00
johnmccutchan@google.com
6edd276df8
Switch Observatory to use only ServiceObject instances.
...
All fetched objects are upgraded to a ServiceObject.
ServiceObjectCache.
Uniform updating / refreshing.
Fix UTF8 string escaping in TextBuffer (should fix invalid character bug https://code.google.com/p/dart/issues/detail?id=16590 )
R=turnidge@google.com
Review URL: https://codereview.chromium.org//192443004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33541 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-11 17:48:09 +00:00
asiva@google.com
a01ab16991
1. When reading a full snapshot use the class id from the snapshot instead
...
of generating a new one. This ensures that assumptions made about the
class id when generating a snapshot will still hold in the version that
runs from a snapshot.
2. remove ObjectHistogram code as it is not used anymore and has been replaced
by VM service.
R=johnmccutchan@google.com , regis@google.com
Review URL: https://codereview.chromium.org//187133004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33340 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-05 19:24:02 +00:00
johnmccutchan@google.com
0f79171efb
Add user resetable accumulator to allocation profiler.
...
Display aggregate of new and old space in a separate table.
Speed up display of tables by 10x.
Fix heap display bug (heap stats were always for new space).
Keep sort across refreshes.
R=turnidge@google.com
Review URL: https://codereview.chromium.org//173013004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33220 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-03 15:39:06 +00:00
johnmccutchan@google.com
9ca09b50e7
Track live instance and allocation counts for classes.
...
R=iposva@google.com
Review URL: https://codereview.chromium.org//51653006
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31978 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-22 19:21:22 +00:00
johnmccutchan@google.com
c86bdc5bcf
Expose field data, use class id, and merge all collections into "objects"
...
R=asiva@google.com
Review URL: https://codereview.chromium.org//24075002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27684 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-20 00:59:42 +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
rmacnak@google.com
303a29b5ba
Move Null class out of the VM isolate.
...
BUG=http://dartbug.com/12071
BUG=http://dartbug.com/12128
BUG=http://dartbug.com/12319
BUG=http://dartbug.com/12337
R=iposva@google.com
Review URL: https://codereview.chromium.org//22638011
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25982 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-09 21:54:30 +00:00