Commit Graph

3741 Commits

Author SHA1 Message Date
johnmccutchan@google.com 727d29d6b6 Refactor VM service IDs:
- IDs are strings which can be concatenated together like paths.
- Isolate ID is now "/isolates/XXX"
- Function, field, class, library, and script IDs are now stable.
- Introduce <type-ref> tags.

R=turnidge@google.com

Review URL: https://codereview.chromium.org//98253009

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31358 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-20 22:35:55 +00:00
turnidge@google.com 383468782e Keep track of current "pause" event in the debugger.
This will allow us (later) to make nice descriptions of the state of
an isolate, e.g. "isolate 7112 is paused due to breakpoint 2" or
"isolate 7112 is paused due to interrupt" or "isolate 7112 is
running".

Use a new Pause() function to call the event handler during a pause.
It does some shared checking, setup, teardown.

Minor change in isolate interrupt handling - before we were not
setting 'in_event_handler_' in this case.  Now we set 'pause_event_'
here, which will guard against recursive pauses in this case.

Reviewer: not sure what I think about all the names I used here.
"pause_event_" is very similar to PausedEvent but means something
different, as it includes pauses, interrupts, and (maybe) exceptions.
Dunno.

R=hausner@google.com

Review URL: https://codereview.chromium.org//118603002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31356 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-20 22:30:23 +00:00
srdjan@google.com cd92319223 Optimize string length one comparisons by comparing char codes only. Implemented for one byte strings only at the moment. Will add other string types/mixed compares later.
R=fschneider@google.com

Review URL: https://codereview.chromium.org//105143011

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31347 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-20 20:11:38 +00:00
zra@google.com 3508d336dd Simplifies standalone VM Android build.
This change also avoids the need to
do another 'gclient runhooks' when switching
between Android and Linux builds, and between
IA32 and ARM Android builds.

gyp does not allow 'libraries' sections inside of
configurations. Therefore, since some architecture
specific paths, libraries, etc. must be specified
on the Android NDK's linker command line, to avoid
re-gyping when switching between Android IA32 and ARM,
this change moves the architecture specific linker
flags to a script, android_link.py.

To avoid re-gyping when swtiching between Linux and
Android, this change creates new configurations
that specify the target OS as well as the the target
architecture, e.g. ReleaseLinuxARM or ReleaseAndroidARM
instead of ReleaseARM.

This change also adds a --toolchain flag to build.py,
and removes obsoleted logic for setting up the Android
build.

R=iposva@google.com

Review URL: https://codereview.chromium.org//105223002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31340 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-20 17:51:34 +00:00
regis@google.com 3bdeaf9813 Add missing ResolveType call (fix issue 15738).
Remove unused parameter from ResolveType.

Review URL: https://codereview.chromium.org//113163008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31336 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-20 14:26:53 +00:00
fschneider@google.com e994d8b697 Revert r31326.
TBR=johnmccutchan@google.com,

Review URL: https://codereview.chromium.org//118133004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31332 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-20 12:21:09 +00:00
fschneider@google.com fe726e1971 Use parallel move resolver for optimized try-catch.
This CL has no change in functionality and is purely clean up and
refactoring. Instead of manually generating the moves at throwing
instructions in try-catch, construct a parallel move and use the resolver
to emit the native code. This eliminates a lot of duplicated code
from all platforms.

It will also allow to re-use stack space that is currently allocated
separately for each individual try-catch in a function.

I added a few more unrelated minor changes in various parts of the VM
* Simpilify guard code generation
* Resolve refactoring TODO in deoptimization
* Improve names

R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org//119213002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31326 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-20 09:41:42 +00:00
regis@google.com b5a2dea566 Convert InstantiatedTypeArguments to TypeArguments upon canonicalization.
R=iposva@google.com

Review URL: https://codereview.chromium.org//106793007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31325 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-20 09:20:55 +00:00
fschneider@google.com 21d0b251e0 Update double unboxing heuristic.
R=srdjan@google.com

Review URL: https://codereview.chromium.org//119103002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31324 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-20 09:18:40 +00:00
asiva@google.com 491035987f Change Dart_GetNativeBooleanArgument to use class Ids and direct
pointer comparision of the singleton objects to determine value.

R=rmacnak@google.com

Review URL: https://codereview.chromium.org//113763004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31311 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-20 00:15:13 +00:00
asiva@google.com a576fec3c0 Allow the native resolver to setup whether it needs the Dart API scope to
be setup automatically or not when a native function is invoked.
This would allow the embedder to treat some native functions as leaf
functions whose invocation can be very light.

