src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/phases/WriteBarrierAdditionPhase.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File
*** old/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/phases/WriteBarrierAdditionPhase.java Mon Mar 20 17:38:50 2017
--- new/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/phases/WriteBarrierAdditionPhase.java Mon Mar 20 17:38:50 2017
*** 33,44 ****
--- 33,44 ----
import org.graalvm.compiler.hotspot.nodes.SerialArrayRangeWriteBarrier;
import org.graalvm.compiler.hotspot.nodes.SerialWriteBarrier;
import org.graalvm.compiler.nodes.StructuredGraph;
import org.graalvm.compiler.nodes.ValueNode;
import org.graalvm.compiler.nodes.extended.ArrayRangeWriteNode;
+ import org.graalvm.compiler.nodes.java.AbstractCompareAndSwapNode;
import org.graalvm.compiler.nodes.java.LoweredAtomicReadAndWriteNode;
import org.graalvm.compiler.nodes.java.LoweredCompareAndSwapNode;
import org.graalvm.compiler.nodes.memory.FixedAccessNode;
import org.graalvm.compiler.nodes.memory.HeapAccess.BarrierType;
import org.graalvm.compiler.nodes.memory.ReadNode;
import org.graalvm.compiler.nodes.memory.WriteNode;
import org.graalvm.compiler.nodes.memory.address.AddressNode;
*** 61,72 ****
--- 61,72 ----
} else if (n instanceof WriteNode) {
addWriteNodeBarriers((WriteNode) n, graph);
} else if (n instanceof LoweredAtomicReadAndWriteNode) {
LoweredAtomicReadAndWriteNode loweredAtomicReadAndWriteNode = (LoweredAtomicReadAndWriteNode) n;
addAtomicReadWriteNodeBarriers(loweredAtomicReadAndWriteNode, graph);
! } else if (n instanceof LoweredCompareAndSwapNode) {
! addCASBarriers((LoweredCompareAndSwapNode) n, graph);
! } else if (n instanceof AbstractCompareAndSwapNode) {
! addCASBarriers((AbstractCompareAndSwapNode) n, graph);
} else if (n instanceof ArrayRangeWriteNode) {
ArrayRangeWriteNode node = (ArrayRangeWriteNode) n;
if (node.isObjectArray()) {
addArrayRangeBarriers(node, graph);
}
*** 114,124 ****
--- 114,124 ----
break;
case IMPRECISE:
case PRECISE:
boolean precise = barrierType == BarrierType.PRECISE;
if (config.useG1GC) {
! if (!node.isInitialization()) {
! if (!node.getLocationIdentity().isInit()) {
addG1PreWriteBarrier(node, node.getAddress(), null, true, node.getNullCheck(), graph);
}
addG1PostWriteBarrier(node, node.getAddress(), node.value(), precise, graph);
} else {
addSerialPostWriteBarrier(node, node.getAddress(), node.value(), precise, graph);
*** 148,158 ****
--- 148,158 ----
default:
throw new GraalError("unexpected barrier type: " + barrierType);
}
}
! private void addCASBarriers(LoweredCompareAndSwapNode node, StructuredGraph graph) {
! private void addCASBarriers(AbstractCompareAndSwapNode node, StructuredGraph graph) {
BarrierType barrierType = node.getBarrierType();
switch (barrierType) {
case NONE:
// nothing to do
break;
src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.hotspot/src/org/graalvm/compiler/hotspot/phases/WriteBarrierAdditionPhase.java
Index
Unified diffs
Context diffs
Sdiffs
Patch
New
Old
Previous File
Next File