Commit Graph

305 Commits

Author SHA1 Message Date
fschneider@google.com 79a5307d5b VM: Implement closure calls as instance calls.
Conceptually f() becomes f.call() where the .call method performs the actual
closure call. The closure call itself is implemented without a stub.

The check if the object called is a closure becomes a class-id check
which can be hoisted out of loops.

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34917 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-10 10:56:00 +00:00
turnidge@google.com 1eba6be2b2 Implement new stacktrace and deoptimization stress testing flags:
--deoptimize-every=N
--deoptimize-filter=FunctionName
--stacktrace-every=N
--stacktrace-filter=FunctionName

Add a word of stack_overflow_flags to the Isolate.  Use a bit in this
word to indicate whether or not a function is being compiler for OSR.
This allows us to distinguish an OSR overflow from a stress-testing
overflow.

BUG=
R=johnmccutchan@google.com, zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34887 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-09 18:27:37 +00:00
fschneider@google.com 9ed4cf1cb6 Simplify and improve handling of IC and megamorphic cache miss handling.
Instead of going back and forth from stub code to C++, perform
only the lookup in C++ and call target functions only from
stub code.

noSuchMethod and implicit closure invocations are now also work with
the megamorphic cache. Before they would go slow-case in the megamorphic case.

This CL eliminates the InstanceFunctionLookup stub that was previously
used to handle noSuchMethod and implicit closure invocations.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34774 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-07 09:27:43 +00:00
turnidge@google.com d358d84eb7 Begin implementing flag --deoptimize-filter=FUNC for ia32.
Currently not functional - committing so that srdjan can investigate
why it doesn't work.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34737 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-04 18:05:37 +00:00
fschneider@google.com cc9e3b8068 Introduce a lazy-compile stub for functions.
The function's code pointer is either a lazy-compile stub
or the compiled code. The function is compiled on invocation.

There is no need to check for null when invoking a function. This means
one check less when invoking functions via a stub. For this I added a  LazyCompile
stub.

Additional cleanup in Stackmap and PcDescriptors (remove unused code pointer,
and changed smi-lengh into a raw integer).

R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34643 260f80e4-7a28-3924-810f-c04153c831b5
2014-04-02 12:37:48 +00:00
regis@google.com ed690f97b6 Fix canonicalization of types.
Add functions retrieving canonical types by their index or vice versa (used by
a future cl supporting types in vm service).
Add getters for type argument instantiations (used by future cl).

R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@34128 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-19 18:48:57 +00:00
fschneider@google.com 37b30ab2ac Alternative fix for .call invocation of closures.
This also covers "closurization" of the .call method.
This relies on the fact that f.call === f if f is a closure.
This means that adding a simple getter to _FunctionImpl that
 returns this is enough. No need for a separate dispatch.

This CL reverts the previous fix for issue 12602 (modulo the
additional tests).

BUG=dartbug.com/17473, dartbug.com/12602
R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33736 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-17 10:31:33 +00:00
fschneider@google.com f75ef2e6ab Fix invocation of closures via .call in the VM.
Calling closures via .call does now work in the VM - it was working in
dart2js already.  Calling .call on a closure is implemented to go through
a dispatcher method. These dispatcher methods are automatically created and
cached in the same way as NoSuchMethod- or field-invocation dispatchers.

This CL does not change the way regular closure invocation works in
the VM. It is therefore performance-neutral for normal closure calls.

BUG=dartbug.com/12602
TEST=language/call_test
R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33576 260f80e4-7a28-3924-810f-c04153c831b5
2014-03-12 14:02:27 +00:00
regis@google.com 8d5dae7798 Allocate instance closures similarly to regular closures, i.e. without a
specific stub and runtime call.

R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@33074 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-26 18:38:47 +00:00
regis@google.com a72c2146ba Modify growth policy for table of canonical types in each class.
Modify growth policy for cache of type arguments instantiations.
Add language test for generic closure.

R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32940 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-21 23:09:02 +00:00
hausner@google.com 040093eb26 Handle stepping requests after isolate interrupt event
Adding test case provided by jacobr.

Fix issue 17008

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32938 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-21 22:40:11 +00:00
fschneider@google.com 13f2d115ef Simplify generated code for object allocation with type arguments.
The motivation for the change is to make allocation sinking more
general when type arguments are in play. As a result I cleaned up the code
dealing with constructor type arguments as follows:

