Chromium Code Reviews| Index: lib/compiler/implementation/ssa/codegen.dart |
| diff --git a/lib/compiler/implementation/ssa/codegen.dart b/lib/compiler/implementation/ssa/codegen.dart |
| index 00559374462d650468048fe66d2a51e9de9d69dd..5a41fbb8965b6f23cd441fbe451867c775d89dde 100644 |
| --- a/lib/compiler/implementation/ssa/codegen.dart |
| +++ b/lib/compiler/implementation/ssa/codegen.dart |
| @@ -1527,8 +1527,8 @@ class SsaCodeGenerator implements HVisitor, HBlockInformationVisitor { |
| Selector setter = node.selector; |
| String name = backend.namer.setterName(setter.library, setter.name); |
| push(jsPropertyCall(pop(), name, visitArguments(node.inputs)), node); |
| - world.registerDynamicSetter( |
| - setter.name, getOptimizedSelectorFor(node, setter)); |
| + Selector selector = getOptimizedSelectorFor(node, setter); |
| + world.registerDynamicSetter(setter.name, selector); |
| } |
| visitInvokeDynamicGetter(HInvokeDynamicGetter node) { |
| @@ -1637,33 +1637,13 @@ class SsaCodeGenerator implements HVisitor, HBlockInformationVisitor { |
| } |
| visitFieldSet(HFieldSet node) { |
| - if (work.element.isGenerativeConstructorBody() && |
| - node.element.isMember() && |
| - node.value.hasGuaranteedType() && |
| - node.block.dominates(currentGraph.exit)) { |
| - backend.updateFieldConstructorSetters(node.element, |
| - node.value.guaranteedType); |
| - } |
| String name = backend.namer.getName(node.element); |
| DartType type = types[node.receiver].computeType(compiler); |
| if (type != null) { |
| if (!work.element.isGenerativeConstructorBody()) { |
|
ngeoffray
2012/09/24 08:15:49
Please add a comment on why you're checking this.
Søren Gjesse
2012/09/24 15:06:50
Done.
|
| world.registerFieldSetter( |
| node.element.name, node.element.getLibrary(), type); |
| - } |
| - // Determine the types seen so far for the field. If only number |
| - // types have been seen and the value of the field set is a |
| - // simple number computation only depending on that field, we |
| - // can safely keep the number type for the field. |
| - HType fieldSettersType = backend.fieldSettersTypeSoFar(node.element); |
| - HType initializersType = |
| - backend.typeFromInitializersSoFar(node.element); |
| - HType fieldType = fieldSettersType.union(initializersType); |
| - if (HType.NUMBER.union(fieldType) == HType.NUMBER && |
| - isSimpleFieldNumberComputation(node.value, node)) { |
| - backend.updateFieldSetters(node.element, HType.NUMBER); |
| - } else { |
| - backend.updateFieldSetters(node.element, types[node.value]); |
| + backend.registerFieldSetter(node, types); |
|
ngeoffray
2012/09/24 08:15:49
Does the backend have to know about types/nodes? Y
Søren Gjesse
2012/09/24 15:06:50
No. Changed to pass Element and HType.
|
| } |
| } |
| use(node.receiver); |
| @@ -1702,14 +1682,6 @@ class SsaCodeGenerator implements HVisitor, HBlockInformationVisitor { |
| } |
| visitForeignNew(HForeignNew node) { |
| - int j = 0; |
| - node.element.forEachInstanceField( |
| - includeBackendMembers: true, |
| - includeSuperMembers: true, |
| - f: (ClassElement enclosingClass, Element member) { |
| - backend.updateFieldInitializers(member, types[node.inputs[j]]); |
| - j++; |
| - }); |
| String jsClassReference = backend.namer.isolateAccess(node.element); |
| List<HInstruction> inputs = node.inputs; |
| // We can't use 'visitArguments', since our arguments start at input[0]. |