Add flag --deoptimize-alot, which will lazily deoptimize all live optimized frames. Currently only the presence of deoptimization information is checked.
Add kDeoptAfter deoptimization point, which is the continuation for lazy deoptimization, after a call. Rename kDeopt to kDeoptBefore.
Removed a tests case that called into a native without properly setting up a Dart frame (Ok-d by Siva).
Native functions are not optimizable.
TODO: Split deoptimization information from DeoptimizationStubs. Check for redundant PcDescriptor information (what can be merged, especially at calls).
Review URL: https://chromiumcodereview.appspot.com//10885039
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11642 260f80e4-7a28-3924-810f-c04153c831b5
The Android target OS is based upon the existing Linux target OS.
The existing _linux source files have been copied to create
corresponding _android source files. The copies have been
modified as needed to adapt to differences between the Linux
platform and the Android platform.
Currently the dart vm binary builds on Linux and runs on x86 Android,
Simple test scripts execute correctly, but no formal testing has been
done.
The process for building the Dart VM for Android will be documented on
the Dart wiki.
BUG=
Review URL: https://chromiumcodereview.appspot.com//10823209
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11547 260f80e4-7a28-3924-810f-c04153c831b5
need for an 'extern "C"' declaration in raw_object.h, which broke
the Windows builds. Instead, a peer() method is added to the
RawExternalString*Object classes, and RawObject::ToAddr() is used
to fetch the address of these raw instances. This avoids the need
for Dart_ExternalStringGetPeer needing friend access to those classes.
Review URL: https://chromiumcodereview.appspot.com//10891036
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11540 260f80e4-7a28-3924-810f-c04153c831b5
Dart_ExternalStringGetPeer. This change is basically an unrolling
of the templates that previously defined the method, to reduce
the number of handles allocated.
This change is supported by the DartStringAccess VM benchmark, which
showed a ~20x improvement from the above change. Currently this
benchmark focuses on Dart_ExternalStringGetPeer, rather than String
performance in general.
Please review this carefully. Commented-out is a "NoGCScope no_gc_scope;"
line, which when enabled asserts that GC doesn't happen when this function
is called. However, one of the tests fails this check, though when I
set a breakpoint in gdb before the NoGCScope item is allocated, it's not
hit before the assertion fails. I commented out that line, in the hope
that more senior reviewers suggest improvements.
Review URL: https://chromiumcodereview.appspot.com//10897014
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11534 260f80e4-7a28-3924-810f-c04153c831b5
Using type-feedback in the flow graph builder to generate optimized
code violates the invariant that the initial flow graph of the
non-optimized version and the optimized version of a function
have to be identical.
Eliminating type checks based on type feedback has to be done later.
(e.g. after the flow graph optimizer and after type propagation
where we specialized operation based on type feedback)
BUG=dart:4797
Review URL: https://chromiumcodereview.appspot.com//10900024
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11515 260f80e4-7a28-3924-810f-c04153c831b5
This CL simplifies the code generation for branches: Each BranchInstr
wraps a comparison computation and we can reuse the code between the two
in many cases. Similar to BindInstr, most accessors forward to the wrapped
computation. One exception is the location summary, which is modified for
branches: The result location is removed since branches don't produce a result.
This way, it is easier to replace a comparison branch
with a specialized version and eliminate redundante checks before branches.
Review URL: https://chromiumcodereview.appspot.com//10887009
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11500 260f80e4-7a28-3924-810f-c04153c831b5
This is a request for comments. Do we want to expose library
prefixes like this? Is there a way to import with a prefix already
and lookup members?
The reason why I would like to do this is so that I can import the
user-supplied builtins library under a prefix. This will be a useful
first step to move the print function to corelib while preserving
the ability to patch in a print implementation via the builtins
library.
R=iposva@google.com,turnidge@google.com
BUG=
Review URL: https://chromiumcodereview.appspot.com//10867032
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11494 260f80e4-7a28-3924-810f-c04153c831b5
They are inserted by the flow-graph optimizer when specializing
array operations.
As a result, LoadIndexed and StoreIndexed can't deoptimize themselves
anymore. All checks happen before in check-instructions.
Redundant array bound checks can be eliminated by CSE if all operands
match.
Review URL: https://chromiumcodereview.appspot.com//10867086
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11433 260f80e4-7a28-3924-810f-c04153c831b5
external length available. We now pass a length with all messages in
the vm and verify that there is no mismatch with the length from the
Snapshot.
Fixed a bug in the use of ApiMessageReader. We were always manually
adding Snapshot::kHeaderSize to the data, but neglecting to subtract
kHeaderSize from the message length.
Added FullSnapshotWriter and MessageWriter classes.
Review URL: https://chromiumcodereview.appspot.com//10829444
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11413 260f80e4-7a28-3924-810f-c04153c831b5