herhut@google.com
616f2b5038
Model 'await for' as an explicit node in tree and fix its handling.
...
BUG= http://dartbug.com/23119
R=floitsch@google.com , johnniwinther@google.com
Review URL: https://codereview.chromium.org//1069983005
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45053 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-10 08:17:01 +00:00
sra@google.com
e360f87504
Fix order of parameters in intercepted generative constructor body.
...
When the receiver parameter is inserted at the front of the parameter list, some parameters may have already been inserted and others will be inserted later.
If none have already been inserted, then the subsequent parameters were being inserted in front of the receiver parameter. This is fixed by marking the receiver as the lastAddedParameter if it is the only one. This did not seem to affect 'this', presumably because the position of 'this' is immaterial since it is always removed from the JS function parameters.
R=sigmund@google.com
Review URL: https://codereview.chromium.org//1066303002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45048 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-10 03:18:05 +00:00
sra@google.com
0e68d32045
Improve error handling of JS-calls
...
- Accept juxtaposed strings for JS behavior since that can now be large.
- Give proper errors rather than scary internal errors.
R=floitsch@google.com
Committed: https://code.google.com/p/dart/source/detail?r=45013
Reverted: https://code.google.com/p/dart/source/detail?r=45021
Review URL: https://codereview.chromium.org//1071853002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45022 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-09 18:20:14 +00:00
sra@google.com
9e760fde6e
Improve error handling of JS-calls
...
- Accept juxtaposed strings for JS behavior since that can now be large.
- Give proper errors rather than scary internal errors.
R=floitsch@google.com
Committed: https://code.google.com/p/dart/source/detail?r=45013
Review URL: https://codereview.chromium.org//1071853002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45021 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-09 18:07:45 +00:00
sra@google.com
1293347d87
Improve error handling of JS-calls
...
- Accept juxtaposed strings for JS behavior since that can now be large.
- Give proper errors rather than scary internal errors.
R=floitsch@google.com
Review URL: https://codereview.chromium.org//1071853002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45013 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-09 15:55:32 +00:00
kmillikin@google.com
34fc9fb911
Refactor the try statement analysis results.
...
In the dart2js CPS backend, move the frontend-specific try statement
analysis results out of the frontend-independent IrBuilder and into the
frontend-specific IrBuilderVisitor.
BUG=
R=johnniwinther@google.com
Review URL: https://codereview.chromium.org//1075923002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45009 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-09 14:17:36 +00:00
floitsch@google.com
16b03eb41e
Use range-arguments to avoid sublist-iterable and sublists.
...
BUG= http://dartbug.com/23142
R=lrn@google.com
Review URL: https://codereview.chromium.org//1076793002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45008 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-09 13:59:20 +00:00
kmillikin@google.com
73938235ad
Propagate bailout messages from the CPS IR backends.
...
If there is a bailout message, propagate it out.
BUG=
R=asgerf@google.com
Review URL: https://codereview.chromium.org//1070023002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45007 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-09 13:34:10 +00:00
asgerf@google.com
08f7ee9410
Overhaul tree IR visitor and rename IR classes.
...
Changes in both IRs:
- ExecutableDefinition -> RootNode
- PassMixin has been removed and the Pass interface has been
reduced to a single rewrite(RootNode) method.
- ConstructorDefinition no longer subclasses FunctionDefinition.
Changes in the cps IR:
- RunnableBody -> Body
Changes in tree IR:
- RootNodes have "forEachBody" and "replaceEachBody" helper methods that
take care of the boilerplate for traversing roots and initializers.
- We now have visitors for initializers and root nodes. The RecursiveVisitor still
just visits statements and expressions since forEachBody takes care of the root
nodes and initializers.
- Initializers are no longer expressions. Why were they expressions?
- We now have a RecursiveTransformer class which behaves like RecursiveVisitor,
except visitors are expected to return a transformed node.
This removes a lot of boilerplate traversal from transformations.
R=kmillikin@google.com
Committed: https://code.google.com/p/dart/source/detail?r=45000
Reverted: https://code.google.com/p/dart/source/detail?r=45004
Review URL: https://codereview.chromium.org//1068243002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45006 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-09 13:18:53 +00:00
asgerf@google.com
115cbb06fc
Overhaul tree IR visitor and rename IR classes.
...
Changes in both IRs:
- ExecutableDefinition -> RootNode
- PassMixin has been removed and the Pass interface has been
reduced to a single rewrite(RootNode) method.
- ConstructorDefinition no longer subclasses FunctionDefinition.
Changes in the cps IR:
- RunnableBody -> Body
Changes in tree IR:
- RootNodes have "forEachBody" and "replaceEachBody" helper methods that
take care of the boilerplate for traversing roots and initializers.
- We now have visitors for initializers and root nodes. The RecursiveVisitor still
just visits statements and expressions since forEachBody takes care of the root
nodes and initializers.
- Initializers are no longer expressions. Why were they expressions?
- We now have a RecursiveTransformer class which behaves like RecursiveVisitor,
except visitors are expected to return a transformed node.
This removes a lot of boilerplate traversal from transformations.
R=kmillikin@google.com
Committed: https://code.google.com/p/dart/source/detail?r=45000
Review URL: https://codereview.chromium.org//1068243002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45004 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-09 13:00:56 +00:00
asgerf@google.com
28facdb760
Overhaul tree IR visitor and rename IR classes.
...
Changes in both IRs:
- ExecutableDefinition -> RootNode
- PassMixin has been removed and the Pass interface has been
reduced to a single rewrite(RootNode) method.
- ConstructorDefinition no longer subclasses FunctionDefinition.
Changes in the cps IR:
- RunnableBody -> Body
Changes in tree IR:
- RootNodes have "forEachBody" and "replaceEachBody" helper methods that
take care of the boilerplate for traversing roots and initializers.
- We now have visitors for initializers and root nodes. The RecursiveVisitor still
just visits statements and expressions since forEachBody takes care of the root
nodes and initializers.
- Initializers are no longer expressions. Why were they expressions?
- We now have a RecursiveTransformer class which behaves like RecursiveVisitor,
except visitors are expected to return a transformed node.
This removes a lot of boilerplate traversal from transformations.
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//1068243002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@45000 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-09 12:04:45 +00:00
johnniwinther@google.com
796c130cdc
Extract CallStructure from Selector.
...
This should be used for static invocation so that Selector is only for dynamic invocations.
BUG=
R=floitsch@google.com
Committed: https://code.google.com/p/dart/source/detail?r=44960
Reverted: https://code.google.com/p/dart/source/detail?r=44961
Review URL: https://codereview.chromium.org//1062913003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44991 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-09 07:44:17 +00:00
kmillikin@google.com
8ee2280e9b
Change the collection of continuation jumps.
...
Encapsulate the responsibility for emitting jumps and building continuation
environments in the JumpCollector class. JumpCollectors are now used for
continuations that are not break or continue targets in the source
program (e.g., some of the loop continuations) for uniformity.
BUG=
R=asgerf@google.com
Review URL: https://codereview.chromium.org//1040093002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44964 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-08 12:49:26 +00:00
asgerf@google.com
c1a29cfc2f
cps-ir: Merge variables based on set-based liveness and graph coloring.
...
RegisterAllocator and CopyPropagator have been removed.
Variables are merged after StatementRewriter.
This simplifies CPS->Tree translation is a little bit since the mapping
to variables is one-to-one.
The StatementRewriter has a more SSA-like input, but has to be more
aggressive when looking for a redex. It now looks through a chain of
phi-assignments to check if two statements can be combined, whereas
before it would only combine two identical jumps.
I haven't been able to measure a significant slowdown, though I'm sure
it is at least a little bit slower.
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//1007103003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44962 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-08 10:59:22 +00:00
johnniwinther@google.com
2d39371869
Revert "Extract CallStructure from Selector."
...
This reverts commit r44960.
BUG=
Review URL: https://codereview.chromium.org//1068233002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44961 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-08 10:38:28 +00:00
johnniwinther@google.com
296d174559
Extract CallStructure from Selector.
...
This should be used for static invocation so that Selector is only for dynamic invocations.
BUG=
R=floitsch@google.com
Review URL: https://codereview.chromium.org//1062913003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44960 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-08 09:30:50 +00:00
johnniwinther@google.com
1844b7e4ae
Fix bug in native/behavior.dart
...
BUG=
Review URL: https://codereview.chromium.org//1069263003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44959 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-08 08:47:57 +00:00
johnniwinther@google.com
1098ce385c
Handle unexpected tokens in modifier lists.
...
BUG=http://dartbug.com/23051
R=floitsch@google.com
Review URL: https://codereview.chromium.org//1067653003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44958 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-08 08:11:12 +00:00
sra@google.com
56076c00da
Parse more properties of native code fragments.
...
';' is now a separator rather than a terminator.
Add properties for:
- throwing behaviour
- allocation (fresh unaliased object)
- gvn
These are currently unused.
I have a separate CL in preparation with a better throwing behaviour
R=floitsch@google.com
Review URL: https://codereview.chromium.org//1034263002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44947 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-07 20:53:41 +00:00
sigurdm@google.com
f328d3f997
Fix bug in dart2js async rewrite
...
In some cases where a transform of yield and await was not needed, the old nodes were reused - instead they should have been visited to
allow renaming and rewrite of `this`.
BUG= dartbug.com/23058
R=floitsch@google.com
Review URL: https://codereview.chromium.org//1060293002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44933 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-07 12:06:46 +00:00
sra@google.com
206671dfb7
Add 'toString' method to NativeBehavior
...
TBR=floitsch@google.com
Review URL: https://codereview.chromium.org//1053053003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44869 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-02 20:15:27 +00:00
sra@google.com
c7e5344b9f
"Redo "Avoid getInterceptor calls in cases were the interceptor would be constant if it were not null." agains.
...
TBR=floitsch@google.com
Review URL: https://codereview.chromium.org//1058433003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44858 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-02 02:59:47 +00:00
sra@google.com
9456ce82b5
Revert "Redo "Avoid getInterceptor calls in cases were the interceptor would be constant if it were not null.""
...
Will delete unused API.
TBR=floitsch@google.com
BUG=
Review URL: https://codereview.chromium.org//1050363002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44857 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-02 02:49:53 +00:00
sra@google.com
d4a1b47e98
Redo "Avoid getInterceptor calls in cases were the interceptor would be constant if it were not null."
...
TBR=floitsch@google.com
BUG=
Review URL: https://codereview.chromium.org//1057753002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44856 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-02 01:44:05 +00:00
sra@google.com
b1315659b5
Revert "Avoid getInterceptor calls in cases were the interceptor would be constant if it were not null."
...
TBR=floitsch@google.com
BUG=
Review URL: https://codereview.chromium.org//1050343002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44855 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-02 01:33:08 +00:00
sra@google.com
c96493e219
Avoid getInterceptor calls in cases were the interceptor would be constant if it were not null.
...
Example:
gap = J.getInterceptor$x(style).get$columnGap(style);
-->
gap = (style && C.CssStyleDeclaration_methods).get$columnGap(style);
R=floitsch@google.com
Review URL: https://codereview.chromium.org//1031633003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44853 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-02 00:59:25 +00:00
herhut@google.com
557d7f5ec9
Also intialize methods inherited from mixin classes.
...
BUG= http://dartbug.com/23056
R=zarah@google.com , floitsch@google.com , sra@google.com
Review URL: https://codereview.chromium.org//1057513002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44832 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-01 13:15:01 +00:00
zarah@google.com
db854e1148
dart2js: emit info on lazy fields in array.
...
R=herhut@google.com
Review URL: https://codereview.chromium.org//999933007
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44830 260f80e4-7a28-3924-810f-c04153c831b5
2015-04-01 11:07:34 +00:00
het@google.com
7f97883c8d
Emit diagnostics for bad NSM implementations
...
BUG=
R=sra@google.com
Review URL: https://codereview.chromium.org//1023673012
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44808 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-31 17:11:26 +00:00
johnniwinther@google.com
8cd443241a
Handle NewExpression in SemanticSendVisitor.
...
BUG=
R=floitsch@google.com
Review URL: https://codereview.chromium.org//1043723002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44800 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-31 10:02:55 +00:00
herhut@google.com
32a9974aef
Do not include names of lazy globals in minified mode.
...
BUG=
R=zarah@google.com
Review URL: https://codereview.chromium.org//1022103002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44777 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-30 10:36:31 +00:00
zarah@google.com
14836d31f2
dart2js: remove first argument from lazy function.
...
R=herhut@google.com
Committed: https://code.google.com/p/dart/source/detail?r=44660
Reverted: https://code.google.com/p/dart/source/detail?r=44665
Review URL: https://codereview.chromium.org//1029003002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44776 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-30 08:19:27 +00:00
herhut@google.com
faa03376b4
Clean up naming scheme for reflection names.
...
BUG= http://dartbug.com/22987
R=ahe@google.com
Committed: https://code.google.com/p/dart/source/detail?r=44732
Reverted: https://code.google.com/p/dart/source/detail?r=44733
Review URL: https://codereview.chromium.org//1040623002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44736 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-27 14:43:02 +00:00
karlklose@google.com
ce95110c52
Change type annotation buildInvokeConstructorInvocation.
...
The Dart backend uses the type directly to reconstruct malformed constructor calls and the JavaScript backend will generate code to throw an exception when encountering an ErroneousElement as target.
R=asgerf@google.com
Review URL: https://codereview.chromium.org//1036263002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44735 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-27 14:11:49 +00:00
herhut@google.com
363b144eae
Revert "Clean up naming scheme for reflection names."
...
This reverts commit r44732.
BUG=
TBR=ahe@google.com
Review URL: https://codereview.chromium.org//1039223002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44733 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-27 13:38:50 +00:00
herhut@google.com
7719901f37
Clean up naming scheme for reflection names.
...
BUG= http://dartbug.com/22987
R=ahe@google.com
Review URL: https://codereview.chromium.org//1040623002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44732 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-27 12:28:04 +00:00
herhut@google.com
7bb03d31d9
Move set-membership based containment test behind a flag.
...
BUG=
R=karlklose@google.com
Review URL: https://codereview.chromium.org//1037223002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44731 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-27 10:54:57 +00:00
johnniwinther@google.com
726265c92c
Fix type annotation for deferred constants.
...
BUG=
R=sigurdm@google.com
Review URL: https://codereview.chromium.org//1033213002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44730 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-27 10:26:47 +00:00
sra@google.com
d216759d16
Fix printing of HConstant
...
Avoid the assert in ConstantValue.toString()
BUG=
Review URL: https://codereview.chromium.org//1036873004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44715 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-26 17:52:14 +00:00
johnniwinther@google.com
db93e02d2c
Implement ResolvedVisitor using SemanticSendVisitor.
...
BUG=
R=karlklose@google.com
Review URL: https://codereview.chromium.org//1030103004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44711 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-26 14:49:24 +00:00
karlklose@google.com
43e52e2162
cps-ir: Set runtime type information for new objects that require it.
...
R=asgerf@google.com
Review URL: https://codereview.chromium.org//1011403003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44708 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-26 10:27:32 +00:00
floitsch@google.com
14ddfb7aac
dart2js: Optimize Function.apply for 0-3 argument calls.
...
R=sra@google.com
Review URL: https://codereview.chromium.org//1032013002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44704 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-25 23:21:23 +00:00
sra@google.com
ab8f0bb4ec
dart2js: permit generation of conditionals as arguments of allocations.
...
Example:
t1 = onError == null ? 1 : 3;
this._addListener$1(new P._FutureListener(null, result, t1, f, onError));
-->
this._addListener$1(new P._FutureListener(null, result, onError == null ? 1 : 3, f, onError));
R=herhut@google.com
Review URL: https://codereview.chromium.org//1031993002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44696 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-25 20:18:29 +00:00
sigurdm@google.com
2008f189ad
Rename the inner function of async functions.
...
Before they were all named `body`, now they have the same name as their
enclosing function.
BUG= dartbug.com/22942
R=floitsch@google.com
Review URL: https://codereview.chromium.org//1018393003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44682 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-25 12:37:47 +00:00
zarah@google.com
bb0a3b8216
dart2js: rename and refactor reflection_data_parser.
...
This change does not affect the generated output.
R=herhut@google.com
Review URL: https://codereview.chromium.org//1024523003
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44681 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-25 08:50:43 +00:00
het@google.com
790d5e3ae4
Fix check for throwing NSM implementations.
...
BUG=
R=sra@google.com
Review URL: https://codereview.chromium.org//1005873009
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44678 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-25 01:01:28 +00:00
zarah@google.com
3e7cb1ca3d
Revert "dart2js: remove first argument from lazy function."
...
This reverts commit r44660.
BUG=
Review URL: https://codereview.chromium.org//1026353002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44665 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-24 13:39:58 +00:00
herhut@google.com
3644473d58
Remove NSM if followed by a foreign with same effect.
...
BUG=
R=floitsch@google.com , sra@google.com
Committed: https://code.google.com/p/dart/source/detail?r=44661
Reverted: https://code.google.com/p/dart/source/detail?r=44662
Review URL: https://codereview.chromium.org//1010433004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44663 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-24 12:30:10 +00:00
herhut@google.com
6c456f3faa
Revert "Remove NSM if followed by a foreign with same effect."
...
This reverts revision 44661.
BUG=
TBR=karlklose@google.com
Review URL: https://codereview.chromium.org//1026333002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44662 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-24 12:04:40 +00:00
herhut@google.com
06f7b5aa13
Remove NSM if followed by a foreign with same effect.
...
BUG=
R=floitsch@google.com , sra@google.com
Review URL: https://codereview.chromium.org//1010433004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@44661 260f80e4-7a28-3924-810f-c04153c831b5
2015-03-24 11:32:28 +00:00