R=hausner@google.com, zra@google.com

Review URL: https://codereview.chromium.org//117723002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31286 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-19 17:47:56 +00:00
johnmccutchan@google.com 50ef680923 Bucket unknown symbols by PC and demangle native symbols
R=iposva@google.com

Review URL: https://codereview.chromium.org//100133004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31247 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-19 00:29:51 +00:00
johnmccutchan@google.com 397a9a56e5 Add flag to control profiler rate
R=asiva@google.com

Review URL: https://codereview.chromium.org//118673002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31244 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-18 23:11:20 +00:00
iposva@google.com bceaf4b1eb - Promote objects early when a large percentage is being
copied during a scavenge.

R=zra@google.com

Review URL: https://codereview.chromium.org//98693010

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31238 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-18 20:52:35 +00:00
turnidge@google.com b640712e6b Handle vmservice messages while at breakpoint.
Allow rudimentary inspection of breakpoints from vmservice.

R=hausner@google.com, johnmccutchan@google.com

Review URL: https://codereview.chromium.org//113513004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31233 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-18 17:45:17 +00:00
srdjan@google.com 761d4d04cd Constant propagation in LoadIndexed when inputs are array/string and index constants.
R=fschneider@google.com, johnmccutchan@google.com

Review URL: https://codereview.chromium.org//102973007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31230 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-18 16:55:12 +00:00
fschneider@google.com f7149b05c8 Fix bug in double unboxing.
The state bit that record if a field is unboxed or not has to be checked
in unoptimized code as well, since that code does not change when deoptimizing.

I also compacted the kind_bits bit field in the Field class to start from bit 0.

R=srdjan@google.com

Review URL: https://codereview.chromium.org//106623006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31229 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-18 15:46:39 +00:00
fschneider@google.com 16098ce25a Fix invalid aliasing in type propagation of AssertAssignable.
We have to create a copy when computing the initial type for AssertAssignable
instead of using the CompileType of the input operand. Aliasing can cause
invalid elimination of checks after strengthening of asserts.

R=srdjan@google.com

Review URL: https://codereview.chromium.org//102283004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31227 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-18 15:30:07 +00:00
zra@google.com aa4c080b5c Adds CPU message type to vm service.
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org//98253007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31209 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-17 22:22:12 +00:00
asiva@google.com 64a261fbbd Changes to interpret the optimizable bit based on whether the function
is native or not.

R=srdjan@google.com

Review URL: https://codereview.chromium.org//101753005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31207 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-17 22:07:41 +00:00
iposva@google.com 1e8061f060 - Remove the reply_port from the VM internal message object.
- Adjust all the uses of this API.

R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org//93873015

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31205 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-17 21:11:18 +00:00
rmacnak@google.com 7809fb4276 Remove dead isLocalPort from the VM mirrors implementation.
Review URL: https://codereview.chromium.org//115153007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31199 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-17 18:02:14 +00:00
iposva@google.com f39a3dc75f - Use named constant kNullable instead of true.
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org//105403008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31198 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-17 17:42:26 +00:00
zra@google.com 2d5603c93b Fixes Unimplemented crasher on MIPS.
R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org//108533005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31197 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-17 17:34:09 +00:00
iposva@google.com e100129f8e - Use canonicalized type of non-parameterized classes when
available.
- Do not attempt to make types for objects of Context.

R=fschneider@google.com, regis@google.com

Review URL: https://codereview.chromium.org//102053010

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31194 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-17 16:59:14 +00:00
johnmccutchan@google.com a961710bfa Fix signed unsigned comparison error
BUG=

Review URL: https://codereview.chromium.org//98333008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31193 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-17 16:57:18 +00:00
johnmccutchan@google.com dc217a8aa0 Fix crash walking call stack on Linux.
BUG=
R=asiva@google.com

Review URL: https://codereview.chromium.org//116703003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31192 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-17 16:48:55 +00:00
johnmccutchan@google.com 4a65b869d0 Only interrupt thread don't record sample. Narrowing in on flaky crash on Linux.
TBR

