Skip to content

Commit 5a1d0a2

Browse files
committed
[GR-9898] DragonEgg replaced by f2c.
PullRequest: fastr/1519
2 parents b687acb + 3ffd89d commit 5a1d0a2

File tree

51 files changed

+3068
-415
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

51 files changed

+3068
-415
lines changed

com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/ListMR.java

Lines changed: 31 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -43,20 +43,19 @@
4343
import com.oracle.truffle.r.nodes.access.vector.ReplaceVectorNode;
4444
import com.oracle.truffle.r.nodes.attributes.SpecialAttributesFunctions.GetNamesAttributeNode;
4545
import com.oracle.truffle.r.nodes.control.RLengthNode;
46+
import com.oracle.truffle.r.runtime.data.NativeDataAccess;
4647
import com.oracle.truffle.r.runtime.data.RDataFactory;
4748
import com.oracle.truffle.r.runtime.data.RExpression;
4849
import com.oracle.truffle.r.runtime.data.RFunction;
4950
import com.oracle.truffle.r.runtime.data.RList;
5051
import com.oracle.truffle.r.runtime.data.RLogical;
5152
import com.oracle.truffle.r.runtime.data.RMissing;
52-
import com.oracle.truffle.r.runtime.data.RObject;
5353
import com.oracle.truffle.r.runtime.data.RPairList;
5454
import com.oracle.truffle.r.runtime.data.RStringVector;
5555
import com.oracle.truffle.r.runtime.interop.Foreign2R;
5656
import com.oracle.truffle.r.runtime.interop.Foreign2RNodeGen;
5757
import com.oracle.truffle.r.runtime.interop.R2Foreign;
5858
import com.oracle.truffle.r.runtime.interop.R2ForeignNodeGen;
59-
import com.oracle.truffle.r.runtime.interop.RObjectNativeWrapper;
6059

