johnmccutchan@google.com
eeeda72067
Do not ignore core libraries from CHA analysis.
...
I ran into issues with the collections library where classes and types were being finalized very late, affecting cha analysis.
class _LinkedCustomHashMap<K, V> extends _CustomHashMap<K, V> with _LinkedHashMapMixin<K, V>
abstract class _LinkedHashMapMixin<K, V> implements LinkedHashMap<K, V> {
Even though LinkedHashMap is a builtin object it can still be implemented after startup.
R=fschneider@google.com , iposva@google.com
Review URL: https://codereview.chromium.org//846213004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@42874 260f80e4-7a28-3924-810f-c04153c831b5
2015-01-14 17:03:45 +00:00
fschneider@google.com
881060b433
Fix type propagation for signature classes.
...
After I enabled nullability tracking for checked mode type assertions,
we need to fix type propagation for signature classes: We can't use
the asserted type to infer a cid for those since it may cause unnecessary
deoptimizations.
R=vegorov@google.com
Review URL: https://codereview.chromium.org//465343002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39197 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-13 13:45:01 +00:00
fschneider@google.com
54a7410866
Fix bug with CHA dependencies by recording a set of classes for registering code.
...
CHA is not only used with the receiver class, but also with other classes
when doing type propagation. The optimized code has to be registered with
all classes that are affected by CHA so that deoptimization occurs whenever
the set of subclasses changes for these classes.
R=vegorov@google.com
Review URL: https://codereview.chromium.org//463103002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@39194 260f80e4-7a28-3924-810f-c04153c831b5
2014-08-13 12:43:03 +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
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
fschneider@google.com
46f3bea12f
VM: Fix CHA for Object.
...
Class hierarchy analysis does not track subclasses of Object.
Therefore, it needs to safely assume that any functions has an override.
This fixes test failures when running with --optimization-counter-threshold=5.
R=kmillikin@google.com
Review URL: https://codereview.chromium.org//24558002
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@27874 260f80e4-7a28-3924-810f-c04153c831b5
2013-09-25 11:04:55 +00:00
asiva@google.com
f4fe42c280
Added macros OBJECT_IMPLEMENTATION and FINAL_OBJECT_IMPLEMENTATION
...
which have different implementations of 'operator=' and 'operator^='.
In the case of FINAL_OBJECT_IMPLEMENTATION we do not do the vtable setting
in these methods (Note the |= operator functionality is now subsumed into
the new implementation of "operator^=")
Review URL: https://codereview.chromium.org//12052033
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@17491 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-23 20:01:31 +00:00
srdjan@google.com
d1c4735609
Transition ^= to |=
...
Review URL: https://codereview.chromium.org//11867022
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@17309 260f80e4-7a28-3924-810f-c04153c831b5
2013-01-18 19:53:17 +00:00
srdjan@google.com
251169951b
Do not recompute unary_checks repeatedly. Add special (and quicker) way to check for method overrides using CHA.
...
Review URL: https://codereview.chromium.org//11275110
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@14434 260f80e4-7a28-3924-810f-c04153c831b5
2012-11-01 21:06:36 +00:00
asiva@google.com
596a5f1af9
Use kInstanceCid instead of object_store()->object_class() when checking to see if the class is object class.
...
Review URL: https://chromiumcodereview.appspot.com//10873004
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11190 260f80e4-7a28-3924-810f-c04153c831b5
2012-08-22 22:21:44 +00:00
regis@google.com
3790edb5e1
Move class hierarchy analysis to its own source.
...
Review URL: https://chromiumcodereview.appspot.com//10827450
git-svn-id: https://dart.googlecode.com/svn/branches/bleeding_edge/dart@11097 260f80e4-7a28-3924-810f-c04153c831b5
2012-08-21 21:09:28 +00:00