* Remove ExtractConstructorTypeArguments and ExtractConstructorInstantiator
from the intermediate language.

* The allocation stub takes now 1 argument (instead of 2) for parameterized
classes.

* The allocation stub always get an instantiated type arguments object
as input. It does not need to do a lookup in the instantiations array anymore.

* The code for looking up cached instantiated type arguments is moved
to the InstantiateTypeArguments instruction. This instruction is now also
used for object allocation. I'm not sure how relevant the cache lookup is
performance-wise. dart2js compilation did not show any regression without it.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32697 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-14 13:03:35 +00:00
fschneider@google.com d6178535b2 Landing: Write protect executable pages in the VM.
Change executable pages to be read/execute but not writable by default.

All pages are made temporarily writable just before a full GC, because both
the mark and sweep phases write to the pages. When allocating in a page and
when patching code, the pages are made temporarily writable.

The order of allocation of Code and Instructions objects is changed so that
a GC will not occur after Instructions is allocated. (A full GC would
render the Instructions unwritable.) A scoped object is used to make memory
protection simpler.

Original CL: https://codereview.chromium.org/106593002/

I added a cc test that is expected to crash.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32493 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-10 12:18:06 +00:00
regis@google.com 7830430adf Implement eager instantiation and canonicalization of type arguments at run
time using a cache in uninstantiated type arguments.
Remove InstantiatedTypeArguments class.
Fix a bug in optimized code: do not update unused type test cache for Smi.
Fix a bug in optimized code on ARM and MIPS in type test cache lookup.

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32447 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-07 19:54:33 +00:00
srdjan@google.com 09d8b52ded Fix crash in VM when patching static calls. When the target code is optimized, it is possible that the target function has its code disconnected due to its optimized code being deoptimized and its unoptimized code not being used. In such case recompile the target.
R=zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32337 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-05 21:14:00 +00:00
srdjan@google.com 8b7ebed54f Mark optimized code that used CHA for optimization so that lazy class 'finalization' does not invalidate that code.
R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32335 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-05 20:31:57 +00:00
johnmccutchan@google.com adc89ab748 Fix disassembler crash with profiler
BUG=
R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32322 260f80e4-7a28-3924-810f-c04153c831b5
2014-02-05 15:30:40 +00:00
hausner@google.com ed8ea2e281 Handle all debugger stepping with the isolate single step flag
Eliminate stepping with “internal” breakpoints. We can now handle
stepping in recursive functions properly. On the other hand, code
does not run at full speed between step commands, since a runtime
call to the debugger is necessary at each safe point.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32150 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-29 23:47:23 +00:00
srdjan@google.com 9c16a399ca Cleanups.
R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@32000 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-24 22:00:04 +00:00
hausner@google.com a65c571f18 Get rid of dynamic call debug stub
This leaves only one debugger stub function. Yay.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31932 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-17 21:32:58 +00:00
hausner@google.com 06da68b5aa Eliminate another debugger stub
This change replaces https://codereview.chromium.org/135213002/

The specialized debugger stub call for static method calls is
no longer needed. It was introduced because once upon a time, the
static method call stub used to patch the call site when the target
was compiled. The VM stopped patching unoptimized static calls a
long time ago. Thus we can treat a static call like a regular runtime
call when patching it to set a breakpoint.

Bonus fix: single step runtime callback on mips was broken. The
enter/leave stub frame were missing.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31928 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-17 19:09:46 +00:00
srdjan@google.com bcb8549677 Fix issue 16103: Prevent recursive triggering of optimizer by resetting the optimization counter threshold before calling the compiler.
R=johnmccutchan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31844 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-15 19:09:02 +00:00
hausner@google.com 31db06a905 Delete obsolete debug stub
Remove the debug stub that became obsolete with the recent rewrite
of how we handle breakpoints at return statements.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31685 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-09 23:56:08 +00:00
srdjan@google.com 5be3faaf66 Fix issue 14366: in case of a type check error and conflicting type names being the same, prefix type names with their library names. Example:
type 'myLib.My' is not a subtype of type 'My' of 'm'.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31621 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-08 19:09:56 +00:00
regis@google.com 06830dbbd2 Use a trail instead of a mark bit when processing recursive types in the VM
(issue 15595).

