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

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

Issue 917083003: 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 1455 matching lines...) Expand 10 before | Expand all | Expand 10 after
1466 // Depending on how the then/else branches terminate 1466 // Depending on how the then/else branches terminate
1467 // (e.g., return/throw/break) there can be any number of these. 1467 // (e.g., return/throw/break) there can be any number of these.
1468 List<HBasicBlock> dominated = node.block.dominatedBlocks; 1468 List<HBasicBlock> dominated = node.block.dominatedBlocks;
1469 for (int i = 2; i < dominated.length; i++) { 1469 for (int i = 2; i < dominated.length; i++) {
1470 visitBasicBlock(dominated[i]); 1470 visitBasicBlock(dominated[i]);
1471 } 1471 }
1472 } 1472 }
1473 1473
1474 void visitInterceptor(HInterceptor node) { 1474 void visitInterceptor(HInterceptor node) {
1475 registry.registerSpecializedGetInterceptor(node.interceptedClasses); 1475 registry.registerSpecializedGetInterceptor(node.interceptedClasses);
1476 String name = backend.namer.nameForGetInterceptor(node.interceptedClasses); 1476 String name = backend.namer.getInterceptorName(
1477 backend.getInterceptorMethod, node.interceptedClasses);
1477 var isolate = new js.VariableUse( 1478 var isolate = new js.VariableUse(
1478 backend.namer.globalObjectFor(backend.interceptorsLibrary)); 1479 backend.namer.globalObjectFor(backend.interceptorsLibrary));
1479 use(node.receiver); 1480 use(node.receiver);
1480 List<js.Expression> arguments = <js.Expression>[pop()]; 1481 List<js.Expression> arguments = <js.Expression>[pop()];
1481 push(js.propertyCall(isolate, name, arguments), node); 1482 push(js.propertyCall(isolate, name, arguments), node);
1482 registry.registerUseInterceptor(); 1483 registry.registerUseInterceptor();
1483 } 1484 }
1484 1485
1485 visitInvokeDynamicMethod(HInvokeDynamicMethod node) { 1486 visitInvokeDynamicMethod(HInvokeDynamicMethod node) {
1486 use(node.receiver); 1487 use(node.receiver);
(...skipping 25 matching lines...) Expand all
1512 if (methodName == null) { 1513 if (methodName == null) {
1513 methodName = backend.namer.invocationName(node.selector); 1514 methodName = backend.namer.invocationName(node.selector);
1514 registerMethodInvoke(node); 1515 registerMethodInvoke(node);
1515 } 1516 }
1516 push(js.propertyCall(object, methodName, arguments), node); 1517 push(js.propertyCall(object, methodName, arguments), node);
1517 } 1518 }
1518 1519
1519 void visitInvokeConstructorBody(HInvokeConstructorBody node) { 1520 void visitInvokeConstructorBody(HInvokeConstructorBody node) {
1520 use(node.inputs[0]); 1521 use(node.inputs[0]);
1521 js.Expression object = pop(); 1522 js.Expression object = pop();
1522 String methodName = backend.namer.instanceMethodName(node.element); 1523 String methodName = backend.namer.getNameOfInstanceMember(node.element);
1523 List<js.Expression> arguments = visitArguments(node.inputs); 1524 List<js.Expression> arguments = visitArguments(node.inputs);
1524 push(js.propertyCall(object, methodName, arguments), node); 1525 push(js.propertyCall(object, methodName, arguments), node);
1525 registry.registerStaticUse(node.element); 1526 registry.registerStaticUse(node.element);
1526 } 1527 }
1527 1528
1528 void visitOneShotInterceptor(HOneShotInterceptor node) { 1529 void visitOneShotInterceptor(HOneShotInterceptor node) {
1529 List<js.Expression> arguments = visitArguments(node.inputs); 1530 List<js.Expression> arguments = visitArguments(node.inputs);
1530 var isolate = new js.VariableUse( 1531 var isolate = new js.VariableUse(
1531 backend.namer.globalObjectFor(backend.interceptorsLibrary)); 1532 backend.namer.globalObjectFor(backend.interceptorsLibrary));
1532 Selector selector = getOptimizedSelectorFor(node, node.selector); 1533 Selector selector = getOptimizedSelectorFor(node, node.selector);
(...skipping 119 matching lines...) Expand 10 before | Expand all | Expand 10 after
1652 TypeMask receiverType = 1653 TypeMask receiverType =
1653 new TypeMask.nonNullExact(superClass, compiler.world); 1654 new TypeMask.nonNullExact(superClass, compiler.world);
1654 selector = new TypedSelector(receiverType, selector, compiler.world); 1655 selector = new TypedSelector(receiverType, selector, compiler.world);
1655 // TODO(floitsch): we know the target. We shouldn't register a 1656 // TODO(floitsch): we know the target. We shouldn't register a
1656 // dynamic getter. 1657 // dynamic getter.
1657 registry.registerDynamicGetter(selector); 1658 registry.registerDynamicGetter(selector);
1658 registry.registerGetterForSuperMethod(node.element); 1659 registry.registerGetterForSuperMethod(node.element);
1659 methodName = backend.namer.invocationName(selector); 1660 methodName = backend.namer.invocationName(selector);
1660 } else { 1661 } else {
1661 assert(invariant(node, compiler.hasIncrementalSupport)); 1662 assert(invariant(node, compiler.hasIncrementalSupport));
1662 methodName = backend.namer.instanceMethodName(superMethod); 1663 methodName = backend.namer.getNameOfInstanceMember(superMethod);
1663 } 1664 }
1664 push(js.js('#.#.call(#)', 1665 push(js.js('#.#.call(#)',
1665 [backend.emitter.prototypeAccess(superClass, 1666 [backend.emitter.prototypeAccess(superClass,
1666 hasBeenInstantiated: true), 1667 hasBeenInstantiated: true),
1667 methodName, visitArguments(node.inputs, start: 0)]), 1668 methodName, visitArguments(node.inputs, start: 0)]),
1668 node); 1669 node);
1669 } else { 1670 } else {
1670 use(node.receiver); 1671 use(node.receiver);
1671 push( 1672 push(
1672 js.js('#.#(#)', [ 1673 js.js('#.#(#)', [
1673 pop(), backend.namer.aliasedSuperMemberPropertyName(superMethod), 1674 pop(), backend.namer.getNameOfAliasedSuperMember(superMethod),
1674 visitArguments(node.inputs, start: 1)]), // Skip receiver argument. 1675 visitArguments(node.inputs, start: 1)]), // Skip receiver argument.
1675 node); 1676 node);
1676 } 1677 }
1677 } 1678 }
1678 } 1679 }
1679 1680
1680 visitFieldGet(HFieldGet node) { 1681 visitFieldGet(HFieldGet node) {
1681 use(node.receiver); 1682 use(node.receiver);
1682 Element element = node.element; 1683 Element element = node.element;
1683 if (node.isNullCheck) { 1684 if (node.isNullCheck) {
(...skipping 940 matching lines...) Expand 10 before | Expand all | Expand 10 after
2624 if (backend.isInterceptorClass(element.enclosingClass)) { 2625 if (backend.isInterceptorClass(element.enclosingClass)) {
2625 int index = RuntimeTypes.getTypeVariableIndex(element); 2626 int index = RuntimeTypes.getTypeVariableIndex(element);
2626 js.Expression receiver = pop(); 2627 js.Expression receiver = pop();
2627 js.Expression helper = backend.emitter 2628 js.Expression helper = backend.emitter
2628 .staticFunctionAccess(helperElement); 2629 .staticFunctionAccess(helperElement);
2629 push(js.js(r'#(#.$builtinTypeInfo && #.$builtinTypeInfo[#])', 2630 push(js.js(r'#(#.$builtinTypeInfo && #.$builtinTypeInfo[#])',
2630 [helper, receiver, receiver, js.js.number(index)])); 2631 [helper, receiver, receiver, js.js.number(index)]));
2631 } else { 2632 } else {
2632 backend.emitter.registerReadTypeVariable(element); 2633 backend.emitter.registerReadTypeVariable(element);
2633 push(js.js('#.#()', 2634 push(js.js('#.#()',
2634 [pop(), backend.namer.nameForReadTypeVariable(element)])); 2635 [pop(), backend.namer.readTypeVariableName(element)]));
2635 } 2636 }
2636 } else { 2637 } else {
2637 push(js.js('#(#)', [ 2638 push(js.js('#(#)', [
2638 backend.emitter.staticFunctionAccess( 2639 backend.emitter.staticFunctionAccess(
2639 backend.findHelper('convertRtiToRuntimeType')), 2640 backend.findHelper('convertRtiToRuntimeType')),
2640 pop()])); 2641 pop()]));
2641 } 2642 }
2642 } 2643 }
2643 2644
2644 void visitInterfaceType(HInterfaceType node) { 2645 void visitInterfaceType(HInterfaceType node) {
(...skipping 22 matching lines...) Expand all
2667 js.PropertyAccess accessHelper(String name) { 2668 js.PropertyAccess accessHelper(String name) {
2668 Element helper = backend.findHelper(name); 2669 Element helper = backend.findHelper(name);
2669 if (helper == null) { 2670 if (helper == null) {
2670 // For mocked-up tests. 2671 // For mocked-up tests.
2671 return js.js('(void 0).$name'); 2672 return js.js('(void 0).$name');
2672 } 2673 }
2673 registry.registerStaticUse(helper); 2674 registry.registerStaticUse(helper);
2674 return backend.emitter.staticFunctionAccess(helper); 2675 return backend.emitter.staticFunctionAccess(helper);
2675 } 2676 }
2676 } 2677 }
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