Ryan Macnak
eca0d72abe
Provide a logical view of VM-internal maps in Observatory.
...
BUG=http://dartbug.com/20551
BUG=http://dartbug.com/21185
R=koda@google.com
Review URL: https://codereview.chromium.org//1150103005
2015-06-02 11:38:39 -07:00
Daniel Andersson
6090af8f0b
Serialize maps without hashes.
...
Re-generate the indices after deserialization.
This is a more compact representation, and also fixes the issue with identity hash codes not being portable between isolates.
BUG=21675
R=asiva@google.com
Review URL: https://codereview.chromium.org//1151013005
2015-06-02 09:04:37 -07:00
Srdjan Mitrovic
b611952ead
Prevent excessive deoptimization when optimistically assuming Smi in typed data stores.
...
Moved ICData ahead of class Function, since class Function needs type ICData::DeoptReasonID.
BUG=
R=fschneider@google.com
Review URL: https://codereview.chromium.org//1149403005
2015-06-01 11:42:42 -07:00
Srdjan Mitrovic
d7d0d92ec3
Do not eagerly add guarded leaf classes with CHA; do not add them for private names.
...
BUG=
R=rmacnak@google.com
Review URL: https://codereview.chromium.org//1158673004
2015-05-29 08:57:34 -07:00
Daniel Andersson
ea46192ca3
VM-internalize the default Map implementation.
...
Make the compact linked hash map, which is the default implementation for Map
(including map literals), a VM-internal class.
This makes it easy to have more efficient serialization of maps (although for
now, the implementation is straight-forward).
Refactor the compact hash class hierarchy to enable the VM-internal class and
the rest (also the Set classes) to share a maximal amount of code, by using
two different bases for implicit/explicit fields.
Remove existing proof-of-concept, C++-based internal VM-class.
BUG=http://dartbug.com/22982
R=asiva@google.com
Review URL: https://codereview.chromium.org//1151523002
2015-05-28 09:32:54 -07:00
Srdjan Mitrovic
91651f8805
Remove value check from ICData checks/house-keeping
...
BUG=
R=johnmccutchan@google.com , vegorov@google.com
Review URL: https://codereview.chromium.org//1153963002
2015-05-27 13:17:28 -07:00
John McCutchan
baa34257fc
Track prologue offset of Code and use for more precise return addresses
...
- Remember the prologue offset in the Code object.
- Size of Code object does not change.
- Use the prologue offset to assist in locating the return address of the current frame.
- Prologue offset + instruction pattern matching will be accurate for all Dart code, most intrinsic prefixed Dart code, and some stub code.
- By default only collect Dart frames (normal Dart developers only care about Dart frames)
R=srdjan@google.com
Review URL: https://codereview.chromium.org//1150633002
2015-05-21 18:35:19 -07:00
Ryan Macnak
300a2f34cf
Delta encode pc descriptors, and combine pc kind and try index into single field.
...
328.3kB -> 126.8kB (-61.4%) mirrors_reader_test
Avoid quadratic var-int decoding in extracting edge counters by decoding once into a temporary list.
R=fschneider@google.com
Review URL: https://codereview.chromium.org//1128183007
2015-05-18 11:04:45 -07:00
asiva@google.com
05d7eb5dfa
Move symbol table from per isolate snapshot to vm isolate snapshot, this reduces the per isolate initial heap size
...
from New space (0k of 1024k) Old space (1274k of 1536k)
to New space (0k of 1024k) Old space (756k of 1280k)
R=hausner@google.com
Review URL: https://codereview.chromium.org//1123813002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45795 260f80e4-7a28-3924-810f-c04153c831b5
2015-05-14 20:14:37 +00:00
johnmccutchan@google.com
f01c1490f7
Revert 45783
...
BUG=
Review URL: https://codereview.chromium.org//1138993005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45784 260f80e4-7a28-3924-810f-c04153c831b5
2015-05-14 00:32:32 +00:00
johnmccutchan@google.com
95515238cc
Move 'dart:profiler' contents into 'dart:developer' and remove 'dart:profiler'
...
BUG=
R=iposva@google.com
Review URL: https://codereview.chromium.org//1139503002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45783 260f80e4-7a28-3924-810f-c04153c831b5
2015-05-13 23:48:04 +00:00
rmacnak@google.com
848ad67ee1
Revert "Delta encode pc descriptors."
...
32% regression on dart2js. Edge counters need to be redone first.
Review URL: https://codereview.chromium.org//1136953015
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45776 260f80e4-7a28-3924-810f-c04153c831b5
2015-05-13 20:24:47 +00:00
asiva@google.com
579fc0fd2e
Some more cleanup of the finger print checking code.
...
R=iposva@google.com
Review URL: https://codereview.chromium.org//1136163002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45742 260f80e4-7a28-3924-810f-c04153c831b5
2015-05-12 18:14:18 +00:00
rmacnak@google.com
ab784887a7
Delta encode pc descriptors.
...
328.3kB -> 160.1kB (-51.2%) for mirrors_reader_test
R=fschneider@google.com
Review URL: https://codereview.chromium.org//1129113002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45715 260f80e4-7a28-3924-810f-c04153c831b5
2015-05-11 20:27:21 +00:00
asiva@google.com
8f9eee3f22
- Use conditional code inclusion for the dart_no_snapshot and dart executables using the MACRO DART_NO_SNAPSHOT
...
- Do some minor modifications to the intrinsifier code to not do redundant fingerprint checks and avoid code duplication.
These changes result in a text segment size savings of about 110k.
Old Sizes:
text data bss dec hex filename
3801418 7696 19261 3828375 3a6a97 (TOTALS)
New sizes:
text data bss dec hex filename
3690342 7696 19261 3717299 38b8b3 (TOTALS)
Review URL: https://codereview.chromium.org//1134623004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45704 260f80e4-7a28-3924-810f-c04153c831b5
2015-05-11 18:31:55 +00:00
johnmccutchan@google.com
1f851efdbb
Rename 'dart:debugger' to 'dart:developer'
...
- Rename 'dart:debugger' to 'dart:developer'
- Make 'breakHere' and 'breakHereIf' top level functions.
R=iposva@google.com
Review URL: https://codereview.chromium.org//1132113002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45658 260f80e4-7a28-3924-810f-c04153c831b5
2015-05-08 21:24:57 +00:00
rmacnak@google.com
7be0dddfca
Remove dead --use_jscre flag.
...
Review URL: https://codereview.chromium.org//1135833003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45655 260f80e4-7a28-3924-810f-c04153c831b5
2015-05-08 20:31:37 +00:00
srdjan@google.com
3744661bc4
Lazily generate local var descriptors.
...
R=hausner@google.com
Review URL: https://codereview.chromium.org//1128803002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45581 260f80e4-7a28-3924-810f-c04153c831b5
2015-05-07 04:16:50 +00:00
johnmccutchan@google.com
a19cd071e5
Add 'dart:debugger' library
...
- Add the 'dart:debugger' library.
- Add the 'Debugger' class.
- Add explicit Dart breakpoint triggered by a call to: Debugger.breakHere();
- Add Debugger.breakHereIf(bool expr)
R=hausner@google.com , turnidge@google.com
Review URL: https://codereview.chromium.org//1116263004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45529 260f80e4-7a28-3924-810f-c04153c831b5
2015-05-05 17:05:37 +00:00
rmacnak@google.com
26548a2f3d
Remove some duplication in code that extracts the source for a function.
...
R=asiva@google.com
Review URL: https://codereview.chromium.org//1071703002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45145 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-14 19:41:38 +00:00
fschneider@google.com
4aa1febbe6
Eliminate object table and use regular object pool for deoptimization infos.
...
On platforms that already use an object pool, we had a separate object table
used only for deoptimization infos. With this CL we don't have separate
tables, but only use the common object pool for both purposes.
R=vegorov@google.com
Review URL: https://codereview.chromium.org//1073173003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45108 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-13 15:43:58 +00:00
iposva@google.com
320b0e5541
- Remove JSCRE from the runtime.
...
R=vegorov@google.com
Review URL: https://codereview.chromium.org//1071713003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44987 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-08 23:59:23 +00:00
vegorov@google.com
3062d3bae0
Compress deopt instructions in memory using variable length encoding.
...
Remove DeoptInfo type entirely and store compressed instructions in the TypedData.
BUG=
R=fschneider@google.com , iposva@google.com
Review URL: https://codereview.chromium.org//1054393003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44966 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-08 13:08:36 +00:00
fschneider@google.com
9709db7f76
VM: Add infrastructure to support deferred generation of unoptimized code.
...
Add deferred deoptimization instructions for return address, pc marker and
object pool pointer. This enables generating unoptimized code lazily
on deoptimization.
This CL does not change the way unoptimized code is generated or collected
yet, but just provides the mechanisms needed. This can be used to allow
code GC for the unoptimized code of optimized functions.
R=iposva@google.com
Review URL: https://codereview.chromium.org//1052563003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44934 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-07 12:32:22 +00:00
rmacnak@google.com
ecdee95907
Separate is_debuggable and is_visible again. The outer async functions (that produce the Futures or Streams) should be visible but not debuggable. Visible so their frames are included in stacktraces for return type errors during checked mode. Not debuggable so breakpoints are resolved to the function that implements the async body.
...
BUG=http://dartbug.com/22891
R=hausner@google.com
Review URL: https://codereview.chromium.org//1033483002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44646 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-23 20:26:05 +00:00
koda@google.com
e3a345a84b
Rename NoGCScope -> NoSafepointScope.
...
The old name makes less sense in the context of concurrent GC (and multiple threads in general).
Document the intended semantics of this (DEBUG-only) guard scope.
R=asiva@google.com
Review URL: https://codereview.chromium.org//1016503005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44616 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-20 22:08:25 +00:00
koda@google.com
92a8c39d3c
Keep zone cached in SnapshotReader to allow removing ZoneHandle(Isolate*) interface.
...
Add a StackZone around API snapshot reading call.
Also remove CheckedHandle(Isolate*) interface by migrating its users to Zone*.
R=asiva@google.com
Review URL: https://codereview.chromium.org//1012333002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44580 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-19 17:42:40 +00:00
rmacnak@google.com
3b8bed46a8
Display ICData entries at call sites, with links to the targets and guarded classes. Implement service response for call site data for the same targets as coverage. Fix JSONifying ICData for super calls.
...
BUG=
Review URL: https://codereview.chromium.org//1000933004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44564 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-18 20:28:26 +00:00
koda@google.com
9c181ec6d5
Thread/Isolate refactoring: new(Isolate*) -> new(Zone*)
...
Refactor all remaning cases where the current zone is used through new(Isolate*) and remove this interface.
Removing this interface is needed to move towards multiple threads per isolate, and also makes the caller more aware of the scope of the zone used, reducing the risk of use-after-free.
Make the current thread and the stack zone created around native/runtime entries directly available in their body, saving an indirection (and optimized away if unused).
R=iposva@google.com
Review URL: https://codereview.chromium.org//982873004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44541 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-17 19:24:26 +00:00
rmacnak@google.com
e1bbc90322
Display call site data for functions.
...
- Requested with coverage data, only in function view for now.
- Adjust token position associated with ICData to correspond to the identifier instead of the open paren.
- Fix JSONifying ICs for static/constructor calls.
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//977283002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44476 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-13 20:44:41 +00:00
srdjan@google.com
5692c024bb
Fix crash in x64: handler's pc-offset must be in 32-bit uword range ( x64 -1 is out of range). Use kInvalidPcOffset = 0.
...
R=iposva@google.com
Review URL: https://codereview.chromium.org//1007513003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44443 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-12 21:40:05 +00:00
regis@google.com
87790063a4
Fix finalization of cyclic mixin types (issue 22666).
...
Add regression test.
R=asiva@google.com
Review URL: https://codereview.chromium.org//988903003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44306 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-07 00:25:25 +00:00
asiva@google.com
cfb2df1020
Fix for issue 20992 - Allow sending static/top-level functions to other isolates which are spawned using the 'spawn function' functionality.
...
R=regis@google.com
Review URL: https://codereview.chromium.org//982723002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44297 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-06 18:50:19 +00:00
hausner@google.com
9a6ed9a718
Implement async* functions in VM
...
R=iposva@google.com
Review URL: https://codereview.chromium.org//944893005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44185 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-03 17:49:53 +00:00
johnmccutchan@google.com
78ad7f347b
Improved profiler view and inclusive profile tree
...
TableTree improvements:
- Row's have flex-box divs in each table cell.
- To represent depth in tree a colored vertical bar for each depth level is shown
- Expanding tree nodes is now asynchronous and animates.
- Change cursor during tree expansion.
Observatory Profiler improvements:
- Improved appearance.
- Support for inclusive (main first) call trees.
- Replace tooltip hover with info toggle.
- Visual icon attributes for code, functions and call tree nodes.
- Fetching / Load status display.
- Cleaned up Code and Function kinds.
Profiler improvements:
- When not profiling the VM (--profile-vm) only walk the stack when we are in Dart code or have exited Dart code. This removes some native stack walker noise.
- Build inclusive (main first) call trees and send across service.
Notes for analyzer team:
Analyzer command line:
./out/ReleaseIA32/dart --keep-code --trace-profiler --profile-depth=128 --observe out/ReleaseIA32/dart-sdk/bin/snapshots/dartanalyzer.dart.snapshot --dart-sdk=out/ReleaseIA32/dart-sdk pkg/compiler/lib/src/dart2js.dart
Profiler settings:
- Tags: None or VM
- Mode: Function
- Direction: Bottom up
R=asiva@google.com , rmacnak@google.com
Review URL: https://codereview.chromium.org//965593002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44152 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-02 23:01:43 +00:00
koda@google.com
010eb4c72e
Fix array-out-of-bounds in TypedDataView::ElementSizeInBytes.
...
Also add index bounds checking for the lookup table.
R=iposva@google.com
Review URL: https://codereview.chromium.org//949343002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44101 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-27 18:52:18 +00:00
rmacnak@google.com
8b6a6a1e4f
Add ClassMirror.isEnum.
...
BUG=http://dartbug.com/21718
R=asiva@google.com , gbracha@google.com
Review URL: https://codereview.chromium.org//938513002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44035 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-26 01:13:50 +00:00
iposva@google.com
7d1785e760
- Allow any implementation of StackTrace to participate in async/
...
await exception handling.
R=hausner@google.com
Review URL: https://codereview.chromium.org//940863002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43880 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-19 16:17:19 +00:00
iposva@google.com
606687a6d2
Fixes http://dartbug.com/22305
...
- Increase the size of the preallocated stack trace to give
more context in the case of stack overflow.
R=asiva@google.com
Review URL: https://codereview.chromium.org//933193002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43867 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-19 05:16:15 +00:00
iposva@google.com
db9faebe98
- Simplify collection of stack traces. If we determine that a stack
...
trace is needed we collect the full stack trace instead of piecing
it together as we walk up the stack.
R=rmacnak@google.com
Review URL: https://codereview.chromium.org//939773003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43863 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-19 02:18:53 +00:00
rmacnak@google.com
446137ff5e
Add getCallSiteData to the VM service.
...
Review URL: https://codereview.chromium.org//920113002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43740 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-12 20:55:33 +00:00
rmacnak@google.com
4de5f89b99
Rename IsConstructor to IsGenerativeConstructor.
...
This matches the terminology in the spec, and it avoids confusion with the function kind kConstructor, which indicates either a generative constructor or a factory constructor.
R=johnmccutchan@google.com
Review URL: https://codereview.chromium.org//910313002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43673 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-11 00:59:19 +00:00
srdjan@google.com
81d8099650
Redesign inlining interval computation.
...
Review URL: https://codereview.chromium.org//904763003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43622 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-09 23:11:05 +00:00
iposva@google.com
6898a10c93
- Make sure to fail early if an non-stacktrace is passed into the VM
...
where we expect one.
Review URL: https://codereview.chromium.org//908433002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43546 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-06 09:23:57 +00:00
hausner@google.com
2487c76886
Add support for sync* and yield and yield*
...
R=srdjan@google.com
Review URL: https://codereview.chromium.org//888463004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43516 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-05 18:36:40 +00:00
regis@google.com
a5ee233d1b
Make Bigint instances immutable by removing all setters.
...
This required rewriting a large portion of bigint.dart.
R=rmacnak@google.com
Review URL: https://codereview.chromium.org//842033005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43492 260f80e4-7a28-3924-810f-c04153c831b5
2015-02-04 23:56:23 +00:00
lrn@google.com
ab51ccc9f0
Create string efficiently from Uint16List/View.
...
R=asiva@google.com , fschneider@google.com
Review URL: https://codereview.chromium.org//864463002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43235 260f80e4-7a28-3924-810f-c04153c831b5
2015-01-28 12:44:44 +00:00
fschneider@google.com
b79f717e89
VM: Use PC offset instead of absolute PC in exception handler info.
...
Similar to the change I did for PC descriptors: We can save space by
using a uint32_t for the offset, instead of a uword for the absolute pc.
R=srdjan@google.com
Review URL: https://codereview.chromium.org//868103002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43138 260f80e4-7a28-3924-810f-c04153c831b5
2015-01-26 15:40:06 +00:00
koda@google.com
99127744c6
Add Zone-based handle allocation interface and reduce use of Isolate-based interfaces.
...
Remove deprecated Isolate-based BitVector constructor.
R=asiva@google.com
Review URL: https://codereview.chromium.org//868913002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43136 260f80e4-7a28-3924-810f-c04153c831b5
2015-01-26 14:54:02 +00:00
rmacnak@google.com
db79e9cca6
Rename is_visible to is_reflectable; use is_debuggable instead of is_reflectable to decide whether to filter a frame from stack traces.
...
Merge verbose_stacktrace flag into show_hidden_frames.
Don't mark native functions as non-debuggable (breakpoints don't actually work there now but nothing goes wrong).
BUG=
Review URL: https://codereview.chromium.org//868453002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@43121 260f80e4-7a28-3924-810f-c04153c831b5
2015-01-23 21:16:40 +00:00