comparison graal/com.oracle.graal.hotspot.aarch64/src/com/oracle/graal/hotspot/aarch64/AArch64HotSpotNodeLIRBuilder.java @ 23348:9306a9611097

Update JVMCI import: Make CallingConvention.Type extensible; remove unused stackOnly parameter
author Christian Wimmer <christian.wimmer@oracle.com>
date Thu, 21 Jan 2016 14:24:24 -0800
parents f868bd0c3f02
children 1e8342f17731
comparison
equal deleted inserted replaced
23347:f868bd0c3f02 23348:9306a9611097
36 import jdk.vm.ci.code.Register; 36 import jdk.vm.ci.code.Register;
37 import jdk.vm.ci.code.RegisterValue; 37 import jdk.vm.ci.code.RegisterValue;
38 import jdk.vm.ci.code.StackSlot; 38 import jdk.vm.ci.code.StackSlot;
39 import jdk.vm.ci.code.ValueUtil; 39 import jdk.vm.ci.code.ValueUtil;
40 import jdk.vm.ci.common.JVMCIError; 40 import jdk.vm.ci.common.JVMCIError;
41 import jdk.vm.ci.hotspot.HotSpotCallingConventionType;
41 import jdk.vm.ci.hotspot.HotSpotResolvedJavaMethod; 42 import jdk.vm.ci.hotspot.HotSpotResolvedJavaMethod;
42 import jdk.vm.ci.meta.AllocatableValue; 43 import jdk.vm.ci.meta.AllocatableValue;
44 import jdk.vm.ci.meta.JavaType;
43 import jdk.vm.ci.meta.LIRKind; 45 import jdk.vm.ci.meta.LIRKind;
44 import jdk.vm.ci.meta.Value; 46 import jdk.vm.ci.meta.Value;
45 47
46 import com.oracle.graal.compiler.aarch64.AArch64NodeLIRBuilder; 48 import com.oracle.graal.compiler.aarch64.AArch64NodeLIRBuilder;
47 import com.oracle.graal.compiler.aarch64.AArch64NodeMatchRules; 49 import com.oracle.graal.compiler.aarch64.AArch64NodeMatchRules;
55 import com.oracle.graal.hotspot.nodes.DirectCompareAndSwapNode; 57 import com.oracle.graal.hotspot.nodes.DirectCompareAndSwapNode;
56 import com.oracle.graal.hotspot.nodes.HotSpotDirectCallTargetNode; 58 import com.oracle.graal.hotspot.nodes.HotSpotDirectCallTargetNode;
57 import com.oracle.graal.hotspot.nodes.HotSpotIndirectCallTargetNode; 59 import com.oracle.graal.hotspot.nodes.HotSpotIndirectCallTargetNode;
58 import com.oracle.graal.lir.LIRFrameState; 60 import com.oracle.graal.lir.LIRFrameState;
59 import com.oracle.graal.lir.Variable; 61 import com.oracle.graal.lir.Variable;
62 import com.oracle.graal.lir.aarch64.AArch64BreakpointOp;
60 import com.oracle.graal.lir.aarch64.AArch64Move.CompareAndSwap; 63 import com.oracle.graal.lir.aarch64.AArch64Move.CompareAndSwap;
61 import com.oracle.graal.lir.gen.LIRGeneratorTool; 64 import com.oracle.graal.lir.gen.LIRGeneratorTool;
62 import com.oracle.graal.nodes.CallTargetNode.InvokeKind; 65 import com.oracle.graal.nodes.CallTargetNode.InvokeKind;
66 import com.oracle.graal.nodes.BreakpointNode;
63 import com.oracle.graal.nodes.DirectCallTargetNode; 67 import com.oracle.graal.nodes.DirectCallTargetNode;
64 import com.oracle.graal.nodes.FullInfopointNode; 68 import com.oracle.graal.nodes.FullInfopointNode;
65 import com.oracle.graal.nodes.IndirectCallTargetNode; 69 import com.oracle.graal.nodes.IndirectCallTargetNode;
66 import com.oracle.graal.nodes.ParameterNode; 70 import com.oracle.graal.nodes.ParameterNode;
67 import com.oracle.graal.nodes.SafepointNode; 71 import com.oracle.graal.nodes.SafepointNode;
187 Variable result = gen.newVariable(newValue.getLIRKind()); 191 Variable result = gen.newVariable(newValue.getLIRKind());
188 Variable scratch = gen.newVariable(LIRKind.value(AArch64Kind.DWORD)); 192 Variable scratch = gen.newVariable(LIRKind.value(AArch64Kind.DWORD));
189 append(new CompareAndSwap(result, cmpValue, newValue, getGen().asAddressValue(operand(x.getAddress())), scratch)); 193 append(new CompareAndSwap(result, cmpValue, newValue, getGen().asAddressValue(operand(x.getAddress())), scratch));
190 setResult(x, result); 194 setResult(x, result);
191 } 195 }
196
197 @Override
198 public void visitBreakpointNode(BreakpointNode node) {
199 JavaType[] sig = new JavaType[node.arguments().size()];
200 for (int i = 0; i < sig.length; i++) {
201 sig[i] = node.arguments().get(i).stamp().javaType(gen.getMetaAccess());
202 }
203
204 Value[] parameters = visitInvokeArguments(gen.getResult().getFrameMapBuilder().getRegisterConfig().getCallingConvention(HotSpotCallingConventionType.JavaCall, null, sig, gen.target()),
205 node.arguments());
206 append(new AArch64BreakpointOp(parameters));
207 }
192 } 208 }