Commit Graph

7455 Commits

Author SHA1 Message Date
Matthias Hausner 7e82552124 Make local var assignments debuggable in checked mode
BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2352993003 .
2016-09-20 17:31:22 -07:00
James Robinson 8a53ba91de Stop using deprecated (names of) magenta syscalls.
R=jamesr@chromium.org

Review URL: https://codereview.chromium.org/2355953004 .
2016-09-20 15:55:51 -07:00
Matthias Hausner 631a48600b Fix debug break on assignment to global variable
Make sure a debug break is also inserted in checked mode.

BUG=#27287

Review URL: https://codereview.chromium.org/2351373002 .
2016-09-20 14:57:05 -07:00
Matthias Hausner 0dd760092d Add debugger safe point on assignment to global variables
Just like we do for local variables, add a debug step check (and
thus a breakpoint location) to global variable assignment if
the right side of the assignment has no possible breakpoint locations.

BUG=#27287
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org/2354773002 .
2016-09-20 14:05:45 -07:00
Regis Crelier b91d74172a Make sure unresolved function type parameter bounds do not end up in snapshot.
Read and write parent_level field of function type parameters in snapshots.
Update TypeParameter::ToCString() to handle function type parameters.
Address Siva's comments in previous cl.

R=asiva@google.com

Review URL: https://codereview.chromium.org/2359543003 .
2016-09-20 13:18:01 -07:00
Florian Schneider cd05ee0c81 VM: Fix canonicalization of old-space allocated instances
Instances of objects allocated in old-space would not get canonicalized properly,
resulting in duplicates of these instances on the heap.

This can be e.g. argument descriptors allocated in the background compiler thread.

This also fixes the same issue occurring with isolate reload.

Also, add a NoSafepointScope for consistency.

BUG=#27364
R=asiva@google.com

Review URL: https://codereview.chromium.org/2351613005 .
2016-09-19 17:27:05 -07:00
John McCutchan 500f4e4e7d Fix VM test Service_IsolateStickyError
BUG=

