Mercurial > hg > graal-compiler
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 } |