Review URL: https://codereview.chromium.org//113133010

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31175 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-16 22:35:55 +00:00
johnmccutchan@google.com cd10e1cc75 Remove reference to ucontext_t until other Signal related functions on Android are implemented.
Review URL: https://codereview.chromium.org//103403007

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31173 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-16 20:54:19 +00:00
srdjan@google.com 92e7e69b46 The name of InternalError class has changed to _InternalError.
Review URL: https://codereview.chromium.org//102763003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31172 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-16 20:05:00 +00:00
johnmccutchan@google.com dafc13d57f Add missing include file for Android build
Review URL: https://codereview.chromium.org//116013003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31171 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-16 19:54:46 +00:00
johnmccutchan@google.com 919dc2d6eb * Introduce ThreadInterrupter which calls a TLS set callback when thread is interrupted.
* Threads can only register and unregister themselves with ThreadInterrupter.
* Profiler is no longer involved in interrupting threads. It's just a callback and the buffer.
* Profiler operates lock free using an atomic operation to reserve sample in sample buffer.
* Linux, Mac, and Windows done.

R=asiva@google.com

Review URL: https://codereview.chromium.org//109803002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31170 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-16 18:52:15 +00:00
fschneider@google.com 6abd6e326e Add mutable double boxes for fields.
This allows the optimizing compiler to generate unboxed loads/stores
to fields containing double values. The double value is stored
in a reusable double object.

Unboxed loads/stores are generated for optimized code. Unoptimized code
allocates a new double on loads. To avoid performance regressions
for fields that are only written few times (e.g. only in the constructor)
I put a heuristic in place that
compares the usage count of setters and getters. Unboxed operations
are only generated if the setter is invoked a significant amount of
times (threshold is 10% of getter invocations).

The CL is so big because it changes the way LocationSummmary
is allocated: We now have a bit to generate different summaries
for optimized and unoptimized code.

R=srdjan@google.com

Review URL: https://codereview.chromium.org//99573005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31164 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-16 15:11:31 +00:00
ajohnsen@google.com 7d4e2f9ac8 Alternative Timer implementation using simply list-based priority heap.
The current implementation is not memory-optimized yet, to make it
easier to review.

BUG=
R=fschneider@google.com, lrn@google.com, sgjesse@google.com

Committed: https://code.google.com/p/dart/source/detail?r=31132

Review URL: https://codereview.chromium.org//99203010

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31158 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-16 12:56:37 +00:00
turnidge@google.com 365cde2ecb Add GrowableObjectArray::ToUserCString().
Prints a decent representation of a list, subject to length
constraints.  Prints the length of the list if it is truncated.

e.g.

[]
[1,2,3]
["0123456789",...](length:4)

R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org//100603011

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31144 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-13 19:36:40 +00:00
rmacnak@google.com e5d7ada6e9 VM: Support calling through getters in InstanceMirror.delegate.
Implement without accessing private members of dart:core. Fix language test expecting wrong return value.

BUG=http://dartbug.com/15138
R=fschneider@google.com

Review URL: https://codereview.chromium.org//114713002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31140 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-13 18:33:45 +00:00
srdjan@google.com 98a1355ef9 Restoring the remaining CL 104893003. For instance call representing numerical comparisons and binary operations (double and Smi supported for now) that were never visited before optimization occurs, we guess the cids if one of the argument cids is known, e.g. ‘a == 1’ we guess that a is also going to be 1 thus avoiding emitting an IC-call in optimized code and propagating the type accordingly.
Remove AssertAssignableInstr::RecomputeType as it may cause incorrect behavior: it changes the type of its value based on input, the graph below will then incorrectly remove CheckSmi.

