21 * questions. |
21 * questions. |
22 */ |
22 */ |
23 package org.graalvm.compiler.hotspot.nodes; |
23 package org.graalvm.compiler.hotspot.nodes; |
24 |
24 |
25 import org.graalvm.compiler.graph.NodeClass; |
25 import org.graalvm.compiler.graph.NodeClass; |
|
26 import org.graalvm.compiler.nodeinfo.InputType; |
26 import org.graalvm.compiler.nodeinfo.NodeInfo; |
27 import org.graalvm.compiler.nodeinfo.NodeInfo; |
27 import org.graalvm.compiler.nodes.ValueNode; |
28 import org.graalvm.compiler.nodes.ValueNode; |
|
29 import org.graalvm.compiler.nodes.memory.address.AddressNode; |
28 import org.graalvm.compiler.nodes.spi.Lowerable; |
30 import org.graalvm.compiler.nodes.spi.Lowerable; |
29 |
31 |
30 @NodeInfo |
32 @NodeInfo |
31 public abstract class ArrayRangeWriteBarrier extends WriteBarrier implements Lowerable { |
33 public abstract class ArrayRangeWriteBarrier extends WriteBarrier implements Lowerable { |
32 |
34 |
33 public static final NodeClass<ArrayRangeWriteBarrier> TYPE = NodeClass.create(ArrayRangeWriteBarrier.class); |
35 public static final NodeClass<ArrayRangeWriteBarrier> TYPE = NodeClass.create(ArrayRangeWriteBarrier.class); |
34 @Input ValueNode object; |
36 @Input(InputType.Association) AddressNode address; |
35 @Input ValueNode startIndex; |
|
36 @Input ValueNode length; |
37 @Input ValueNode length; |
37 |
38 |
38 protected ArrayRangeWriteBarrier(NodeClass<? extends ArrayRangeWriteBarrier> c, ValueNode object, ValueNode startIndex, ValueNode length) { |
39 private final int elementStride; |
|
40 |
|
41 protected ArrayRangeWriteBarrier(NodeClass<? extends ArrayRangeWriteBarrier> c, AddressNode address, ValueNode length, int elementStride) { |
39 super(c); |
42 super(c); |
40 this.object = object; |
43 this.address = address; |
41 this.startIndex = startIndex; |
|
42 this.length = length; |
44 this.length = length; |
|
45 this.elementStride = elementStride; |
43 } |
46 } |
44 |
47 |
45 public ValueNode getObject() { |
48 public AddressNode getAddress() { |
46 return object; |
49 return address; |
47 } |
|
48 |
|
49 public ValueNode getStartIndex() { |
|
50 return startIndex; |
|
51 } |
50 } |
52 |
51 |
53 public ValueNode getLength() { |
52 public ValueNode getLength() { |
54 return length; |
53 return length; |
55 } |
54 } |
|
55 |
|
56 public int getElementStride() { |
|
57 return elementStride; |
|
58 } |
56 } |
59 } |