Mercurial > hg > truffle
comparison graal/com.oracle.graal.hotspot/src/com/oracle/graal/hotspot/nodes/StubForeignCallNode.java @ 11959:23ccaa863eda
made CodeCacheProvider independent of MetaAccessProvider (GRAAL-511)
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Thu, 10 Oct 2013 16:14:55 +0200 |
parents | 70f43f67cdcb |
children | 0fc653a9e019 |
comparison
equal
deleted
inserted
replaced
11958:a0f5be106e67 | 11959:23ccaa863eda |
---|---|
39 @Input private final NodeInputList<ValueNode> arguments; | 39 @Input private final NodeInputList<ValueNode> arguments; |
40 private final MetaAccessProvider runtime; | 40 private final MetaAccessProvider runtime; |
41 | 41 |
42 private final ForeignCallDescriptor descriptor; | 42 private final ForeignCallDescriptor descriptor; |
43 | 43 |
44 public StubForeignCallNode(MetaAccessProvider runtime, ForeignCallDescriptor descriptor, ValueNode... arguments) { | 44 public StubForeignCallNode(MetaAccessProvider metaAccess, ForeignCallDescriptor descriptor, ValueNode... arguments) { |
45 super(StampFactory.forKind(Kind.fromJavaClass(descriptor.getResultType()))); | 45 super(StampFactory.forKind(Kind.fromJavaClass(descriptor.getResultType()))); |
46 this.arguments = new NodeInputList<>(this, arguments); | 46 this.arguments = new NodeInputList<>(this, arguments); |
47 this.descriptor = descriptor; | 47 this.descriptor = descriptor; |
48 this.runtime = runtime; | 48 this.runtime = metaAccess; |
49 } | 49 } |
50 | 50 |
51 public ForeignCallDescriptor getDescriptor() { | 51 public ForeignCallDescriptor getDescriptor() { |
52 return descriptor; | 52 return descriptor; |
53 } | 53 } |
66 } | 66 } |
67 | 67 |
68 @Override | 68 @Override |
69 public void generate(LIRGeneratorTool gen) { | 69 public void generate(LIRGeneratorTool gen) { |
70 assert graph().start() instanceof StubStartNode; | 70 assert graph().start() instanceof StubStartNode; |
71 ForeignCallLinkage linkage = gen.getRuntime().lookupForeignCall(descriptor); | 71 ForeignCallLinkage linkage = gen.getCodeCache().lookupForeignCall(descriptor); |
72 Value[] operands = operands(gen); | 72 Value[] operands = operands(gen); |
73 Value result = gen.emitForeignCall(linkage, null, operands); | 73 Value result = gen.emitForeignCall(linkage, null, operands); |
74 if (result != null) { | 74 if (result != null) { |
75 gen.setResult(this, result); | 75 gen.setResult(this, result); |
76 } | 76 } |