When compiling all code, stop compiling after the first error.
Previously, we ignored compilation errors.
This was a feature wish so we can detect errors in libraries.
In fact, there are errors in the library, e.g. references
to non-existing top-level functions in utf16 code. And possibly
others. If this code gets checked in, any tests that depends on
--compile_all will break.
First problem:
'dart:utf': Error: line 607 pos 7: identifier 'is16BitCodeUnit' is not declared in this scope
if (is16BitCodeUnit()) {
^
If I hack that, the next one is:
'dart:utf': Error: line 613 pos 9: identifier 'utf16CodeUnitsToCodepoints' is not declared in this scope
utf16CodeUnitsToCodepoints(codeunits, 0, null, replacementCodepoint));
^
Didn't investigate any more than that...
Review URL: https://chromiumcodereview.appspot.com//9836064
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5835 260f80e4-7a28-3924-810f-c04153c831b5
- Fixed the bigint instance allocation path when full snapshots are read.
- JSRegExp objects are only serialized/deserialized in a message snapshot and
hence do not need that special path. There is an assertion in JSRegExp to
ensure that these objects are not part of a full snapshot.
Review URL: https://chromiumcodereview.appspot.com//9835074
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5802 260f80e4-7a28-3924-810f-c04153c831b5
Turn the depth-first traversal into a pass to discover the graph's basic
block structure. Record basic-block predecessors in the block entry
instructions. Also record the last instruction in a block in the block
entry instruction (giving constant-time access to the block's successors).
Also, record the depth-first spanning tree of the traversal to be used for
dominator computation.
R=srdjan@google.com
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com//9730003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5655 260f80e4-7a28-3924-810f-c04153c831b5
Local functions and function literals are unknown to the VM
until the enclosing function is compiled. This change introduces
a list of known closures per class, and a function to look up
the innermost closure at a given token index.
The debugger now checks whether there are newly discovered
closures when a function containing a pending breakpoint is
compiled. If necessary, the breakpoint is set to the inner
function.
Review URL: https://chromiumcodereview.appspot.com//9716004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5599 260f80e4-7a28-3924-810f-c04153c831b5
The Lengauer-Tarjan dominator/dominance frontier algorithm needs to
visit the blocks in reverse preorder (in the first pass) and preorder
(in the second). Compute that at the same time as postorder (e.g.,
using the same spanning tree).
Take this chance to make the flow graph visitors always operate on a
forward block ordering.
R=srdjan@google.com
BUG=
TEST=
Review URL: https://chromiumcodereview.appspot.com//9719003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5598 260f80e4-7a28-3924-810f-c04153c831b5
and the constructor case, as suggested in my review of
https://chromiumcodereview.appspot.com/9700003/
Examples of generated IL (first factory, second non-factory).
foo() { return new List<T>(); }
moo() { return new A<T>(); }
==== file:///home/regis/test.dart_A_foo
0: [target]
t0 <- LoadLocal(this)
t0 <- NativeLoadField(t0, 16)
t0 <- ExtractFactoryTypeArguments(t0)
t0 <- StaticCall(List., t0)
return t0
==== file:///home/regis/test.dart_A_moo
0: [target]
t0 <- #null
t1 <- LoadLocal(this)
t1 <- NativeLoadField(t1, 16)
t2 <- Pick(t1)
t2 <- ExtractConstructorTypeArguments(t2)
t0 := t2
t1 <- ExtractConstructorInstantiator(t1, t2)
t0 <- AllocateObject(Library:'file:///home/regis/test.dart' Class: A, t0, t1)
t1 <- Pick(t0)
t2 <- #3
StaticCall(A., t1, t2)
return t0
This change removes the computation that previously returned two values at the
cost of a some small code duplication. We could address this duplication by
exposing the computation recognizing the identity vector at the IL level and
implement a branch.
Review URL: https://chromiumcodereview.appspot.com//9703080
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5537 260f80e4-7a28-3924-810f-c04153c831b5
../runtime/platform/assert.h: In member function ‘void dart::DynamicAssertionHelper::Equals(const E&, const A&) [with E = int, A = uint64_t]’:
../runtime/vm/thread_pool_test.cc:64: instantiated from here
../runtime/platform/assert.h:98: error: comparison between signed and unsigned integer expressions
Review URL: https://chromiumcodereview.appspot.com//9704037
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5486 260f80e4-7a28-3924-810f-c04153c831b5
Prologue weak persistent handles are similar to weak persistent
handles but exhibit different behavior during garbage collections that
invoke the prologue and epilogue callbacks. While weak persistent
handles always weakly reference their referents, prologue weak
persistent handles weakly reference their referents only during a
garbage collection occurs that invokes the prologue and epilogue
callbacks. During all other garbage collections, prologue weak
persistent handles strongly reference their referents.
Review URL: https://chromiumcodereview.appspot.com//9655011
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@5445 260f80e4-7a28-3924-810f-c04153c831b5