comparison graal/GraalCompiler/src/com/sun/c1x/ir/NewInstance.java @ 2622:91d3952f7eb7

Framestate work : using stateAFter and reducting the number of nodes with framestates. Intermediate state (does not pass tests)
author Gilles Duboscq <gilles.duboscq@oracle.com>
date Tue, 10 May 2011 12:37:46 +0200
parents f1bc67c2d453
children 4dd0573f510b
comparison
equal deleted inserted replaced
2621:dd115f80acf8 2622:91d3952f7eb7
22 */ 22 */
23 package com.sun.c1x.ir; 23 package com.sun.c1x.ir;
24 24
25 import com.oracle.graal.graph.*; 25 import com.oracle.graal.graph.*;
26 import com.sun.c1x.debug.*; 26 import com.sun.c1x.debug.*;
27 import com.sun.c1x.value.*;
28 import com.sun.cri.ci.*; 27 import com.sun.cri.ci.*;
29 import com.sun.cri.ri.*; 28 import com.sun.cri.ri.*;
30 29
31 /** 30 /**
32 * The {@code NewInstance} instruction represents the allocation of an instance class object. 31 * The {@code NewInstance} instruction represents the allocation of an instance class object.
33 */ 32 */
34 public final class NewInstance extends StateSplit { 33 public final class NewInstance extends Instruction {
35 34
36 private static final int INPUT_COUNT = 0; 35 private static final int INPUT_COUNT = 0;
37 private static final int SUCCESSOR_COUNT = 0; 36 private static final int SUCCESSOR_COUNT = 0;
38 37
39 final RiType instanceClass; 38 final RiType instanceClass;
45 * @param type the class being allocated 44 * @param type the class being allocated
46 * @param cpi the constant pool index 45 * @param cpi the constant pool index
47 * @param stateBefore the state before executing this instruction 46 * @param stateBefore the state before executing this instruction
48 * @param graph 47 * @param graph
49 */ 48 */
50 public NewInstance(RiType type, int cpi, RiConstantPool constantPool, FrameState stateBefore, Graph graph) { 49 public NewInstance(RiType type, int cpi, RiConstantPool constantPool, Graph graph) {
51 super(CiKind.Object, stateBefore, INPUT_COUNT, SUCCESSOR_COUNT, graph); 50 super(CiKind.Object, INPUT_COUNT, SUCCESSOR_COUNT, graph);
52 this.instanceClass = type; 51 this.instanceClass = type;
53 this.cpi = cpi; 52 this.cpi = cpi;
54 this.constantPool = constantPool; 53 this.constantPool = constantPool;
55 setFlag(Flag.NonNull); 54 setFlag(Flag.NonNull);
56 } 55 }
72 public RiType exactType() { 71 public RiType exactType() {
73 return instanceClass; 72 return instanceClass;
74 } 73 }
75 74
76 @Override 75 @Override
76 public boolean canTrap() {
77 return true;
78 }
79
80 @Override
77 public void accept(ValueVisitor v) { 81 public void accept(ValueVisitor v) {
78 v.visitNewInstance(this); 82 v.visitNewInstance(this);
79 } 83 }
80 84
81 @Override 85 @Override