Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(342)

Side by Side Diff: pkg/compiler/lib/src/ssa/codegen.dart

Issue 906273002: Revert "dart2js: Refactoring, documentation, and a few bugfixes in Namer class." (Closed) Base URL: https://dart.googlecode.com/svn/branches/bleeding_edge/dart
Patch Set: Created 5 years, 10 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « pkg/compiler/lib/src/ssa/builder.dart ('k') | pkg/compiler/lib/src/ssa/ssa_tracer.dart » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 part of ssa; 5 part of ssa;
6 6
7 class SsaCodeGeneratorTask extends CompilerTask { 7 class SsaCodeGeneratorTask extends CompilerTask {
8 8
9 final JavaScriptBackend backend; 9 final JavaScriptBackend backend;
10 10
(...skipping 1474 matching lines...) Expand 10 before | Expand all | Expand 10 after
1485 // Depending on how the then/else branches terminate 1485 // Depending on how the then/else branches terminate
1486 // (e.g., return/throw/break) there can be any number of these. 1486 // (e.g., return/throw/break) there can be any number of these.
1487 List<HBasicBlock> dominated = node.block.dominatedBlocks; 1487 List<HBasicBlock> dominated = node.block.dominatedBlocks;
1488 for (int i = 2; i < dominated.length; i++) { 1488 for (int i = 2; i < dominated.length; i++) {
1489 visitBasicBlock(dominated[i]); 1489 visitBasicBlock(dominated[i]);
1490 } 1490 }
1491 } 1491 }
1492 1492
1493 void visitInterceptor(HInterceptor node) { 1493 void visitInterceptor(HInterceptor node) {
1494 registry.registerSpecializedGetInterceptor(node.interceptedClasses); 1494 registry.registerSpecializedGetInterceptor(node.interceptedClasses);
1495 String name = backend.namer.nameForGetInterceptor(node.interceptedClasses); 1495 String name = backend.namer.getInterceptorName(
1496 backend.getInterceptorMethod, node.interceptedClasses);
1496 var isolate = new js.VariableUse( 1497 var isolate = new js.VariableUse(
1497 backend.namer.globalObjectFor(backend.interceptorsLibrary)); 1498 backend.namer.globalObjectFor(backend.interceptorsLibrary));
1498 use(node.receiver); 1499 use(node.receiver);
1499 List<js.Expression> arguments = <js.Expression>[pop()]; 1500 List<js.Expression> arguments = <js.Expression>[pop()];
1500 push(js.propertyCall(isolate, name, arguments), node); 1501 push(js.propertyCall(isolate, name, arguments), node);
1501 registry.registerUseInterceptor(); 1502 registry.registerUseInterceptor();
1502 } 1503 }
1503 1504
1504 visitInvokeDynamicMethod(HInvokeDynamicMethod node) { 1505 visitInvokeDynamicMethod(HInvokeDynamicMethod node) {
1505 use(node.receiver); 1506 use(node.receiver);
(...skipping 25 matching lines...) Expand all
1531 if (methodName == null) { 1532 if (methodName == null) {
1532 methodName = backend.namer.invocationName(node.selector); 1533 methodName = backend.namer.invocationName(node.selector);
1533 registerMethodInvoke(node); 1534 registerMethodInvoke(node);
1534 } 1535 }
1535 push(js.propertyCall(object, methodName, arguments), node); 1536 push(js.propertyCall(object, methodName, arguments), node);
1536 } 1537 }
1537 1538
1538 void visitInvokeConstructorBody(HInvokeConstructorBody node) { 1539 void visitInvokeConstructorBody(HInvokeConstructorBody node) {
1539 use(node.inputs[0]); 1540 use(node.inputs[0]);
1540 js.Expression object = pop(); 1541 js.Expression object = pop();
1541 String methodName = backend.namer.instanceMethodName(node.element); 1542 String methodName = backend.namer.getNameOfInstanceMember(node.element);
1542 List<js.Expression> arguments = visitArguments(node.inputs); 1543 List<js.Expression> arguments = visitArguments(node.inputs);
1543 push(js.propertyCall(object, methodName, arguments), node); 1544 push(js.propertyCall(object, methodName, arguments), node);
1544 registry.registerStaticUse(node.element); 1545 registry.registerStaticUse(node.element);
1545 } 1546 }
1546 1547
1547 void visitOneShotInterceptor(HOneShotInterceptor node) { 1548 void visitOneShotInterceptor(HOneShotInterceptor node) {
1548 List<js.Expression> arguments = visitArguments(node.inputs); 1549 List<js.Expression> arguments = visitArguments(node.inputs);
1549 var isolate = new js.VariableUse( 1550 var isolate = new js.VariableUse(
1550 backend.namer.globalObjectFor(backend.interceptorsLibrary)); 1551 backend.namer.globalObjectFor(backend.interceptorsLibrary));
1551 Selector selector = getOptimizedSelectorFor(node, node.selector); 1552 Selector selector = getOptimizedSelectorFor(node, node.selector);
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1671 TypeMask receiverType = 1672 TypeMask receiverType =
1672 new TypeMask.nonNullExact(superClass, compiler.world); 1673 new TypeMask.nonNullExact(superClass, compiler.world);
1673 selector = new TypedSelector(receiverType, selector, compiler.world); 1674 selector = new TypedSelector(receiverType, selector, compiler.world);
1674 // TODO(floitsch): we know the target. We shouldn't register a 1675 // TODO(floitsch): we know the target. We shouldn't register a
1675 // dynamic getter. 1676 // dynamic getter.
1676 registry.registerDynamicGetter(selector); 1677 registry.registerDynamicGetter(selector);
1677 registry.registerGetterForSuperMethod(node.element); 1678 registry.registerGetterForSuperMethod(node.element);
1678 methodName = backend.namer.invocationName(selector); 1679 methodName = backend.namer.invocationName(selector);
1679 } else { 1680 } else {
1680 assert(invariant(node, compiler.hasIncrementalSupport)); 1681 assert(invariant(node, compiler.hasIncrementalSupport));
1681 methodName = backend.namer.instanceMethodName(superMethod); 1682 methodName = backend.namer.getNameOfInstanceMember(superMethod);
1682 } 1683 }
1683 push(js.js('#.#.call(#)', 1684 push(js.js('#.#.call(#)',
1684 [backend.emitter.prototypeAccess(superClass, 1685 [backend.emitter.prototypeAccess(superClass,
1685 hasBeenInstantiated: true), 1686 hasBeenInstantiated: true),
1686 methodName, visitArguments(node.inputs, start: 0)]), 1687 methodName, visitArguments(node.inputs, start: 0)]),
1687 node); 1688 node);
1688 } else { 1689 } else {
1689 use(node.receiver); 1690 use(node.receiver);
1690 push( 1691 push(
1691 js.js('#.#(#)', [ 1692 js.js('#.#(#)', [
1692 pop(), backend.namer.aliasedSuperMemberPropertyName(superMethod), 1693 pop(), backend.namer.getNameOfAliasedSuperMember(superMethod),
1693 visitArguments(node.inputs, start: 1)]), // Skip receiver argument. 1694 visitArguments(node.inputs, start: 1)]), // Skip receiver argument.
1694 node); 1695 node);
1695 } 1696 }
1696 } 1697 }
1697 } 1698 }
1698 1699
1699 visitFieldGet(HFieldGet node) { 1700 visitFieldGet(HFieldGet node) {
1700 use(node.receiver); 1701 use(node.receiver);
1701 Element element = node.element; 1702 Element element = node.element;
1702 if (node.isNullCheck) { 1703 if (node.isNullCheck) {
(...skipping 922 matching lines...) Expand 10 before | Expand all | Expand 10 after
2625 if (backend.isInterceptorClass(element.enclosingClass)) { 2626 if (backend.isInterceptorClass(element.enclosingClass)) {
2626 int index = RuntimeTypes.getTypeVariableIndex(element); 2627 int index = RuntimeTypes.getTypeVariableIndex(element);
2627 js.Expression receiver = pop(); 2628 js.Expression receiver = pop();
2628 js.Expression helper = backend.emitter 2629 js.Expression helper = backend.emitter
2629 .staticFunctionAccess(helperElement); 2630 .staticFunctionAccess(helperElement);
2630 push(js.js(r'#(#.$builtinTypeInfo && #.$builtinTypeInfo[#])', 2631 push(js.js(r'#(#.$builtinTypeInfo && #.$builtinTypeInfo[#])',
2631 [helper, receiver, receiver, js.js.number(index)])); 2632 [helper, receiver, receiver, js.js.number(index)]));
2632 } else { 2633 } else {
2633 backend.emitter.registerReadTypeVariable(element); 2634 backend.emitter.registerReadTypeVariable(element);
2634 push(js.js('#.#()', 2635 push(js.js('#.#()',
2635 [pop(), backend.namer.nameForReadTypeVariable(element)])); 2636 [pop(), backend.namer.readTypeVariableName(element)]));
2636 } 2637 }
2637 } else { 2638 } else {
2638 push(js.js('#(#)', [ 2639 push(js.js('#(#)', [
2639 backend.emitter.staticFunctionAccess( 2640 backend.emitter.staticFunctionAccess(
2640 backend.findHelper('convertRtiToRuntimeType')), 2641 backend.findHelper('convertRtiToRuntimeType')),
2641 pop()])); 2642 pop()]));
2642 } 2643 }
2643 } 2644 }
2644 2645
2645 void visitInterfaceType(HInterfaceType node) { 2646 void visitInterfaceType(HInterfaceType node) {
(...skipping 22 matching lines...) Expand all
2668 js.PropertyAccess accessHelper(String name) { 2669 js.PropertyAccess accessHelper(String name) {
2669 Element helper = backend.findHelper(name); 2670 Element helper = backend.findHelper(name);
2670 if (helper == null) { 2671 if (helper == null) {
2671 // For mocked-up tests. 2672 // For mocked-up tests.
2672 return js.js('(void 0).$name'); 2673 return js.js('(void 0).$name');
2673 } 2674 }
2674 registry.registerStaticUse(helper); 2675 registry.registerStaticUse(helper);
2675 return backend.emitter.staticFunctionAccess(helper); 2676 return backend.emitter.staticFunctionAccess(helper);
2676 } 2677 }
2677 } 2678 }
OLDNEW
« no previous file with comments | « pkg/compiler/lib/src/ssa/builder.dart ('k') | pkg/compiler/lib/src/ssa/ssa_tracer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698