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

Side by Side Diff: sdk/lib/_internal/compiler/implementation/ssa/nodes.dart

Issue 15697004: Add a proper HInvokeConstructorBody instead of mis-using HInvokeDynamicMethod. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 7 years, 7 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
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 abstract class HVisitor<R> { 7 abstract class HVisitor<R> {
8 R visitAdd(HAdd node); 8 R visitAdd(HAdd node);
9 R visitBailoutTarget(HBailoutTarget node); 9 R visitBailoutTarget(HBailoutTarget node);
10 R visitBitAnd(HBitAnd node); 10 R visitBitAnd(HBitAnd node);
(...skipping 19 matching lines...) Expand all
30 R visitIf(HIf node); 30 R visitIf(HIf node);
31 R visitIndex(HIndex node); 31 R visitIndex(HIndex node);
32 R visitIndexAssign(HIndexAssign node); 32 R visitIndexAssign(HIndexAssign node);
33 R visitInterceptor(HInterceptor node); 33 R visitInterceptor(HInterceptor node);
34 R visitInvokeClosure(HInvokeClosure node); 34 R visitInvokeClosure(HInvokeClosure node);
35 R visitInvokeDynamicGetter(HInvokeDynamicGetter node); 35 R visitInvokeDynamicGetter(HInvokeDynamicGetter node);
36 R visitInvokeDynamicMethod(HInvokeDynamicMethod node); 36 R visitInvokeDynamicMethod(HInvokeDynamicMethod node);
37 R visitInvokeDynamicSetter(HInvokeDynamicSetter node); 37 R visitInvokeDynamicSetter(HInvokeDynamicSetter node);
38 R visitInvokeStatic(HInvokeStatic node); 38 R visitInvokeStatic(HInvokeStatic node);
39 R visitInvokeSuper(HInvokeSuper node); 39 R visitInvokeSuper(HInvokeSuper node);
40 R visitInvokeConstructorBody(HInvokeConstructorBody node);
40 R visitIs(HIs node); 41 R visitIs(HIs node);
41 R visitLazyStatic(HLazyStatic node); 42 R visitLazyStatic(HLazyStatic node);
42 R visitLess(HLess node); 43 R visitLess(HLess node);
43 R visitLessEqual(HLessEqual node); 44 R visitLessEqual(HLessEqual node);
44 R visitLiteralList(HLiteralList node); 45 R visitLiteralList(HLiteralList node);
45 R visitLocalGet(HLocalGet node); 46 R visitLocalGet(HLocalGet node);
46 R visitLocalSet(HLocalSet node); 47 R visitLocalSet(HLocalSet node);
47 R visitLocalValue(HLocalValue node); 48 R visitLocalValue(HLocalValue node);
48 R visitLoopBranch(HLoopBranch node); 49 R visitLoopBranch(HLoopBranch node);
49 R visitMultiply(HMultiply node); 50 R visitMultiply(HMultiply node);
(...skipping 246 matching lines...) Expand 10 before | Expand all | Expand 10 after
296 visitGoto(HGoto node) => visitControlFlow(node); 297 visitGoto(HGoto node) => visitControlFlow(node);
297 visitGreater(HGreater node) => visitRelational(node); 298 visitGreater(HGreater node) => visitRelational(node);
298 visitGreaterEqual(HGreaterEqual node) => visitRelational(node); 299 visitGreaterEqual(HGreaterEqual node) => visitRelational(node);
299 visitIdentity(HIdentity node) => visitRelational(node); 300 visitIdentity(HIdentity node) => visitRelational(node);
300 visitIf(HIf node) => visitConditionalBranch(node); 301 visitIf(HIf node) => visitConditionalBranch(node);
301 visitIndex(HIndex node) => visitInstruction(node); 302 visitIndex(HIndex node) => visitInstruction(node);
302 visitIndexAssign(HIndexAssign node) => visitInstruction(node); 303 visitIndexAssign(HIndexAssign node) => visitInstruction(node);
303 visitInterceptor(HInterceptor node) => visitInstruction(node); 304 visitInterceptor(HInterceptor node) => visitInstruction(node);
304 visitInvokeClosure(HInvokeClosure node) 305 visitInvokeClosure(HInvokeClosure node)
305 => visitInvokeDynamic(node); 306 => visitInvokeDynamic(node);
307 visitInvokeConstructorBody(HInvokeConstructorBody node)
308 => visitInvokeStatic(node);
306 visitInvokeDynamicMethod(HInvokeDynamicMethod node) 309 visitInvokeDynamicMethod(HInvokeDynamicMethod node)
307 => visitInvokeDynamic(node); 310 => visitInvokeDynamic(node);
308 visitInvokeDynamicGetter(HInvokeDynamicGetter node) 311 visitInvokeDynamicGetter(HInvokeDynamicGetter node)
309 => visitInvokeDynamicField(node); 312 => visitInvokeDynamicField(node);
310 visitInvokeDynamicSetter(HInvokeDynamicSetter node) 313 visitInvokeDynamicSetter(HInvokeDynamicSetter node)
311 => visitInvokeDynamicField(node); 314 => visitInvokeDynamicField(node);
312 visitInvokeStatic(HInvokeStatic node) => visitInvoke(node); 315 visitInvokeStatic(HInvokeStatic node) => visitInvoke(node);
313 visitInvokeSuper(HInvokeSuper node) => visitInvoke(node); 316 visitInvokeSuper(HInvokeSuper node) => visitInvokeStatic(node);
314 visitJump(HJump node) => visitControlFlow(node); 317 visitJump(HJump node) => visitControlFlow(node);
315 visitLazyStatic(HLazyStatic node) => visitInstruction(node); 318 visitLazyStatic(HLazyStatic node) => visitInstruction(node);
316 visitLess(HLess node) => visitRelational(node); 319 visitLess(HLess node) => visitRelational(node);
317 visitLessEqual(HLessEqual node) => visitRelational(node); 320 visitLessEqual(HLessEqual node) => visitRelational(node);
318 visitLiteralList(HLiteralList node) => visitInstruction(node); 321 visitLiteralList(HLiteralList node) => visitInstruction(node);
319 visitLocalGet(HLocalGet node) => visitFieldAccess(node); 322 visitLocalGet(HLocalGet node) => visitFieldAccess(node);
320 visitLocalSet(HLocalSet node) => visitFieldAccess(node); 323 visitLocalSet(HLocalSet node) => visitFieldAccess(node);
321 visitLocalValue(HLocalValue node) => visitInstruction(node); 324 visitLocalValue(HLocalValue node) => visitInstruction(node);
322 visitLoopBranch(HLoopBranch node) => visitConditionalBranch(node); 325 visitLoopBranch(HLoopBranch node) => visitConditionalBranch(node);
323 visitNegate(HNegate node) => visitInvokeUnary(node); 326 visitNegate(HNegate node) => visitInvokeUnary(node);
(...skipping 1077 matching lines...) Expand 10 before | Expand all | Expand 10 after
1401 toString() => 'invoke super: ${element.name}'; 1404 toString() => 'invoke super: ${element.name}';
1402 accept(HVisitor visitor) => visitor.visitInvokeSuper(this); 1405 accept(HVisitor visitor) => visitor.visitInvokeSuper(this);
1403 1406
1404 HInstruction get value { 1407 HInstruction get value {
1405 assert(isSetter); 1408 assert(isSetter);
1406 // Index 0: 'this'. 1409 // Index 0: 'this'.
1407 return inputs[1]; 1410 return inputs[1];
1408 } 1411 }
1409 } 1412 }
1410 1413
1414 class HInvokeConstructorBody extends HInvokeStatic {
1415 HInvokeConstructorBody(element, inputs)
1416 : super(element, inputs, HType.UNKNOWN);
1417
1418 String toString() => 'invoke constructor body: ${element.name}';
1419 accept(HVisitor visitor) => visitor.visitInvokeConstructorBody(this);
1420 }
1421
1411 abstract class HFieldAccess extends HInstruction { 1422 abstract class HFieldAccess extends HInstruction {
1412 final Element element; 1423 final Element element;
1413 1424
1414 HFieldAccess(Element element, List<HInstruction> inputs) 1425 HFieldAccess(Element element, List<HInstruction> inputs)
1415 : this.element = element, super(inputs); 1426 : this.element = element, super(inputs);
1416 1427
1417 HInstruction get receiver => inputs[0]; 1428 HInstruction get receiver => inputs[0];
1418 } 1429 }
1419 1430
1420 class HFieldGet extends HFieldAccess { 1431 class HFieldGet extends HFieldAccess {
(...skipping 1230 matching lines...) Expand 10 before | Expand all | Expand 10 after
2651 HBasicBlock get start => expression.start; 2662 HBasicBlock get start => expression.start;
2652 HBasicBlock get end { 2663 HBasicBlock get end {
2653 // We don't create a switch block if there are no cases. 2664 // We don't create a switch block if there are no cases.
2654 assert(!statements.isEmpty); 2665 assert(!statements.isEmpty);
2655 return statements.last.end; 2666 return statements.last.end;
2656 } 2667 }
2657 2668
2658 bool accept(HStatementInformationVisitor visitor) => 2669 bool accept(HStatementInformationVisitor visitor) =>
2659 visitor.visitSwitchInfo(this); 2670 visitor.visitSwitchInfo(this);
2660 } 2671 }
OLDNEW
« no previous file with comments | « sdk/lib/_internal/compiler/implementation/ssa/codegen.dart ('k') | sdk/lib/_internal/compiler/implementation/ssa/tracer.dart » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698