Chromium Code Reviews| Index: lib/compiler/implementation/enqueue.dart |
| =================================================================== |
| --- lib/compiler/implementation/enqueue.dart (revision 11628) |
| +++ lib/compiler/implementation/enqueue.dart (working copy) |
| @@ -163,19 +163,27 @@ |
| void processInstantiatedClassMember(Element member) { |
| if (universe.generatedCode.containsKey(member)) return; |
| if (resolvedElements[member] !== null) return; |
| - |
| if (!member.isInstanceMember()) return; |
| - if (member.isField()) return; |
| + if (member.kind === ElementKind.FIELD) { |
| + universe.instantiatedClassInstanceFields.add(member.name); |
| + if (compiler.enableTypeAssertions) { |
|
ahe
2012/08/31 09:46:51
This doesn't feel like the right place for this.
|
| + Type type = member.computeType(compiler); |
| + registerIsCheck(type.element); |
| + SourceString helper = compiler.backend.getCheckedModeHelper(type); |
|
ahe
2012/08/31 09:46:51
And this is feeling even wronger :-)
ngeoffray
2012/09/05 13:00:29
Agree. Fix is in https://chromiumcodereview.appspo
|
| + if (helper != null) { |
| + Element helperElement = compiler.findHelper(helper); |
| + registerStaticUse(helperElement); |
| + } |
| + } |
| + return; |
| + } |
| + |
| String memberName = member.name.slowToString(); |
| Link<Element> members = instanceMembersByName.putIfAbsent( |
| memberName, () => const EmptyLink<Element>()); |
| instanceMembersByName[memberName] = members.prepend(member); |
| - if (member.kind === ElementKind.GETTER || |
| - member.kind === ElementKind.FIELD) { |
| - universe.instantiatedClassInstanceFields.add(member.name); |
| - } |
| if (member.kind == ElementKind.FUNCTION) { |
| if (member.name == Compiler.NO_SUCH_METHOD) { |
| @@ -194,6 +202,7 @@ |
| return addToWorkList(member); |
| } |
| } else if (member.kind == ElementKind.GETTER) { |
| + universe.instantiatedClassInstanceFields.add(member.name); |
| if (universe.hasInvokedGetter(member, compiler)) { |
| return addToWorkList(member); |
| } |