Commit Graph

5559 Commits

Author SHA1 Message Date
ngeoffray@google.com f7f6901722 Fix oversight in side effects computation and closure calls.
R=kasperl@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22614 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-13 10:27:56 +00:00
scheglov@google.com 44ab6ee5f2 Report CTEC.AMBIGUOUS_EXPORT
R=brianwilkerson@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22583 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-10 15:13:47 +00:00
scheglov@google.com e1c1d8c09b Report CompileTimeErrorCode.MIXIN_REFERENCES_SUPER
R=brianwilkerson@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22569 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-09 21:23:21 +00:00
scheglov@google.com 08ed1cdb5d Report CompileTimeErrorCode.INVALID_REFERENCE_TO_THIS
R=brianwilkerson@google.com, jwren@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22566 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-09 21:05:00 +00:00
scheglov@google.com 5d1a4b46b3 Report MIXIN_INHERITS_FROM_NOT_OBJECT
R=brianwilkerson@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22559 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-09 19:34:58 +00:00
scheglov@google.com 7da1adef44 Report CompileTimeErrorCode.WRONG_NUMBER_OF_PARAMETERS_FOR_SETTER for top-level setters.
R=brianwilkerson@google.com, jwren@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22554 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-09 18:10:52 +00:00
scheglov@google.com 79e7230e06 Report CompileTimeErrorCode.MIXIN_DECLARES_CONSTRUCTOR
R=brianwilkerson@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22549 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-09 15:48:05 +00:00
scheglov@google.com 7fd5cf3e12 Report CompileTimeErrorCode.INVALID_CONSTRUCTOR_NAME
R=brianwilkerson@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22548 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-09 15:32:36 +00:00
scheglov@google.com bd38f82625 Report StaticTypeWarningCode.AMBIGUOUS_IMPORT when used as type annotation.
R=brianwilkerson@google.com, jwren@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22542 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-09 01:43:28 +00:00
scheglov@google.com 60ac65a3e0 Make analysis dyi bot green.
TBR

R=devoncarew@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22538 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-08 23:58:11 +00:00
scheglov@google.com c7c94a3b3c Tweak new analyzer status files.
Skip 20 tests.
Update for new passed/failed tests.

R=devoncarew@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22522 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-08 18:40:06 +00:00
kasperl@google.com 8173acc17d Fix issue 10487 by adapting the type checker so it uses the dynamic type for throw expressions.
R=johnniwinther@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22501 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-08 09:28:10 +00:00
ngeoffray@google.com 49644d4c70 Fix https://code.google.com/p/dart/issues/detail?id=10474 by not loop hoisting instructions that may throw.
Review URL: https://codereview.chromium.org//14972005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22500 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-08 09:19:00 +00:00
scheglov@google.com 98d449366f More new analyzer status file tweaks to run with --checked
R=devoncarew@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22492 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-08 05:38:51 +00:00
vegorov@google.com 2565ca222f Implement a variation of scalar replacement for non-escaping allocations.
AllocationSinking pass discovers non-escaping allocations that have no input uses other than uses in the stores into its own fields.

Every environment use of such allocation is replaced by a state snapshot (MaterializeObject instruction) that describes the state of each initialized field in the object. State snapshots are computed through an additional round of load-forwarding.

Once snapshots are computed allocations are removed from the graph.

MaterializeObject instructions are not compiled into native code but produce deoptimization instructions instead that describe how object should be materialized at deoptimization.

Deoptimization instructions now follow the following format:

[mat obj #1]...[mat obj #N][ret addr][... mat arguments ...][... real frames ...]

- the prefix describes each object to materialize on deopt via kMaterializeObject instruction;
- actual values that are needed for materialization are emited as a part of bottom-most stack frame. This is done to simplify implementation: they need to be discoverable by a GC during materialization phase. At the end of deoptimization they will be removed from the stack;
- normal stack slots can refer to materialized objects via kMaterializedObjectRef instruction.

Additionally this change contains fixes in load-forwarding that are needed to guarantee that all artificial LoadField instructions inserted during AllocationSinking are correctly replaced with actual values.

Limitations of the current implementation:

- can't eliminate allocations that flow into phis but otherwise don't actually escape;
- can't sink allocations out of loops;
- allocation with type arguments are not handled.

R=regis@google.com, srdjan@google.com, zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22485 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-07 23:40:42 +00:00
scheglov@google.com 2214a97df7 Update status files for 'dartanalyer'.
Small tweak for the Java command line analyzer to actually support --package-root option in batch.

R=devoncarew@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22480 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-07 21:45:20 +00:00
johnniwinther@google.com afcaf39439 Remove support for interface in dart2js.
R=ahe@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22403 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-06 06:21:42 +00:00
karlklose@google.com 57124b5594 Implement implicit constructors in mixin applications.
R=kasperl@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22367 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-03 12:15:35 +00:00
ngeoffray@google.com aa7c44e340 Re-apply https://codereview.chromium.org/14636002/, but this time avoid creating TypeMask with dynamic.
R=kasperl@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22307 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-02 09:43:58 +00:00
hausner@google.com 1d9eb0d9f0 Fix status file for dart
Review URL: https://codereview.chromium.org//14586005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22294 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-02 00:05:41 +00:00
hausner@google.com 2a2e7c8305 Fix another library name
Review URL: https://codereview.chromium.org//14800003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22293 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 23:30:10 +00:00
hausner@google.com d114137da4 Fix more library name inconsistencies in tests
Review URL: https://codereview.chromium.org//14798002

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22291 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 23:22:40 +00:00
hausner@google.com 37d226d230 Fix another part-of related test failure
Library names must match.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22288 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 22:05:15 +00:00
hausner@google.com 9c7f8e873c Fix library names in language tests
A part can't be part of two different libraries with different names.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22286 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 21:35:08 +00:00
hausner@google.com 8e29370a1b BREAKING CHANGE: enforce part of directive
For historical reasons, the VM is currently too lenient when parsing library parts. Files that get loaded through a 'part' directive must start with a 'part of libraryname;' clause. The VM so far has not reported an error if the clause is missing.

This change enforces the grammar as the Spec mandates it. Library parts that do not start with 'part of' will no longer compile.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22278 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 20:46:48 +00:00
ngeoffray@google.com 96d0c724f4 Fix issue 10321 by invalidating previous "generate at use site" optimizations based on a pure instruction that is being moved in the graph.
R=ahe@google.com, kasperl@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22232 260f80e4-7a28-3924-810f-c04153c831b5
2013-05-01 09:49:09 +00:00
ngeoffray@google.com 344783757c Fix checked mode error.
Review URL: https://codereview.chromium.org//14109026

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22121 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-29 14:11:24 +00:00
ngeoffray@google.com 72096c315b When a phi is generated at use site, the names of its inputs must be freed by the user of the phi.
R=kasperl@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22118 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-29 13:13:27 +00:00
johnniwinther@google.com 73fe0daff9 Check for cyclicity in named mixin applications.
Review URL: https://codereview.chromium.org//14532005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22114 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-29 11:50:29 +00:00
ngeoffray@google.com e5e17e71fa Fix issue 10216. If the type mask is a subtype, and its base mixes in class A, it should consider an element of class A as potential runtime targets.
R=kasperl@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22111 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-29 10:58:42 +00:00
ngeoffray@google.com f341cacd45 Do not infer types of arguments of closures and methods named "call".
R=ahe@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22109 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-29 10:38:46 +00:00
johnniwinther@google.com f90f35f643 Status updated.
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@22016 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-25 08:29:19 +00:00
kasperl@google.com 102da4779f Update dart2dart test status (after throw as an expression).
R=ngeoffray@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21933 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-24 09:18:39 +00:00
kasperl@google.com 1ae2542bae Add support for rethrow and start treating throw <expr> as an expression.
R=ngeoffray@google.com
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21930 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-24 08:24:28 +00:00
ngeoffray@google.com a2f2eb7b96 Move test to dart2js_extra since it does not apply to VM.
Review URL: https://codereview.chromium.org//14091016

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21874 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-23 12:12:55 +00:00
ngeoffray@google.com 03a65ef1fe Throw NoSuchMethod or ArgumentError instead of generating a bailout, when we know the next instruction after a type guard will throw.
Review URL: https://codereview.chromium.org//14404004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21870 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-23 11:51:45 +00:00
vegorov@google.com 2e0af6585f Ensure that type of the AssertAssignable instruction is recomputed.
If the previous type was more specific than destination type but new value type is not than we need to update outgoing type to be destination type. Otherwise a stale more specific type will be flowing out.

BUG=dart:10094
R=kmillikin@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21809 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-22 12:30:05 +00:00
ngeoffray@google.com 4bbf678d64 Fix bug with namer: use the same encoding for an instance method, whether it is an invocation or a definition.
Review URL: https://codereview.chromium.org//14267021

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21744 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-19 15:20:31 +00:00
srdjan@google.com 9b53a42536 Add flag --check-function-fingerprints, it checks all function fingerprints of the intrinsifier and method recognizer. Added flag to a test so that the fingerprints will be tested during a regular test.
Review URL: https://codereview.chromium.org//14247005

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21711 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-18 23:18:13 +00:00
ahe@google.com 2abb5be5ec Implement Symbol correctly in dart2js.
Review URL: https://codereview.chromium.org//14079003

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21694 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-18 19:25:22 +00:00
ahe@google.com 5d8b1a1d8c Move invokeOn to InstanceMirror.
Review URL: https://codereview.chromium.org//14251021

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21636 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-17 16:39:19 +00:00
ngeoffray@google.com c48bb29f06 Fix issue https://code.google.com/p/dart/issues/detail?id=9251, by compiling for/in correctly.
Review URL: https://codereview.chromium.org//13865004

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21622 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-17 15:07:52 +00:00
ngeoffray@google.com e1e0350845 Fix issue 9939 by making the body of a try block have two successors: the join block after the try/catch, and the catch (or finally) block.
Review URL: https://codereview.chromium.org//13912013

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21618 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-17 12:30:09 +00:00
ngeoffray@google.com 96afd90f64 Take noSuchMethod into account when computing the potential targets of a call.
Review URL: https://codereview.chromium.org//14049010

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21609 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-17 09:38:18 +00:00
ngeoffray@google.com 55c67a1fd9 Fix variable allocator in the presence of HCheck instructions.
Review URL: https://codereview.chromium.org//13877009

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21607 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-17 09:05:52 +00:00
ngeoffray@google.com 3771eca383 Fix crash reported in http://code.google.com/p/dart/issues/detail?id=9949.
Review URL: https://codereview.chromium.org//14178008

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21605 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-17 08:29:14 +00:00
ahe@google.com 89be2ccac8 Change memberName and namedArguments in Invocation to use Symbol.
Review URL: https://codereview.chromium.org//14066019

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21602 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-17 07:54:48 +00:00
floitsch@google.com 466d6670c1 Refactor Future constructors.
BUG=

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21517 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-15 21:24:27 +00:00
ahe@google.com 5b6c0ba820 Rename InvocationMirror to Invocation.
Review URL: https://codereview.chromium.org//14049009

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21465 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-15 15:42:44 +00:00
lrn@google.com 485c8a5999 Move Iterable implementation to collection.
Add IterableMixin and IterableBase to dart:collection.
For now, the implementation is duplicated, because mixins and const
constructors don't mix. We hope that mixins will be improved in the
future to allow using the mixin to define the base class.

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@21457 260f80e4-7a28-3924-810f-c04153c831b5
2013-04-15 14:32:16 +00:00