Skip to content

Commit 1897802

Browse files
committed
[GR-27947] Fix some problematic @GenerateUncached nodes.
PullRequest: fastr/2536
2 parents c2807fb + 5c17d27 commit 1897802

File tree

22 files changed

+193
-178
lines changed

22 files changed

+193
-178
lines changed

com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/nodes/CoerceNodes.java

Lines changed: 9 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -26,10 +26,7 @@
2626
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
2727
import com.oracle.truffle.api.dsl.Cached;
2828
import com.oracle.truffle.api.dsl.Fallback;
29-
import com.oracle.truffle.api.dsl.GenerateUncached;
3029
import com.oracle.truffle.api.dsl.Specialization;
31-
import com.oracle.truffle.r.runtime.data.nodes.attributes.CopyOfRegAttributesNode;
32-
import com.oracle.truffle.r.runtime.data.nodes.attributes.SpecialAttributesFunctions.GetNamesAttributeNode;
3330
import com.oracle.truffle.r.nodes.helpers.InheritsCheckNode;
3431
import com.oracle.truffle.r.nodes.helpers.RFactorNodes;
3532
import com.oracle.truffle.r.nodes.unary.CastComplexNode;
@@ -38,7 +35,6 @@
3835
import com.oracle.truffle.r.nodes.unary.CastIntegerNode;
3936
import com.oracle.truffle.r.nodes.unary.CastListNode;
4037
import com.oracle.truffle.r.nodes.unary.CastLogicalNode;
41-
import com.oracle.truffle.r.runtime.nodes.unary.CastNode;
4238
import com.oracle.truffle.r.nodes.unary.CastRawNode;
4339
import com.oracle.truffle.r.nodes.unary.CastStringNode;
4440
import com.oracle.truffle.r.nodes.unary.CastSymbolNode;
@@ -49,14 +45,17 @@
4945
import com.oracle.truffle.r.runtime.Utils;
5046
import com.oracle.truffle.r.runtime.data.RBaseObject;
5147
import com.oracle.truffle.r.runtime.data.RDataFactory;
48+
import com.oracle.truffle.r.runtime.data.RIntVector;
5249
import com.oracle.truffle.r.runtime.data.RList;
5350
import com.oracle.truffle.r.runtime.data.RNull;
5451
import com.oracle.truffle.r.runtime.data.RPairList;
5552
import com.oracle.truffle.r.runtime.data.RSharingAttributeStorage;
5653
import com.oracle.truffle.r.runtime.data.RStringVector;
57-
import com.oracle.truffle.r.runtime.data.RIntVector;
5854
import com.oracle.truffle.r.runtime.data.model.RAbstractVector;
55+
import com.oracle.truffle.r.runtime.data.nodes.attributes.CopyOfRegAttributesNode;
56+
import com.oracle.truffle.r.runtime.data.nodes.attributes.SpecialAttributesFunctions.GetNamesAttributeNode;
5957
import com.oracle.truffle.r.runtime.gnur.SEXPTYPE;
58+
import com.oracle.truffle.r.runtime.nodes.unary.CastNode;
6059