R=asiva@google.com, rmacnak@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@31584 260f80e4-7a28-3924-810f-c04153c831b5
2014-01-07 21:55:07 +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
srdjan@google.com a8f549dbc3 Merge sin(a), cos(a) into one instruction. On IA32 use x87 fsincos operation, on x64 call runtime routine whihc merges sin/cos intos sincos.
TODO: Implement for ARM and MIPS.

R=fschneider@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30827 260f80e4-7a28-3924-810f-c04153c831b5
2013-12-03 22:00:27 +00:00
zra@google.com daf539e2f9 Fixes a couple problems with GC of unoptimized code.
1. Instead of making a pass before the Marking phase,
   this change does not visit code pointers in functions
   during marking. Then after marking, if the code has
   still not been marked, code pointers in functions
   are nulled out.
2. Since code pointers in functions may be nulled out,
   functions are no longer used as proxies for code in
   deoptimization info.

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30600 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-23 00:17:28 +00:00
srdjan@google.com 3485989ae7 Do not eagerly finalize classes in CHA, instead regard unfinalized classes as ’non-existent’ and only invalidate optimized code at finalization of the class.
Rename FinalizePendingClasses to FinalizePendingClassInterfaces as the class finalization occurs lazily.
TODO: add dependency information to deoptimize/remove only relevant optimized code.

R=regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30582 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-22 17:59:23 +00:00
zra@google.com 136597ec7d Pushes 0 for PC marker in runtime call stubs on ARM and MIPS.
R=iposva@google.com, regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30555 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-21 23:18:53 +00:00
regis@google.com db2cec593d Distinguish between malformed and malbounded types more efficiently using the
recently introduced LanguageError 'kind' field.

R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30383 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-18 23:31:12 +00:00
regis@google.com 694401d38e Rename mixin typedef to mixin application alias in VM.
R=hausner@google.com, rmacnak@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@30277 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-14 17:42:39 +00:00
regis@google.com 528a7ce3d9 Complete latest spec changes regarding malformed types (see issue 14006).
Update language tests and mark them as failing in dart2js as appropriate.
Mark a few co19 tests as failing.
Mark a dart2js test as failing due to unresolved types.

Unfortunately, https://codereview.chromium.org/53583003/ was uncomplete and
missed a few mappings of malformed types to dynamic.

R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29924 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-05 18:46:13 +00:00
fschneider@google.com a037e4874b Fix bug with guarded fields and deserialization.
Since deserialization does not involve the normal object construction
procedure, any values written there won't be reflected in the guarded field
type. This results in incorrect optimized code because deoptimization of
dependent code objects in not triggered.

This CL adds tracking of field types and guarded list length when creating
objects via deserialization.

R=iposva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29741 260f80e4-7a28-3924-810f-c04153c831b5
2013-11-01 10:39:09 +00:00
regis@google.com 3fa7a61efc Implement latest spec changes regarding malformed types (see issue 14006):
- a malformed type used in a is, as, or catch type test results in a dynamic
  type error being thrown.
- a malformed type is not mapped to dynamic anymore.

For now, this applies to type tests in checked mode as well, but discussion is
still on-going.

R=hausner@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29608 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-30 23:30:32 +00:00
zra@google.com 3701fb48fd Modifies assertion for possibly null code pointer.
A callee function's code pointer may be nulled by a
GC pass during inlining. The code itself is still
around because the inlining function retains a
reference, but a future change will ensure that
the GC pass doesn't null code pointers in inlined
functions.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29400 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-28 21:58:10 +00:00
zra@google.com 039a4c4078 Disconnects code objects from infrequently used unoptimized functions.
Every 30 seconds (configurable by --code-collection-interval),
before a MarkSweep collection, this change halves a function's
usage count if it is unoptimized. If the function's usage count
reaches 0 as a result of this halving, it sets the function's
code pointers to null. Then, if the code object isn't marked
during the MarkSweep, it will be collected.

This change also checks for null code pointers in various
places, and recompiles/reconnects code if needed.

R=srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@29209 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-24 21:26:15 +00:00
regis@google.com 5a5edb7f0c Report use of malbounded interface in type test.
Fix language tests related to malbounded types (issues 14123, 14131, 14132).