6160
public class ListMR {
6261

@@ -118,14 +117,21 @@ protected Object access(TruffleObject receiver, Object idx) {
118117
@Resolve(message = "IS_POINTER")
119118
public abstract static class IsPointerNode extends Node {
120119
protected boolean access(@SuppressWarnings("unused") Object receiver) {
121-
return false;
120+
return true;
121+
}
122+
}
123+
124+
@Resolve(message = "AS_POINTER")
125+
public abstract static class AsPointerNode extends Node {
126+
protected Object access(Object receiver) {
127+
return NativeDataAccess.asPointer(receiver);
122128
}
123129
}
124130

125131
@Resolve(message = "TO_NATIVE")
126132
public abstract static class ToNativeNode extends Node {
127-
protected Object access(RObject receiver) {
128-
return new RObjectNativeWrapper(receiver);
133+
protected Object access(Object receiver) {
134+
return receiver;
129135
}
130136
}
131137

@@ -209,14 +215,21 @@ protected Object access(TruffleObject receiver, Object idx) {
209215
@Resolve(message = "IS_POINTER")
210216
public abstract static class IsPointerNode extends Node {
211217
protected boolean access(@SuppressWarnings("unused") Object receiver) {
212-
return false;
218+
return true;
219+
}
220+
}
221+
222+
@Resolve(message = "AS_POINTER")
223+
public abstract static class AsPointerNode extends Node {
224+
protected Object access(Object receiver) {
225+
return NativeDataAccess.asPointer(receiver);
213226
}
214227
}
215228

216229
@Resolve(message = "TO_NATIVE")
217230
public abstract static class ToNativeNode extends Node {
218-
protected Object access(RObject receiver) {
219-
return new RObjectNativeWrapper(receiver);
231+
protected Object access(@SuppressWarnings("unused") Object receiver) {
232+
return this;
220233
}
221234
}
222235

@@ -294,14 +307,21 @@ protected Object access(TruffleObject receiver, Object idx) {
294307
@Resolve(message = "IS_POINTER")
295308
public abstract static class IsPointerNode extends Node {
296309
protected boolean access(@SuppressWarnings("unused") Object receiver) {
297-
return false;
310+
return true;
311+
}
312+
}
313+
314+
@Resolve(message = "AS_POINTER")
315+
public abstract static class AsPointerNode extends Node {
316+
protected Object access(Object receiver) {
317+
return NativeDataAccess.asPointer(receiver);
298318
}
299319
}
300320

301321
@Resolve(message = "TO_NATIVE")
302322
public abstract static class ToNativeNode extends Node {
303-
protected Object access(RObject receiver) {
304-
return new RObjectNativeWrapper(receiver);
323+
protected Object access(Object receiver) {
324+
return receiver;
305325
}
306326
}
307327

com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RAbstractVectorAccessFactory.java

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,8 @@
5353
import com.oracle.truffle.r.nodes.access.vector.ReplaceVectorNodeGen;
5454
import com.oracle.truffle.r.nodes.control.RLengthNode;
5555
import com.oracle.truffle.r.runtime.RRuntime;
56+
import com.oracle.truffle.r.runtime.data.NativeDataAccess;
5657
import com.oracle.truffle.r.runtime.data.RLogical;
57-
import com.oracle.truffle.r.runtime.data.RObject;
5858
import com.oracle.truffle.r.runtime.data.RRaw;
5959
import com.oracle.truffle.r.runtime.data.RScalar;
6060
import com.oracle.truffle.r.runtime.data.RString;
@@ -66,7 +66,6 @@
6666
import com.oracle.truffle.r.runtime.interop.Foreign2RNodeGen;
6767
import com.oracle.truffle.r.runtime.interop.R2Foreign;
6868
import com.oracle.truffle.r.runtime.interop.R2ForeignNodeGen;
69-
import com.oracle.truffle.r.runtime.interop.RObjectNativeWrapper;
7069
import com.oracle.truffle.r.runtime.nodes.RSyntaxNode;
7170

7271
abstract class InteropRootNode extends RootNode {
@@ -440,7 +439,17 @@ public CallTarget accessIsPointer() {
440439
return Truffle.getRuntime().createCallTarget(new InteropRootNode() {
441440
@Override
442441
public Object execute(VirtualFrame frame) {
443-
return false;
442+
return true;
443+
}
444+
});
445+
}
446+
447+
@Override
448+
public CallTarget accessAsPointer() {
449+
return Truffle.getRuntime().createCallTarget(new InteropRootNode() {
450+
@Override
451+
public Object execute(VirtualFrame frame) {
452+
return NativeDataAccess.asPointer(ForeignAccess.getReceiver(frame));
444453
}
445454
});
446455
}
@@ -451,7 +460,7 @@ public CallTarget accessToNative() {
451460
@Override
452461
public Object execute(VirtualFrame frame) {
453462
RAbstractVector arg = (RAbstractVector) ForeignAccess.getReceiver(frame);
454-
return new RObjectNativeWrapper((RObject) arg);
463+
return arg;
455464
}
456465
});
457466
}

com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RArgsValuesAndNamesMR.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -36,13 +36,12 @@
3636
import com.oracle.truffle.r.engine.interop.RArgsValuesAndNamesMRFactory.RArgsValuesAndNamesKeyInfoImplNodeGen;
3737
import com.oracle.truffle.r.engine.interop.RArgsValuesAndNamesMRFactory.RArgsValuesAndNamesReadImplNodeGen;
3838
import com.oracle.truffle.r.runtime.ArgumentsSignature;
39+
import com.oracle.truffle.r.runtime.data.NativeDataAccess;
3940
import com.oracle.truffle.r.runtime.data.RArgsValuesAndNames;
4041
import com.oracle.truffle.r.runtime.data.RDataFactory;
4142
import com.oracle.truffle.r.runtime.data.RFunction;
42-
import com.oracle.truffle.r.runtime.data.RObject;
4343
import com.oracle.truffle.r.runtime.interop.R2Foreign;
4444
import com.oracle.truffle.r.runtime.interop.R2ForeignNodeGen;
45-
import com.oracle.truffle.r.runtime.interop.RObjectNativeWrapper;
4645

4746
@MessageResolution(receiverType = RArgsValuesAndNames.class)
4847
public class RArgsValuesAndNamesMR {
@@ -94,14 +93,21 @@ protected Object access(VirtualFrame frame, RArgsValuesAndNames receiver, Object
9493
@Resolve(message = "IS_POINTER")
9594
public abstract static class IsPointerNode extends Node {
9695
protected boolean access(@SuppressWarnings("unused") Object receiver) {
97-
return false;
96+
return true;
97+
}
98+
}
99+
100+
@Resolve(message = "AS_POINTER")
101+
public abstract static class AsPointerNode extends Node {
102+
protected Object access(Object receiver) {
103+
return NativeDataAccess.asPointer(receiver);
98104
}
99105
}
100106

101107
@Resolve(message = "TO_NATIVE")
102108
public abstract static class ToNativeNode extends Node {
103-
protected Object access(RObject receiver) {
104-
return new RObjectNativeWrapper(receiver);
109+
protected Object access(Object receiver) {
110+
return receiver;
105111
}
106112
}
107113

com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RConnectionMR.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -28,8 +28,7 @@
2828
import com.oracle.truffle.api.interop.TruffleObject;
2929
import com.oracle.truffle.api.nodes.Node;
3030
import com.oracle.truffle.r.runtime.conn.RConnection;
31-
import com.oracle.truffle.r.runtime.data.RObject;
32-
import com.oracle.truffle.r.runtime.interop.RObjectNativeWrapper;
31+
import com.oracle.truffle.r.runtime.data.NativeDataAccess;
3332

3433
@MessageResolution(receiverType = RConnection.class)
3534
public class RConnectionMR {
@@ -44,14 +43,21 @@ protected Object access(@SuppressWarnings("unused") TruffleObject receiver, @Sup
4443
@Resolve(message = "IS_POINTER")
4544
public abstract static class IsPointerNode extends Node {
4645
protected boolean access(@SuppressWarnings("unused") Object receiver) {
47-
return false;
46+
return true;
47+
}
48+
}
49+
50+
@Resolve(message = "AS_POINTER")
51+
public abstract static class AsPointerNode extends Node {
52+
protected Object access(Object receiver) {
53+
return NativeDataAccess.asPointer(receiver);
4854
}
4955
}
5056

5157
@Resolve(message = "TO_NATIVE")
5258
public abstract static class ToNativeNode extends Node {
53-
protected Object access(RObject receiver) {
54-
return new RObjectNativeWrapper(receiver);
59+
protected Object access(Object receiver) {
60+
return receiver;
5561
}
5662
}
5763

com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/REmptyMR.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,8 @@
2727
import com.oracle.truffle.api.interop.Resolve;
2828
import com.oracle.truffle.api.interop.TruffleObject;
2929
import com.oracle.truffle.api.nodes.Node;
30+
import com.oracle.truffle.r.runtime.data.NativeDataAccess;
3031
import com.oracle.truffle.r.runtime.data.REmpty;
31-
import com.oracle.truffle.r.runtime.data.RObject;
32-
import com.oracle.truffle.r.runtime.interop.RObjectNativeWrapper;
3332

3433
@MessageResolution(receiverType = REmpty.class)
3534
public class REmptyMR {
@@ -44,14 +43,21 @@ protected Object access(@SuppressWarnings("unused") TruffleObject receiver, @Sup
4443
@Resolve(message = "IS_POINTER")
4544
public abstract static class IsPointerNode extends Node {
4645
protected boolean access(@SuppressWarnings("unused") Object receiver) {
47-
return false;
46+
return true;
47+
}
48+
}
49+
50+
@Resolve(message = "AS_POINTER")
51+
public abstract static class AsPointerNode extends Node {
52+
protected Object access(Object receiver) {
53+
return NativeDataAccess.asPointer(receiver);
4854
}
4955
}
5056

5157
@Resolve(message = "TO_NATIVE")
5258
public abstract static class ToNativeNode extends Node {
53-
protected Object access(RObject receiver) {
54-
return new RObjectNativeWrapper(receiver);
59+
protected Object access(Object receiver) {
60+
return receiver;
5561
}
5662
}
5763

com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/REnvironmentMR.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -46,14 +46,13 @@
4646
import com.oracle.truffle.r.nodes.access.vector.ExtractVectorNode;
4747
import com.oracle.truffle.r.nodes.access.vector.ReplaceVectorNode;
4848
import com.oracle.truffle.r.nodes.builtin.base.Rm;
49+
import com.oracle.truffle.r.runtime.data.NativeDataAccess;
4950
import com.oracle.truffle.r.runtime.data.RFunction;
50-
import com.oracle.truffle.r.runtime.data.RObject;
5151
import com.oracle.truffle.r.runtime.env.REnvironment;
5252
import com.oracle.truffle.r.runtime.interop.Foreign2R;
5353
import com.oracle.truffle.r.runtime.interop.Foreign2RNodeGen;
5454
import com.oracle.truffle.r.runtime.interop.R2Foreign;
5555
import com.oracle.truffle.r.runtime.interop.R2ForeignNodeGen;
56-
import com.oracle.truffle.r.runtime.interop.RObjectNativeWrapper;
5756

5857
@MessageResolution(receiverType = REnvironment.class)
5958
public class REnvironmentMR {
@@ -105,14 +104,21 @@ protected Object access(REnvironment receiver, Object obj) {
105104
@Resolve(message = "IS_POINTER")
106105
public abstract static class IsPointerNode extends Node {
107106
protected boolean access(@SuppressWarnings("unused") Object receiver) {
108-
return false;
107+
return true;
108+
}
109+
}
110+
111+
@Resolve(message = "AS_POINTER")
112+
public abstract static class AsPointerNode extends Node {
113+
protected Object access(Object receiver) {
114+
return NativeDataAccess.asPointer(receiver);
109115
}
110116
}
111117

112118
@Resolve(message = "TO_NATIVE")
113119
public abstract static class ToNativeNode extends Node {
114-
protected Object access(RObject receiver) {
115-
return new RObjectNativeWrapper(receiver);
120+
protected Object access(Object receiver) {
121+
return receiver;
116122
}
117123
}
118124

com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RExternalPtrMR.java

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,8 @@
2727
import com.oracle.truffle.api.interop.Resolve;
2828
import com.oracle.truffle.api.interop.TruffleObject;
2929
import com.oracle.truffle.api.nodes.Node;
30+
import com.oracle.truffle.r.runtime.data.NativeDataAccess;
3031
import com.oracle.truffle.r.runtime.data.RExternalPtr;
31-
import com.oracle.truffle.r.runtime.data.RObject;
32-
import com.oracle.truffle.r.runtime.interop.RObjectNativeWrapper;
3332

3433
@MessageResolution(receiverType = RExternalPtr.class)
3534
public class RExternalPtrMR {
@@ -44,14 +43,21 @@ protected Object access(@SuppressWarnings("unused") TruffleObject receiver, @Sup
4443
@Resolve(message = "IS_POINTER")
4544
public abstract static class IsPointerNode extends Node {
4645
protected boolean access(@SuppressWarnings("unused") Object receiver) {
47-
return false;
46+
return true;
47+
}
48+
}
49+
50+
@Resolve(message = "AS_POINTER")
51+
public abstract static class AsPointerNode extends Node {
52+
protected Object access(Object receiver) {
53+
return NativeDataAccess.asPointer(receiver);
4854
}
4955
}
5056

5157
@Resolve(message = "TO_NATIVE")
5258
public abstract static class ToNativeNode extends Node {
53-
protected Object access(RObject receiver) {
54-
return new RObjectNativeWrapper(receiver);
59+
protected Object access(Object receiver) {
60+
return receiver;
5561
}
5662
}
5763

com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/interop/RFunctionMR.java

Lines changed: 11 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -22,9 +22,6 @@
2222
*/
2323
package com.oracle.truffle.r.engine.interop;
2424

25-
import com.oracle.truffle.api.frame.FrameDescriptor;
26-
import com.oracle.truffle.api.frame.FrameSlot;
27-
import com.oracle.truffle.api.frame.FrameSlotKind;
2825
import com.oracle.truffle.api.frame.MaterializedFrame;
2926
import com.oracle.truffle.api.interop.CanResolve;
3027
import com.oracle.truffle.api.interop.MessageResolution;
@@ -34,16 +31,13 @@
3431
import com.oracle.truffle.r.nodes.function.call.RExplicitCallNode;
3532
import com.oracle.truffle.r.runtime.ArgumentsSignature;
3633
import com.oracle.truffle.r.runtime.context.RContext;
34+
import com.oracle.truffle.r.runtime.data.NativeDataAccess;
3735
import com.oracle.truffle.r.runtime.data.RArgsValuesAndNames;
3836
import com.oracle.truffle.r.runtime.data.RFunction;
39-
import com.oracle.truffle.r.runtime.data.RObject;
40-
import com.oracle.truffle.r.runtime.env.frame.FrameSlotChangeMonitor;
41-
import com.oracle.truffle.r.runtime.env.frame.RFrameSlot;
4237
import com.oracle.truffle.r.runtime.interop.Foreign2R;
4338
import com.oracle.truffle.r.runtime.interop.Foreign2RNodeGen;
4439
import com.oracle.truffle.r.runtime.interop.R2Foreign;
4540
import com.oracle.truffle.r.runtime.interop.R2ForeignNodeGen;
46-
import com.oracle.truffle.r.runtime.interop.RObjectNativeWrapper;
4741

4842
@MessageResolution(receiverType = RFunction.class)
4943
public class RFunctionMR {
@@ -83,14 +77,21 @@ protected Object access(RFunction receiver, Object[] arguments) {
8377
@Resolve(message = "IS_POINTER")
8478
public abstract static class IsPointerNode extends Node {
8579
protected boolean access(@SuppressWarnings("unused") Object receiver) {
86-
return false;
80+
return true;
81+
}
82+
}
83+
84+
@Resolve(message = "AS_POINTER")
85+
public abstract static class AsPointerNode extends Node {
86+
protected Object access(Object receiver) {
87+
return NativeDataAccess.asPointer(receiver);
8788
}
8889
}
8990

9091
@Resolve(message = "TO_NATIVE")
9192
public abstract static class ToNativeNode extends Node {
92-
protected Object access(RObject receiver) {
93-
return new RObjectNativeWrapper(receiver);
93+
protected Object access(Object receiver) {
94+
return receiver;
9495
}
9596
}
9697

0 commit comments

Comments
 (0)