6160
public final class CoerceNodes {
6261

@@ -202,17 +201,12 @@ public static AsCharacterFactor create() {
202201
/**
203202
* Implements Rf_coerceVector.
204203
*/
205-
@GenerateUncached
206204
public abstract static class CoerceVectorNode extends FFIUpCallNode.Arg2 {
207205

208206
public static CoerceVectorNode create() {
209207
return CoerceNodesFactory.CoerceVectorNodeGen.create();
210208
}
211209

212-
public static CoerceVectorNode getUncached() {
213-
return CoerceNodesFactory.CoerceVectorNodeGen.getUncached();
214-
}
215-
216210
@Specialization(guards = "value.isS4()")
217211
Object doS4Object(@SuppressWarnings("unused") RBaseObject value, @SuppressWarnings("unused") int mode) {
218212
throw RError.nyi(RError.NO_CALLER, "Rf_coerceVector for S4 objects.");
@@ -234,14 +228,7 @@ Object doCached(RList value, @SuppressWarnings("unused") int mode,
234228
return castNode.doCast(value);
235229
}
236230

237-
@Specialization(replaces = {"doCachedNotList", "doCached"}, guards = {"!isS4Object(value)", "isValidMode(mode)"})
238-
Object doGeneric(Object value, int mode) {
239-
CompilerDirectives.transferToInterpreter();
240-
String type = value != null ? value.getClass().getSimpleName() : "null";
241-
throw RInternalError.unimplemented("Rf_coerceVector unimplemented for type %s or mode %s.", type, mode);
242-
}
243-
244-
@Fallback
231+
@Specialization(guards = {"!isS4Object(value)", "!isValidMode(mode)"})
245232
Object doFallback(Object value, Object mode) {
246233
CompilerDirectives.transferToInterpreter();
247234
String type = value != null ? value.getClass().getSimpleName() : "null";
@@ -260,6 +247,10 @@ static boolean isValidMode(int mode) {
260247
return mode >= SEXPTYPE.NILSXP.code && mode <= SEXPTYPE.RAWSXP.code;
261248
}
262249

250+
static boolean isValidMode(Object mode) {
251+
return mode instanceof Number && isValidMode(((Number) mode).intValue());
252+
}
253+
263254
static CastNode createCastNode(int mode) {
264255
return createCastNode(mode, false);
265256
}

com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/upcalls/StdUpCallsRFFI.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -218,7 +218,7 @@ public interface StdUpCallsRFFI {
218218
@RFFIUpCallNode(value = AsCharNode.class, needsCallTarget = true)
219219
Object Rf_asChar(Object x);
220220

221-
@RFFIUpCallNode(CoerceVectorNode.class)
221+
@RFFIUpCallNode(value = CoerceVectorNode.class, needsCallTarget = true)
222222
Object Rf_coerceVector(Object x, int mode);
223223

224224
Object Rf_mkCharLenCE(@RFFICpointer(isString = true) Object bytes, int len, int encoding);

com.oracle.truffle.r.ffi.processor/src/com/oracle/truffle/r/ffi/processor/FFIProcessor.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -387,7 +387,7 @@ private void generateCallClass(ExecutableElement m) throws IOException {
387387
w.append(" @CachedContext(TruffleRLanguage.class) ContextReference<RContext> ctxRef,\n");
388388
if (needsCallTarget) {
389389
w.append(" @Cached() com.oracle.truffle.r.ffi.impl.upcalls.UpCallBase.CallNode callNode,\n");
390-
w.append(" @Cached(value = \"createCallTarget(ctxRef.get())\", allowUncached = true) CallTarget callTarget,\n");
390+
w.append(" @Cached(value = \"createCallTarget(ctxRef)\", allowUncached = true) CallTarget callTarget,\n");
391391
} else if (needsNode) {
392392
if (nodeClass.getModifiers().contains(Modifier.ABSTRACT)) {
393393
w.append(" @Cached() " + nodeClassName + " node,\n");
@@ -500,8 +500,8 @@ private void generateCallClass(ExecutableElement m) throws IOException {
500500
w.append("\n");
501501

502502
if (needsCallTarget) {
503-
w.append(" protected static CallTarget createCallTarget(RContext ctx) {\n");
504-
w.append(" RFFIUpCallTargets targets = ctx.getRFFIUpCallTargets();\n");
503+
w.append(" protected static CallTarget createCallTarget(ContextReference<RContext> ctxRef) {\n");
504+
w.append(" RFFIUpCallTargets targets = ctxRef.get().getRFFIUpCallTargets();\n");
505505
w.append(" if(targets.").append(nodeClassName).append(" == null) {\n");
506506
w.append(" targets.").append(nodeClassName).append(" = Truffle.getRuntime().createCallTarget(new NodeRootNode());\n");
507507
w.append(" }\n");

com.oracle.truffle.r.library/src/com/oracle/truffle/r/library/methods/MethodsListDispatch.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -164,7 +164,7 @@ public abstract static class R_getClassFromCache extends RExternalBuiltinNode.Ar
164164
}
165165

166166
protected GetFixedAttributeNode createPckgAttrAccess() {
167-
return GetFixedAttributeNode.create(RRuntime.PCKG_ATTR_KEY);
167+
return GetFixedAttributeNode.createFor(RRuntime.PCKG_ATTR_KEY);
168168
}
169169

170170
@Specialization
@@ -413,8 +413,8 @@ abstract static class GetGenericInternal extends RBaseNode {
413413

414414
@Child private CastToVectorNode castToVector = CastToVectorNodeGen.create(false);
415415
@Child private ClassHierarchyScalarNode classHierarchyNode = ClassHierarchyScalarNodeGen.create();
416-
@Child private GetFixedAttributeNode getGenericAttrNode = GetFixedAttributeNode.create(RRuntime.GENERIC_ATTR_KEY);
417-
@Child private GetFixedAttributeNode getPckgAttrNode = GetFixedAttributeNode.create(RRuntime.PCKG_ATTR_KEY);
416+
@Child private GetFixedAttributeNode getGenericAttrNode = GetFixedAttributeNode.createFor(RRuntime.GENERIC_ATTR_KEY);
417+
@Child private GetFixedAttributeNode getPckgAttrNode = GetFixedAttributeNode.createFor(RRuntime.PCKG_ATTR_KEY);
418418

419419
@Specialization
420420
protected Object getGeneric(String name, REnvironment env, String pckg) {

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/AsCharacterFactor.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public abstract class AsCharacterFactor extends RBuiltinNode.Arg1 {
4545

4646
@Child private InheritsNode inheritsNode = InheritsNodeGen.create();
4747
@Child private CastToVectorNode castToVectorNode = CastToVectorNode.create();
48-
@Child private GetFixedAttributeNode getLevelsAttrNode = GetFixedAttributeNode.create(RRuntime.LEVELS_ATTR_KEY);
48+
@Child private GetFixedAttributeNode getLevelsAttrNode = GetFixedAttributeNode.createFor(RRuntime.LEVELS_ATTR_KEY);
4949

5050
private final NACheck naCheck = NACheck.create();
5151

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/EnvFunctions.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -178,7 +178,7 @@ protected REnvironment asEnvironment(RList list,
178178
}
179179

180180
protected GetFixedAttributeNode createGetXDataAttrNode() {
181-
return GetFixedAttributeNode.create(RRuntime.DOT_XDATA);
181+
return GetFixedAttributeNode.createFor(RRuntime.DOT_XDATA);
182182
}
183183

184184
@Specialization
@@ -364,7 +364,7 @@ protected Object environment(RFunction fun,
364364
}
365365

366366
protected static GetFixedAttributeNode createDotEnv() {
367-
return GetFixedAttributeNode.create(RRuntime.DOT_ENVIRONMENT);
367+
return GetFixedAttributeNode.createFor(RRuntime.DOT_ENVIRONMENT);
368368
}
369369

370370
@Specialization(guards = "!isRFunction(value)")

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/IsTypeFunctions.java

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,6 @@
4242
import com.oracle.truffle.r.runtime.data.nodes.attributes.GetFixedAttributeNode;
4343
import com.oracle.truffle.r.runtime.data.nodes.attributes.SpecialAttributesFunctions.GetClassAttributeNode;
4444
import com.oracle.truffle.r.runtime.data.nodes.attributes.SpecialAttributesFunctions.GetDimAttributeNode;
45-
import com.oracle.truffle.r.runtime.data.nodes.attributes.SpecialAttributesFunctionsFactory.GetDimAttributeNodeGen;
4645
import com.oracle.truffle.r.nodes.builtin.NodeWithArgumentCasts.Casts;
4746
import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
4847
import com.oracle.truffle.r.nodes.helpers.InheritsCheckNode;
@@ -88,7 +87,7 @@ public abstract static class IsArray extends RBuiltinNode.Arg1 {
8887
}
8988

9089
private final ConditionProfile isArrayProfile = ConditionProfile.createBinaryProfile();
91-
@Child private GetDimAttributeNode getDim = GetDimAttributeNodeGen.create();
90+
@Child private GetDimAttributeNode getDim = GetDimAttributeNode.create();
9291

9392
public abstract byte execute(Object value);
9493

@@ -393,7 +392,7 @@ protected byte isType(@SuppressWarnings("unused") Object value) {
393392
public abstract static class IsMatrix extends RBuiltinNode.Arg1 {
394393

395394
private final ConditionProfile isMatrixProfile = ConditionProfile.createBinaryProfile();
396-
@Child private GetDimAttributeNode getDim = GetDimAttributeNodeGen.create();
395+
@Child private GetDimAttributeNode getDim = GetDimAttributeNode.create();
397396

398397
static {
399398
createCasts(IsMatrix.class);

com.oracle.truffle.r.nodes.builtin/src/com/oracle/truffle/r/nodes/builtin/base/UpdateLevels.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ public abstract class UpdateLevels extends RBuiltinNode.Arg2 {
4545
}
4646

4747
protected RemoveFixedAttributeNode createRemoveAttrNode() {
48-
return RemoveFixedAttributeNode.create(RRuntime.LEVELS_ATTR_KEY);
48+
return RemoveFixedAttributeNode.createFor(RRuntime.LEVELS_ATTR_KEY);
4949
}
5050

5151
@Specialization

com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/access/vector/CachedExtractVectorNode.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -552,7 +552,7 @@ private void setSrcref(RAbstractContainer vector, RList newSrcref) {
552552
public Object getSrcref(RAbstractContainer vector) {
553553
if (getSrcrefNode == null) {
554554
CompilerDirectives.transferToInterpreterAndInvalidate();
555-
getSrcrefNode = insert(GetFixedAttributeNode.create(RRuntime.R_SRCREF));
555+
getSrcrefNode = insert(GetFixedAttributeNode.createFor(RRuntime.R_SRCREF));
556556
}
557557
return getSrcrefNode.execute(vector);
558558
}

com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/helpers/RFactorNodes.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@ private RFactorNodes() {
5050
* Encapsulates the operation of deciding whether a factor is ordered.
5151
*/
5252
public static final class GetOrdered extends Node {
53-
@Child private GetFixedAttributeNode isOrderedAccess = GetFixedAttributeNode.create(RRuntime.ORDERED_ATTR_KEY);
53+
@Child private GetFixedAttributeNode isOrderedAccess = GetFixedAttributeNode.createFor(RRuntime.ORDERED_ATTR_KEY);
5454

5555
public boolean execute(RIntVector factor) {
5656
Object value = isOrderedAccess.execute(factor);
@@ -68,7 +68,7 @@ public boolean execute(RIntVector factor) {
6868
*/
6969
public static final class GetLevels extends Node {
7070
@Child private CastStringNode castString;
71-
@Child private GetFixedAttributeNode attrAccess = GetFixedAttributeNode.create(RRuntime.LEVELS_ATTR_KEY);
71+
@Child private GetFixedAttributeNode attrAccess = GetFixedAttributeNode.createFor(RRuntime.LEVELS_ATTR_KEY);
7272
@Child private UpdateShareableChildValueNode updateAttrValue = UpdateShareableChildValueNode.create();
7373

7474
private final BranchProfile notVectorBranch = BranchProfile.create();

com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/objects/GetS4DataSlot.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -70,7 +70,7 @@ public RBaseObject executeObject(RAttributable attrObj) {
7070
Object s3Class = null;
7171
if (s3ClassAttrAccess == null) {
7272
CompilerDirectives.transferToInterpreterAndInvalidate();
73-
s3ClassAttrAccess = insert(GetFixedAttributeNode.create(RRuntime.DOT_S3_CLASS));
73+
s3ClassAttrAccess = insert(GetFixedAttributeNode.createFor(RRuntime.DOT_S3_CLASS));
7474
}
7575
s3Class = s3ClassAttrAccess.execute(obj);
7676
if (s3Class == null && type == RType.S4Object) {
@@ -89,7 +89,7 @@ public RBaseObject executeObject(RAttributable attrObj) {
8989
if (s3Class != null) {
9090
if (s3ClassAttrRemove == null) {
9191
CompilerDirectives.transferToInterpreterAndInvalidate();
92-
s3ClassAttrRemove = insert(RemoveFixedAttributeNode.create(RRuntime.DOT_S3_CLASS));
92+
s3ClassAttrRemove = insert(RemoveFixedAttributeNode.createFor(RRuntime.DOT_S3_CLASS));
9393
}
9494
if (castToVector == null) {
9595
CompilerDirectives.transferToInterpreterAndInvalidate();
@@ -108,14 +108,14 @@ public RBaseObject executeObject(RAttributable attrObj) {
108108
} else {
109109
if (dotDataAttrAccess == null) {
110110
CompilerDirectives.transferToInterpreterAndInvalidate();
111-
dotDataAttrAccess = insert(GetFixedAttributeNode.create(RRuntime.DOT_DATA));
111+
dotDataAttrAccess = insert(GetFixedAttributeNode.createFor(RRuntime.DOT_DATA));
112112
}
113113
value = dotDataAttrAccess.execute(obj);
114114
}
115115
if (value == null) {
116116
if (dotXDataAttrAccess == null) {
117117
CompilerDirectives.transferToInterpreterAndInvalidate();
118-
dotXDataAttrAccess = insert(GetFixedAttributeNode.create(RRuntime.DOT_XDATA));
118+
dotXDataAttrAccess = insert(GetFixedAttributeNode.createFor(RRuntime.DOT_XDATA));
119119
}
120120
value = dotXDataAttrAccess.execute(obj);
121121
}

com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/objects/LoadMethod.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,10 +54,10 @@ abstract class LoadMethod extends RBaseNode {
5454

5555
public abstract RFunction executeRFunction(VirtualFrame frame, RAttributable fdef, String fname);
5656

57-
@Child private GetFixedAttributeNode targetAttrAccess = GetFixedAttributeNode.create(RRuntime.R_TARGET);
58-
@Child private GetFixedAttributeNode definedAttrAccess = GetFixedAttributeNode.create(RRuntime.R_DEFINED);
59-
@Child private GetFixedAttributeNode nextMethodAttrAccess = GetFixedAttributeNode.create(RRuntime.R_NEXT_METHOD);
60-
@Child private GetFixedAttributeNode sourceAttrAccess = GetFixedAttributeNode.create(RRuntime.R_SOURCE);
57+
@Child private GetFixedAttributeNode targetAttrAccess = GetFixedAttributeNode.createFor(RRuntime.R_TARGET);
58+
@Child private GetFixedAttributeNode definedAttrAccess = GetFixedAttributeNode.createFor(RRuntime.R_DEFINED);
59+
@Child private GetFixedAttributeNode nextMethodAttrAccess = GetFixedAttributeNode.createFor(RRuntime.R_NEXT_METHOD);
60+
@Child private GetFixedAttributeNode sourceAttrAccess = GetFixedAttributeNode.createFor(RRuntime.R_SOURCE);
6161
@Child private WriteLocalFrameVariableNode writeRTarget = WriteLocalFrameVariableNode.create(RRuntime.R_DOT_TARGET, WriteVariableNode.Mode.REGULAR, null);
6262
@Child private WriteLocalFrameVariableNode writeRDefined = WriteLocalFrameVariableNode.create(RRuntime.R_DOT_DEFINED, WriteVariableNode.Mode.REGULAR, null);
6363
@Child private WriteLocalFrameVariableNode writeRNextMethod = WriteLocalFrameVariableNode.create(RRuntime.R_DOT_NEXT_METHOD, WriteVariableNode.Mode.REGULAR, null);

com.oracle.truffle.r.nodes/src/com/oracle/truffle/r/nodes/objects/NewObject.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ public abstract class NewObject extends RExternalBuiltinNode.Arg1 {
4343
@Child private AccessSlotNode accessSlotClassName = AccessSlotNodeGen.create(true);
4444
@Child private AccessSlotNode accessSlotPrototypeName = AccessSlotNodeGen.create(true);
4545
@Child private DuplicateNode duplicate = DuplicateNodeGen.create(true);
46-
@Child private GetFixedAttributeNode pckgAttrAccess = GetFixedAttributeNode.create(RRuntime.PCKG_ATTR_KEY);
46+
@Child private GetFixedAttributeNode pckgAttrAccess = GetFixedAttributeNode.createFor(RRuntime.PCKG_ATTR_KEY);
4747
@Child private SetClassAttributeNode setClassAttrNode;
4848

4949
@Child private CastNode castStringScalar = newCastBuilder().asStringVector().findFirst(RRuntime.STRING_NA).buildCastNode();

com.oracle.truffle.r.runtime/src/com/oracle/truffle/r/runtime/context/RFFIUpCallTargets.java

Lines changed: 31 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -25,59 +25,65 @@
2525
import com.oracle.truffle.api.RootCallTarget;
2626

2727
// Checkstyle: stop field name check
28+
/**
29+
* This is manually maintained class that must contain one field for each of the RFFI upcalls that
30+
* need a CallTarget (see {@code RFFIUpCallNode.needsCallTarget}).
31+
*/
2832
public final class RFFIUpCallTargets {
2933

3034
RFFIUpCallTargets() {
3135

3236
}
3337

34-
public RootCallTarget AsIntegerNode;
38+
public volatile RootCallTarget CoerceVectorNode;
39+
40+
public volatile RootCallTarget AsIntegerNode;
3541

36-
public RootCallTarget AsRealNode;
42+
public volatile RootCallTarget AsRealNode;
3743

38-
public RootCallTarget AsLogicalNode;
44+
public volatile RootCallTarget AsLogicalNode;
3945

40-
public RootCallTarget AsCharNode;
46+
public volatile RootCallTarget AsCharNode;
4147

42-
public RootCallTarget RDoNewObjectNode;
48+
public volatile RootCallTarget RDoNewObjectNode;
4349

44-
public RootCallTarget ATTRIB;
50+
public volatile RootCallTarget ATTRIB;
4551

46-
public RootCallTarget GetAttrib;
52+
public volatile RootCallTarget GetAttrib;
4753

48-
public RootCallTarget RfSetAttribNode;
54+
public volatile RootCallTarget RfSetAttribNode;
4955

50-
public RootCallTarget RfEvalNode;
56+
public volatile RootCallTarget RfEvalNode;
5157

52-
public RootCallTarget TryRfEvalNode;
58+
public volatile RootCallTarget TryRfEvalNode;
5359

54-
public RootCallTarget RDoSlotNode;
60+
public volatile RootCallTarget RDoSlotNode;
5561

56-
public RootCallTarget RandFunction3Node;
62+
public volatile RootCallTarget RandFunction3Node;
5763

58-
public RootCallTarget RfRMultinomNode;
64+
public volatile RootCallTarget RfRMultinomNode;
5965

60-
public RootCallTarget BesselIExNode;
66+
public volatile RootCallTarget BesselIExNode;
6167

62-
public RootCallTarget BesselJExNode;
68+
public volatile RootCallTarget BesselJExNode;
6369

64-
public RootCallTarget BesselKExNode;
70+
public volatile RootCallTarget BesselKExNode;
6571

66-
public RootCallTarget BesselYExNode;
72+
public volatile RootCallTarget BesselYExNode;
6773

68-
public RootCallTarget NamesGetsNode;
74+
public volatile RootCallTarget NamesGetsNode;
6975

70-
public RootCallTarget VectorToPairListNode;
76+
public volatile RootCallTarget VectorToPairListNode;
7177

72-
public RootCallTarget AsCharacterFactor;
78+
public volatile RootCallTarget AsCharacterFactor;
7379

74-
public RootCallTarget RHasSlotNode;
80+
public volatile RootCallTarget RHasSlotNode;
7581

76-
public RootCallTarget OctSizeNode;
82+
public volatile RootCallTarget OctSizeNode;
7783

78-
public RootCallTarget RForceAndCallNode;
84+
public volatile RootCallTarget RForceAndCallNode;
7985

80-
public RootCallTarget AsS4;
86+
public volatile RootCallTarget AsS4;
8187

82-
public RootCallTarget Match5UpCallNode;
88+
public volatile RootCallTarget Match5UpCallNode;
8389
}

0 commit comments

Comments
 (0)