v27 <- BinaryMintOp:14(..

v28 <- AssertAssignable(v27)
CheckSmi(v28)
v17 <- BinarySmiOp:86(+, v28, v12)

R=fschneider@google.com

Review URL: https://codereview.chromium.org//114543004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31137 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-13 17:15:05 +00:00
floitsch@google.com 0c8ac24661 Isolate.spawn{Uri} only reports errors asynchronously.
It is generally considered bad style to throw synchronous and asynchronous errors. This CL catches all synchronous errors and reports them in the asynchronous future that is returned.

R=iposva@google.com, lrn@google.com

Review URL: https://codereview.chromium.org//88783002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31131 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-13 13:05:28 +00:00
turnidge@google.com 7781fd4759 Remove old stack-walking code. The new code seems to be doing fine.
R=hausner@google.com

Review URL: https://codereview.chromium.org//113953003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31111 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-12 21:33:25 +00:00
regis@google.com fb6d24945f Introduce class TypeRef in the VM to fully support recursive types.
Fix issues 15244, 15148, 14869, 14000, and 13688 (was closed, but fragile).

Note that the current solution is not final as it may not be correct in more
complex cases not yet covered by language tests.
The final solution will require a 'trail' instead of a simple mark bit to
prevent operations involving recursive types to diverge.

R=asiva@google.com

Review URL: https://codereview.chromium.org//103913005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31087 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-11 22:51:19 +00:00
srdjan@google.com d1485f3058 Some cleanups, fixes. Parts of the cid guessing CL that was revrted.
R=fschneider@google.com

Review URL: https://codereview.chromium.org//112243002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31085 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-11 22:25:38 +00:00
turnidge@google.com 21b867f851 Add an instance view page to the vmservice.
We can use this view to browse the field values of objects and explore
the heap a bit.

----------

Add field lists to the class and instance view pages.

Add field-ref and instance-ref elements.

R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org//110703002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31074 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-11 18:03:42 +00:00
srdjan@google.com 92c6188860 Revert r31036, because of bit redness.
Review URL: https://codereview.chromium.org//101373006

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31039 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-10 21:16:02 +00:00
srdjan@google.com 07775d340e For instance call representing numerical comparisons and binary operations (double and Smi supported for now) that were never visited before optimization occurs, we guess the cids if one of the argument cids is known, e.g. ‘a == 1’ we guess that a is also going to be 1 thus avoiding emitting an IC-call in optimized code and propagating the type accordingly.
R=fschneider@google.com

Review URL: https://codereview.chromium.org//104893003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31036 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-10 19:09:44 +00:00
hausner@google.com 55c283a672 Transmit breakpoint id on paused event
Breakpoint callback get an additional parameter to receive the id of the breakpoint that was hit, or 0 if the debugger pauses due to stepping.

R=turnidge@google.com

Review URL: https://codereview.chromium.org//110913002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31029 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-10 17:41:05 +00:00
zra@google.com 3fd0e585d3 Fixes bug in far branches on MIPS.
Also increases test coverage of far branches on
ARM and MIPS.

R=regis@google.com

Review URL: https://codereview.chromium.org//107293008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31024 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-10 16:43:06 +00:00
fschneider@google.com be4ffc62d6 VM: Generalize using propagated cids for to >1 arguments.
When ic-data are missing (optimized code that was not executed yet),
the compiler tries to fill in information calculated with type propagation.
The approach was only used for calls with 1 tested argument. This
enables it for all calls where we want to use propagated type
information if ic-data are missing.

R=srdjan@google.com

Review URL: https://codereview.chromium.org//110703004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31020 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-10 15:23:14 +00:00
turnidge@google.com 29b080a4b1 Add Instance::ToUserCString.
-----

Often ToCString returns a representation which would be weighty or
unsightly to users.  Instance::ToUserCString tries to return a
representation that will be more familiar to end users.

ToUserCString will be used in the vmservice to produce interesting
instance preview strings w/o calling toString.  No doubt we will find
other uses for it too.

For example, strings are represented more as they would be in a user
program, with quotes and escapes: ("this\nis\ta\n\ntest") instead of (this
is        a

test).

I intend to add better representations for short lists and maps
later, e.g. ([1,2]) instead of (Instance(length:2) of '_GrowableList').
I've added some tests to track current behavior.

Fix a problem where the vm internal names for private classes were
leaking out through ToCString.  This is problematic because Dart's
default toString relies on ToCString (which surprised me).  This fix
will be user-visible and, darn it, it's the right thing to do.  For
example, before toString (in Dart) might yield:

  Instance of '_MyPrivateClass@43df89GARBAGE4389'

Now it will yield:

  Instance of '_MyPrivateClass'

(as an aside, do those single-quotes around the class name add any
meaning here?)

Massage the output of ToString for GrowableObjectArray to be more
consistent with other instance ToString output.  This should not be user
visible, as lists define a reasonable toString.

R=johnmccutchan@google.com

Review URL: https://codereview.chromium.org//100833005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30996 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-09 19:47:23 +00:00
hausner@google.com 00589271c5 Fix source location of mixins in stack trace
We need to use the origin library, not the owner library,
for the source location of functions. This fixes issue 15185.

R=turnidge@google.com

Review URL: https://codereview.chromium.org//108903002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30970 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-06 22:06:15 +00:00
hausner@google.com cea1acc8a1 Fix assignable syntax analysis
My previous change has a bug in it that I didn’t trip over
because I ran test with a version that masked the assertion with
a compilation error.

R=srdjan@google.com

Review URL: https://codereview.chromium.org//107023002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30909 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-05 19:15:00 +00:00