Review URL: https://codereview.chromium.org/2356613002 .
2016-09-19 15:26:25 -07:00
Regis Crelier 11562f6874 Support generic method syntax (fixes #25869).
Function type parameters are parsed and resolved, but mapped to malformed types
(i.e. dynamic) until full support is implemented.

R=hausner@google.com

Review URL: https://codereview.chromium.org/2349593003 .
2016-09-19 15:17:33 -07:00
Ryan Macnak 7432d20eaa Fix IsCompiletimeErrorObject for precompiled.
R=hausner@google.com

Review URL: https://codereview.chromium.org/2350973002 .
2016-09-19 14:11:29 -07:00
John McCutchan 632c76942c Add Dart_GetStickyError
- [x] Add Dart_GetStickyError.
- [x] Change Dart_SetStickyError to allow for null and also not set the pause on exit bit.

BUG=
R=turnidge@google.com

Review URL: https://codereview.chromium.org/2350633003 .
2016-09-19 13:31:09 -07:00
Ryan Macnak 5ecc880ffc Remove assumption from the heap verifier that objects occupy a narrow range of the address space.
Fixes #27373.

R=zra@google.com

Review URL: https://codereview.chromium.org/2349023002 .
2016-09-16 15:41:47 -07:00
Florian Schneider 9f00ce2b6e VM: Fix for deadlock with background tasks.
We have to do NotifyAll whenever a task finishes.

Also, remove thread notifications when a task is created, since we only ever wait for tasks to finish.

BUG=#27365
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2349853002 .
2016-09-16 15:03:36 -07:00
John McCutchan b961fc01ad Fix bad commit of stale patch set of original CL "Make NoReloadScope thread safe" (https://codereview.chromium.org/2344193002/)
BUG=

Review URL: https://codereview.chromium.org/2344263002 .
2016-09-16 11:33:43 -07:00
John McCutchan d113638891 Make NoReloadScope thread safe
Fixes #27366

BUG=
R=fschneider@google.com

Review URL: https://codereview.chromium.org/2344193002 .
2016-09-16 11:18:36 -07:00
Matthias Hausner be003d70f2 Fix Windows build
BUG=

Review URL: https://codereview.chromium.org/2342303003 .
2016-09-16 11:16:50 -07:00
Zachary Anderson 5348efba7d Skip heap verify on 64-bit with an app snapshot
See issue: https://github.com/dart-lang/sdk/issues/27373

R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2348793004 .
2016-09-16 10:41:19 -07:00
Matthias Hausner 3e0d13bc28 Make compile-time errors catchable
If an error happens during the compilation of a function body, an Error is thrown which can be intercepted, and ensures that finally blocks are executed before the isolate is terminated.

The language spec is vague about compilation errors. A doc describing the intentions behind this CL is at
https://docs.google.com/document/d/1_MWOgwJadLCQSBps0zD6Rj5dG4iP1UBuiDvTMH-WMzI/edit#

Example:
     1	void bad() {
     2	    return 5
     3	}
     4
     5	void main(args) {
     6	    bad();
     7	}

Before this CL:
$ dart ~/tmp/e.dart
'file:///Users/hausner/tmp/e.dart': error: line 2 pos 11: semicolon expected
  return 5
          ^
$

After this change:
$ dart ~/tmp/e.dart
Unhandled exception:
'file:///Users/hausner/tmp/e.dart': error: line 2 pos 11: semicolon expected
  return 5
          ^

#0      main (file:///Users/hausner/tmp/e.dart:6:3)
#1      _startIsolate.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:259)
#2      _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:148)
$

Notice that the stack trace points to the call site of bad(), not the text location of the syntax error. That's not a bug. The location of the syntax error is given in the error message.

BUG= https://github.com/dart-lang/sdk/issues/23684
R=asiva@google.com, lrn@google.com

Review URL: https://codereview.chromium.org/2044753002 .
2016-09-16 10:10:38 -07:00
Ryan Macnak 47cc06ae66 Shrink AOT snapshot size and memory usage.
- Conditionally remove fields of Code, Function and ICData that are not used in the AOT runtime.
 - Don't include RawClosureData.context_scope_ in AOT snapshots.
 - Remove parameter names not needed for method resolution.
 - Remove parameter types not needed for function type tests.
 - Deduplicate parameter name and parameter type lists.
 - Shrink and share the initial MegamorphicCache table.

Flutter gallery (IsolateSnapshotReader event)
snapshot size 2731129 -> 2199999 (-19.4%)
initial heap  7899568 -> 5433176 (-31.2%)

R=fschneider@google.com

Review URL: https://codereview.chromium.org/2326483005 .
2016-09-15 15:06:42 -07:00
Ryan Macnak 872b38ef4e Exclude clustered snapshot writer from AOT runtime.
product, stripped, precompiled runtime
4862848 -> 4760663 (-2.1%)

R=fschneider@google.com

Review URL: https://codereview.chromium.org/2346713002 .
2016-09-15 09:24:07 -07:00
Zachary Anderson bc1dc06687 DBC: Double converstion instructions
R=fschneider@google.com

Review URL: https://codereview.chromium.org/2341683003 .
2016-09-15 09:18:32 -07:00
Zachary Anderson 360d55b4f6 DBC: Another allocation fast path
R=fschneider@google.com

Review URL: https://codereview.chromium.org/2335363002 .
2016-09-14 10:24:58 -07:00
Florian Schneider 743fe92c49 VM: Better handling of OOM errors in the background compiler
Don't expect to find a Dart frame on the stack when an exception
occurs in background compilation.  Propagate OOM error as an
unhandled exception, and disable optimization for the function
where it occurred.

BUG=#27206
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2341523002 .
2016-09-13 17:13:49 -07:00
Matthias Hausner 3e60d48842 Fix parsing of generic closure formal parameter
BUG=#27299
R=regis@google.com

Review URL: https://codereview.chromium.org/2341493002 .
2016-09-13 15:11:10 -07:00
Zachary Anderson 7d01ca5e0d DBC: A couple allocation fastpaths.
R=fschneider@google.com

Review URL: https://codereview.chromium.org/2331033003 .
2016-09-13 10:21:27 -07:00
Matthias Hausner 3829c00e10 Improve compile time constant evaluation
Eliminate the need to invoke an execute-once function to compute
type literals and implicit closures. This reduces the number of
execute-once invocations from 6000 to 60 when compiling all of
the greentea sources, about 1MB of generated code. Sadly, no
significant runtime gain was observed.

Also simplify the caching of computed compile-time constants.

Reinstate the compiler stat counter for number of constants cached.

BUG=
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2338463003 .
2016-09-12 16:23:00 -07:00
Adam Barth 22010919e9 Update to use mx_process_self()
The map and unmap calls now need mx_process_self() instead of zero as the
process handle.
2016-09-12 14:06:33 -07:00
Florian Schneider 60e6faa7c3 VM: Zero-cost try-finally with an empty finally-block.
Consider code like

try {
    something();
} finally {
    assert(expr);
}

The compiler de-sugars this into

try {
  something();
} catch (_) {
  rethrow;
} finally {
  assert(expr);
}

In unchecked mode this leaves an empty finally-block, but we would still
have the overhead of the try-catch. This CL avoids this unnecessary overhead
by making try-finally with an empty finally zero-cost.

BUG=#27274
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2322853003 .
2016-09-09 14:00:47 -07:00
Zachary Anderson dbcd602b18 Adds InitialRSS benchmark
Measuring memory footprint of the VM after initialization.

R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2329003002 .
2016-09-09 09:47:56 -07:00
Ryan Macnak 3a63f4890c Fix some errors from UBSan.
R=fschneider@google.com

Review URL: https://codereview.chromium.org/2325863002 .
2016-09-09 09:28:27 -07:00
Ryan Macnak 6137d020b9 AOT: Use a cid range check when possible to implement type tests.
R=fschneider@google.com

Review URL: https://codereview.chromium.org/2314133003 .
2016-09-08 15:25:08 -07:00
Ryan Macnak 1bc2b04198 Fix bug in AOT compiler where we would propogate a result type for instances calls where the target is not known.
Interacted with cid range checks to incorrectly reduce

foo(x) => (x * 1.0) is double;

to

foo(x) { x * 1.0; return true; }

R=fschneider@google.com

Review URL: https://codereview.chromium.org/2325753002 .
2016-09-08 14:36:28 -07:00
John McCutchan 079ced0367 Fix Windows build
BUG=

Review URL: https://codereview.chromium.org/2323073002 .
2016-09-08 12:32:34 -07:00
John McCutchan ea535f2d9b Fix Mac build
BUG=

Review URL: https://codereview.chromium.org/2320183002 .
2016-09-08 11:32:38 -07:00
John McCutchan ed3f4f2dfe Record Timeline to Android Systrace
- [x] Add TimelineEventSystraceRecorder (enabled via --systrace_timeline or --timeline_recoder=systrace)
- [x] Support Begin, End, and Counter events
- [x] Unit test Systrace serialization

BUG=
R=chinmaygarde@google.com, rmacnak@google.com

Review URL: https://codereview.chromium.org/2315353004 .
2016-09-08 11:28:34 -07:00
Ryan Macnak 0e2850a124 Separate size stats for rodata and instructions.
R=fschneider@google.com

Review URL: https://codereview.chromium.org/2316513005 .
2016-09-06 16:57:13 -07:00
Florian Schneider a80ea01c8c Fix VM product build (linker error)
TBR=rmacnak@google.com,

Review URL: https://codereview.chromium.org/2317883002 .
2016-09-06 15:16:37 -07:00
Florian Schneider c9e1c3dd05 VM: Compute static guarded cid for final instance fields.
Before the tree-shaking pass, iterate over final field initializers
and try to compute the static type.

R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2300873002 .
2016-09-06 14:59:53 -07:00
Todd Turnidge ec6d9efc38 Fix an off-by-one error in vmservice expression evaluation.
Closes #25973

R=hausner@google.com

Review URL: https://codereview.chromium.org/2298773003 .
2016-09-06 12:50:14 -07:00
Zach Anderson 78eed0f9a2 Turn off trace_shutdown flag for Windows
Review URL: https://codereview.chromium.org/2300343004 .
2016-09-02 15:34:53 -07:00
Zach Anderson d640f6ae49 Turn on trace shutdown flag on Windows
There are flaky crashes on the Windows bots that look like they are
happening during shutdown. Temporarily turn on the trace shutdown flag
to help investigate.

R=asiva@google.com

Review URL: https://codereview.chromium.org/2308653002 .
2016-09-02 10:12:53 -07:00
Ryan Macnak 7c74db24ca The psuedo-objects are not instances: give them cids above kInstanceCid.
R=asiva@google.com

Review URL: https://codereview.chromium.org/2301143002 .
2016-09-02 09:34:39 -07:00
Ryan Macnak 5f2ea64b13 Remove dead code for writing ICData entries.
R=cbernaschina@google.com

Review URL: https://codereview.chromium.org/2307673002 .
2016-09-01 15:58:32 -07:00
Matthias Hausner c15bac4812 Ensure that constant field initializers are canonicalized
In const constructors, field initializer values that are known
to be compile-time constants should be evaluated and canonicalized
at compile time.

BUG=#27164
R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2300113002 .
2016-09-01 13:23:20 -07:00
Ryan Macnak 3aa65a66d2 Assign external sizes to external strings and to external typed data created by the VM.
Observatory used to report that dart2js hello was using no external memory, but now reports 1.3MB of external memory (all token streams).

R=asiva@google.com

Review URL: https://codereview.chromium.org/2275803002 .
2016-09-01 10:56:40 -07: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
Todd Turnidge cd8292d175 Don't return negative token positions in stack traces.
Closes #27128

R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2294883004 .
2016-08-31 16:22:18 -07:00
Ryan Macnak ba94427eb1 AOT: When a call goes polymorphic but has a single target, transition to a stub that does a cid range check.
Expand the range on a miss if all classes in the range have the same lookup result, otherwise transition to the stub that does a linear scan of ICData.

Because we do a depth-first sort of classes during AOT, if a call site sees only objects all inheriting the same function as the call target, the call site will be handled by this new stub.

Adjust LoadClassIdMayBeSmi on x64 to preserve the object.

R=fschneider@google.com

Review URL: https://codereview.chromium.org/2279563002 .
2016-08-31 11:12:22 -07:00
Florian Schneider 5dfa8a863c VM: Fix polymorphic inlining of recognized methods in the JIT.
Also, clean up the inlining white list: [] and []= operators are inlined
specially as recognized methods and don't need to be in the always-inline list.

R=rmacnak@google.com

Review URL: https://codereview.chromium.org/2297033002 .
2016-08-30 16:25:09 -07:00
Ryan Macnak c80b23b7ff Fix evaluating in async/sync*/async* methods.
Fixes #27167.

R=hausner@google.com

Review URL: https://codereview.chromium.org/2291293003 .
2016-08-30 15:16:57 -07:00
Florian Schneider 442fa8e7bc VM: Remove unecessary dead code from flow-graph builder.
We already recognize typed list factories and mark them
using is_known_list_constructor_.

BUG=
R=vegorov@google.com

Review URL: https://codereview.chromium.org/2293103002 .
2016-08-30 11:14:40 -07:00