R=rmacnak@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28943 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-21 19:49:19 +00:00
regis@google.com 2f900dab13 Cache number of type arguments in class object instead of recalculating it.
Reduce size of num_native_fields field in class object.

R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28670 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-15 18:31:31 +00:00
fschneider@google.com 06ace75239 Improve --optimization-filter to accept a comma-separated list of strings.
Only functions where the fully-qualified name contains one of the strings supplied
as substring will be optimized.

This helps tracking down bugs in the optimizing compiler that occur when a
large number of optimized functions are involved.

R=kmillikin@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28578 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-14 12:21:40 +00:00
turnidge@google.com b15b2931e0 Allow the debugger to inspect local variables from optimized and
inlined frames.

------------

Most remaining deoptimization code from the code generator moves to
DeoptContext.  This allows the code to be reused by the debugger.
There is some rework of the code along the way.  The remaining code in
the code generator is simpler.

Implement the ability to deopt a frame to an Array.  Each inlined
frame accesses its locals from this array at some fixed offset.

Refactor the Debugger::CollectStackTrace code.  New code is int
Debugger::CollectStackTraceNew.  There is a flag --use_new_stacktrace
which can be used to revert back to the old version.  I intend to
remove this flag shortly, after any dust clears.

Added a unit test which makes sure that we can inspect locals from
optimized and inlined frames.  Tested this code in the dart editor
debugger as well.

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28468 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-10 18:15:53 +00:00
srdjan@google.com 3a8252f90d Cleanups: int -> intptr_t for "array" lengths, memory sizes.
R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28324 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-07 20:19:37 +00:00
turnidge@google.com baeb23f9a5 Refactor some deoptimization code.
Primarily this change moves deoptimization state/code out of Isolate
and into DeoptContext (formerly DeoptimizationContext).  The lifetime
of DeoptizationContext changes to survive through the entire
deoptimization process.

Some minor renaming.  DeoptizationContext -> DeoptContext to make it
consistent with DeoptInstr and to save my wrists.

New files deferred_object.{cc,h} contain a bunch of the stuff lifted
from isolate.{cc,h}.

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@28112 260f80e4-7a28-3924-810f-c04153c831b5
2013-10-01 19:34:12 +00:00
regis@google.com c0036588b9 Move the assertion checking the number of arguments passed to a runtime entry
from the entry to the macro.

R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26829 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-29 00:08:02 +00:00
kmillikin@google.com 4f80ef09df Change Bool::Get to return a handle instead of a pointer to a raw object.
Replace occurrences of 'expr ? Bool::True() : Bool::False()' with simply
'Bool::Get(expr)' and analogously for its negation.  The pointer to the raw
object can still be extracted with 'Bool::Get(expr).raw()'.

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26770 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-28 08:38:56 +00:00
regis@google.com 81bcb1f18a Distinguish between malformed and malbounded types (fix issues 12552 and 12554).
Add test.
Update status files.

Explanation of change: A malbounded type argument should not be mapped to
dynamic, as is a malformed type argument.
This change also adds a bunch of TODOs related to the encounter of malbounded
types in unexpected places.
A follow-up change will address these TODOs, add more tests, and may simplify
code that is still handling malformed types where they cannot occur anymore
after the spec simplified their handling.

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

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26665 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-26 17:56:02 +00:00
johnmccutchan@google.com c8b370ab50 Initial support for length guards on final fields.
R=regis@google.com, srdjan@google.com, zra@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26433 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-21 15:32:45 +00:00
jacobr@google.com 605b33c1bc fix cpp11 compile errors
R=asiva@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26387 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-20 20:24:11 +00:00
rmacnak@google.com 8bdc9b5696 Cleanup making Null a public class of dart:core in the VM. Remove special cases for Null in lookup and compile-time type tests.
BUG=http://dartbug.com/12364
R=asiva@google.com, regis@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@26205 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-15 18:34:23 +00:00
regis@google.com 09bcdc6d6d Fix VM implementation of CastError not to extend TypeError (issue 5280).
Remove non-compliant fields in various Error classes (issue 10144).
Remove implicit constructor when patching in a constructor (issue 12217).
Patch corelib Error classes instead of declaring subclasses.
Update tests and status files.

R=asiva@google.com, srdjan@google.com

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

git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@25782 260f80e4-7a28-3924-810f-c04153c831b5
2013-08-05 18:35:04 +00:00