Skip to content

Commit 468e150

Browse files
author
Pavel Marek
committed
[GR-33021] Migrate FastR to new context reference API.
PullRequest: fastr/2695
2 parents bf40b12 + 443386f commit 468e150

File tree

162 files changed

+999
-1311
lines changed

Some content is hidden

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

162 files changed

+999
-1311
lines changed

com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/EngineRootNode.java

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2018, 2021, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -26,7 +26,6 @@
2626

2727
import com.oracle.truffle.api.CompilerDirectives;
2828
import com.oracle.truffle.api.Truffle;
29-
import com.oracle.truffle.api.TruffleLanguage.ContextReference;
3029
import com.oracle.truffle.api.frame.Frame;
3130
import com.oracle.truffle.api.frame.MaterializedFrame;
3231
import com.oracle.truffle.api.frame.VirtualFrame;
@@ -49,7 +48,6 @@
4948
import com.oracle.truffle.r.runtime.ReturnException;
5049
import com.oracle.truffle.r.runtime.Utils.DebugExitException;
5150
import com.oracle.truffle.r.runtime.context.RContext;
52-
import com.oracle.truffle.r.runtime.context.TruffleRLanguage;
5351
import com.oracle.truffle.r.runtime.data.RNull;
5452
import com.oracle.truffle.r.runtime.interop.R2Foreign;
5553
import com.oracle.truffle.r.runtime.nodes.RNode;
@@ -59,7 +57,7 @@ class EngineRootNode extends RootNode implements REntryPointRootNode {
5957
private final SourceSection sourceSection;
6058

6159
private final MaterializedFrame executionFrame;
62-
private final ContextReference<RContext> contextReference;
60+
private final RContext context;
6361

6462
@Child private EngineBodyNode bodyNode;
6563
@Child private R2Foreign r2Foreign = R2Foreign.create();
@@ -70,7 +68,7 @@ class EngineRootNode extends RootNode implements REntryPointRootNode {
7068
this.sourceSection = sourceSection;
7169
this.bodyNode = bodyNode;
7270
this.executionFrame = executionFrame;
73-
this.contextReference = lookupContextReference(TruffleRLanguage.class);
71+
this.context = RContext.getInstance(this);
7472
}
7573

7674
public static EngineRootNode createEngineRoot(REngine engine, RContext context, List<RSyntaxNode> statements, SourceSection sourceSection, MaterializedFrame executionFrame,
@@ -80,7 +78,7 @@ public static EngineRootNode createEngineRoot(REngine engine, RContext context,
8078

8179
@Override
8280
public Frame getActualExecutionFrame(@SuppressWarnings("unused") Frame currentFrame) {
83-
return executionFrame != null ? executionFrame : contextReference.get().stateREnvironment.getGlobalFrame();
81+
return executionFrame != null ? executionFrame : context.stateREnvironment.getGlobalFrame();
8482
}
8583

8684
/**

com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/REngine.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2013, 2021, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2013, 2022, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -71,7 +71,6 @@
7171
import com.oracle.truffle.r.nodes.function.SaveArgumentsNode;
7272
import com.oracle.truffle.r.nodes.function.call.CallRFunctionNode;
7373
import com.oracle.truffle.r.nodes.function.call.RExplicitCallNode;
74-
import com.oracle.truffle.r.runtime.data.nodes.UnShareObjectNode;
7574
import com.oracle.truffle.r.nodes.function.visibility.GetVisibilityNode;
7675
import com.oracle.truffle.r.nodes.function.visibility.SetVisibilityNode;
7776
import com.oracle.truffle.r.nodes.instrumentation.RInstrumentation;
@@ -108,6 +107,7 @@
108107
import com.oracle.truffle.r.runtime.data.RSymbol;
109108
import com.oracle.truffle.r.runtime.data.model.RAbstractVector;
110109
import com.oracle.truffle.r.runtime.data.nodes.ShareObjectNode;
110+
import com.oracle.truffle.r.runtime.data.nodes.UnShareObjectNode;
111111
import com.oracle.truffle.r.runtime.env.REnvironment;
112112
import com.oracle.truffle.r.runtime.env.frame.FrameSlotChangeMonitor;
113113
import com.oracle.truffle.r.runtime.interop.Foreign2R;
@@ -669,7 +669,7 @@ public Object execute(VirtualFrame frame) {
669669
if (printResult && result != null) {
670670
assert topLevel;
671671
if (visibility.execute(vf)) {
672-
printResultImpl(RContext.getInstance(), result);
672+
printResultImpl(RContext.getInstance(this), result);
673673
}
674674
}
675675
if (topLevel) {

com.oracle.truffle.r.engine/src/com/oracle/truffle/r/engine/RRuntimeASTAccessImpl.java

Lines changed: 8 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2014, 2020, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -47,8 +47,6 @@
4747
import com.oracle.truffle.r.nodes.RASTUtils;
4848
import com.oracle.truffle.r.nodes.RRootNode;
4949
import com.oracle.truffle.r.nodes.access.variables.ReadVariableNode;
50-
import com.oracle.truffle.r.runtime.data.nodes.attributes.ArrayAttributeNode;
51-
import com.oracle.truffle.r.runtime.data.nodes.attributes.ArrayAttributeNodeGen;
5250
import com.oracle.truffle.r.nodes.builtin.RBuiltinNode;
5351
import com.oracle.truffle.r.nodes.builtin.RBuiltinRootNode;
5452
import com.oracle.truffle.r.nodes.builtin.base.Rm;
@@ -89,6 +87,8 @@
8987
import com.oracle.truffle.r.runtime.data.RPairList;
9088
import com.oracle.truffle.r.runtime.data.RPromise;
9189
import com.oracle.truffle.r.runtime.data.RStringVector;
90+
import com.oracle.truffle.r.runtime.data.nodes.attributes.ArrayAttributeNode;
91+
import com.oracle.truffle.r.runtime.data.nodes.attributes.ArrayAttributeNodeGen;
9292
import com.oracle.truffle.r.runtime.env.REnvironment;
9393
import com.oracle.truffle.r.runtime.instrument.RSyntaxTags.FunctionBodyBlockTag;
9494
import com.oracle.truffle.r.runtime.instrument.RSyntaxTags.LoopTag;
@@ -114,12 +114,12 @@ public Object createLanguageElement(RSyntaxElement element) {
114114
}
115115

116116
@Override
117-
public Object callback(RFunction f, Object[] args) {
118-
boolean gd = RContext.getInstance().stateInstrumentation.setDebugGloballyDisabled(true);
117+
public Object callback(RFunction f, RContext context, Object[] args) {
118+
boolean gd = context.stateInstrumentation.setDebugGloballyDisabled(true);
119119
try {
120-
return RContext.getEngine().evalFunction(f, null, null, true, null, args);
120+
return context.getThisEngine().evalFunction(f, null, null, true, null, args);
121121
} finally {
122-
RContext.getInstance().stateInstrumentation.setDebugGloballyDisabled(gd);
122+
context.stateInstrumentation.setDebugGloballyDisabled(gd);
123123
}
124124
}
125125

@@ -136,7 +136,7 @@ public Object forcePromise(String identifier, Object val) {
136136
@Override
137137
public boolean removeFromEnv(REnvironment env, String key) {
138138
try {
139-
return Rm.removeFromEnv(env, key, true);
139+
return Rm.removeFromEnv(env, key, true, RContext.getInstance());
140140
} catch (REnvironment.PutException ex) {
141141
return false;
142142
}
@@ -533,11 +533,6 @@ public RStringVector getClassHierarchy(RAttributable value) {
533533
return ClassHierarchyNode.getClassHierarchy(value);
534534
}
535535

536-
@Override
537-
public RContext getCurrentContext() {
538-
return TruffleRLanguage.getCurrentContext();
539-
}
540-
541536
private static Closure getOrCreateLanguageClosure(RNode expr) {
542537
CompilerAsserts.neverPartOfCompilation();
543538
return RContext.getInstance().languageClosureCache.getOrCreateLanguageClosure(expr);

com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/altrep/AltrepDownCallNodeImpl.java

Lines changed: 2 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2020, 2021, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2020, 2022, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -23,9 +23,7 @@
2323
package com.oracle.truffle.r.ffi.impl.altrep;
2424

2525
import com.oracle.truffle.api.CompilerAsserts;
26-
import com.oracle.truffle.api.TruffleLanguage.ContextReference;
2726
import com.oracle.truffle.api.dsl.Cached;
28-
import com.oracle.truffle.api.dsl.CachedContext;
2927
import com.oracle.truffle.api.dsl.GenerateUncached;
3028
import com.oracle.truffle.api.dsl.Specialization;
3129
import com.oracle.truffle.api.interop.InteropLibrary;
@@ -38,7 +36,6 @@
3836
import com.oracle.truffle.r.ffi.impl.nfi.TruffleNFI_Context;
3937
import com.oracle.truffle.r.runtime.RInternalError;
4038
import com.oracle.truffle.r.runtime.context.RContext;
41-
import com.oracle.truffle.r.runtime.context.TruffleRLanguage;
4239
import com.oracle.truffle.r.runtime.data.altrep.AltrepMethodDescriptor;
4340
import com.oracle.truffle.r.runtime.ffi.AfterDownCallProfiles;
4441
import com.oracle.truffle.r.runtime.ffi.FFIMaterializeNode;
@@ -66,7 +63,6 @@ public static AltrepDownCallNodeImpl getUncached() {
6663
public Object doIt(AltrepMethodDescriptor altrepDowncallIn, boolean unwrapResult, boolean[] wrapArguments, Object[] args,
6764
@CachedLibrary("altrepDowncallIn.method") InteropLibrary methodInterop,
6865
@Cached(value = "createUnwrapNode(unwrapResult)", uncached = "createUncachedUnwrapNode()") FFIUnwrapNode unwrapNode,
69-
@CachedContext(TruffleRLanguage.class) ContextReference<RContext> ctxRef,
7066
@Cached(value = "createMaterialized(wrapArguments)", allowUncached = true) FFIMaterializeNode[] materializeNodes,
7167
@Cached(value = "createToNatives(wrapArguments)", allowUncached = true) FFIToNativeMirrorNode[] toNativeNodes,
7268
@Cached("createBinaryProfile()") ConditionProfile isLLVMProfile,
@@ -78,7 +74,7 @@ public Object doIt(AltrepMethodDescriptor altrepDowncallIn, boolean unwrapResult
7874
AltrepMethodDescriptor altrepMethodDescriptor = identityProfile.profile(altrepDowncallIn);
7975

8076
assert methodInterop.isExecutable(altrepMethodDescriptor.method);
81-
RContext ctx = ctxRef.get();
77+
RContext ctx = RContext.getInstance(this);
8278

8379
Object before;
8480
if (isLLVMProfile.profile(altrepMethodDescriptor.rffiType == Type.LLVM)) {

com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/common/JavaUpCallsRFFIImpl.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -423,7 +423,7 @@ public void Rf_warning(String msg) {
423423
@Override
424424
@TruffleBoundary
425425
public void Rf_warningcall(Object call, String msg) {
426-
RErrorHandling.warningcallRFFI(call, msg);
426+
RErrorHandling.warningcallRFFI(call, RContext.getInstance(), msg);
427427
}
428428

429429
@Override

com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/llvm/TruffleLLVM_Call.java

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2014, 2021, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,8 @@
2222
*/
2323
package com.oracle.truffle.r.ffi.impl.llvm;
2424

25+
import static com.oracle.truffle.r.runtime.context.FastROptions.TraceNativeCalls;
26+
2527
import com.oracle.truffle.api.CompilerDirectives;
2628
import com.oracle.truffle.api.CompilerDirectives.CompilationFinal;
2729
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
@@ -59,8 +61,6 @@
5961
import com.oracle.truffle.r.runtime.ffi.RFFIVariables;
6062
import com.oracle.truffle.r.runtime.ffi.interop.NativeCharArray;
6163

62-
import static com.oracle.truffle.r.runtime.context.FastROptions.TraceNativeCalls;
63-
6464
public final class TruffleLLVM_Call implements CallRFFI {
6565

6666
public TruffleLLVM_Call() {
@@ -227,7 +227,7 @@ protected static FFIToNativeMirrorNode[] createWrapperNodes(int length) {
227227

228228
@Override
229229
public Object dispatch(VirtualFrame frame, NativeCallInfo nativeCallInfo, Object[] args) {
230-
TruffleLLVM_Context rffiCtx = TruffleLLVM_Context.getContextState();
230+
TruffleLLVM_Context rffiCtx = TruffleLLVM_Context.getContextState(RContext.getInstance(this));
231231
pushCallbacks.execute(rffiCtx.callState.setCallbacksAddress, rffiCtx.callState.callbacks);
232232
try {
233233
return InvokeCallNode.super.dispatch(frame, nativeCallInfo, args);

com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/llvm/TruffleLLVM_Context.java

Lines changed: 3 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2014, 2021, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2014, 2022, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -81,10 +81,6 @@ public <C extends RFFIContext> C as(Class<C> rffiCtxClass) {
8181
return (C) this;
8282
}
8383

84-
static TruffleLLVM_Context getContextState() {
85-
return RContext.getInstance().getStateRFFI(TruffleLLVM_Context.class);
86-
}
87-
8884
static TruffleLLVM_Context getContextState(RContext context) {
8985
return context.getStateRFFI(TruffleLLVM_Context.class);
9086
}
@@ -142,7 +138,7 @@ public void beforeDispose(RContext context) {
142138
@CompilationFinal(dimensions = 1) private final TruffleObject[] nativeFunctions = new TruffleObject[NativeFunction.values().length];
143139

144140
@Override
145-
public TruffleObject lookupNativeFunction(NativeFunction function) {
141+
public TruffleObject lookupNativeFunction(NativeFunction function, RContext ctx) {
146142
int index = function.ordinal();
147143
if (nativeFunctions[index] == null) {
148144
// one-off event:
@@ -151,7 +147,7 @@ public TruffleObject lookupNativeFunction(NativeFunction function) {
151147
if (Utils.identityEquals(function.getLibrary(), NativeFunction.baseLibrary())) {
152148
lookupObject = ((LLVM_Handle) DLL.getRdllInfo().handle).handle;
153149
} else if (Utils.identityEquals(function.getLibrary(), NativeFunction.anyLibrary())) {
154-
DLLInfo dllInfo = DLL.findLibraryContainingSymbol(RContext.getInstance(), function.getCallName());
150+
DLLInfo dllInfo = DLL.findLibraryContainingSymbol(ctx, function.getCallName());
155151
if (dllInfo == null) {
156152
throw RInternalError.shouldNotReachHere("Could not find library containing symbol " + function.getCallName());
157153
}

com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/llvm/TruffleLLVM_DLL.java

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2016, 2020, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2016, 2022, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -22,6 +22,10 @@
2222
*/
2323
package com.oracle.truffle.r.ffi.impl.llvm;
2424

25+
import java.io.IOException;
26+
import java.util.HashSet;
27+
import java.util.Set;
28+
2529
import com.oracle.truffle.api.CompilerDirectives;
2630
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
2731
import com.oracle.truffle.api.TruffleFile;
@@ -46,10 +50,6 @@
4650
import com.oracle.truffle.r.runtime.ffi.RFFIFactory;
4751
import com.oracle.truffle.r.runtime.ffi.RFFIFactory.Type;
4852

49-
import java.io.IOException;
50-
import java.util.HashSet;
51-
import java.util.Set;
52-
5353
public class TruffleLLVM_DLL implements DLLRFFI {
5454
// TODO: these dependencies were ignored for some reason, will it be a problem???
5555
private static final Set<String> ignoredNativeLibs = new HashSet<>();
@@ -62,7 +62,7 @@ private static final class TruffleLLVM_DLOpenNode extends Node implements DLOpen
6262
@Override
6363
@TruffleBoundary
6464
public LibHandle execute(String path, @SuppressWarnings("unused") boolean local, @SuppressWarnings("unused") boolean now) {
65-
return dlOpen(RContext.getInstance(), path);
65+
return dlOpen(RContext.getInstance(this), path);
6666
}
6767
}
6868

com.oracle.truffle.r.ffi.impl/src/com/oracle/truffle/r/ffi/impl/llvm/TruffleLLVM_DownCallNodeFactory.java

Lines changed: 9 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
/*
2-
* Copyright (c) 2018, 2020, Oracle and/or its affiliates. All rights reserved.
2+
* Copyright (c) 2018, 2022, Oracle and/or its affiliates. All rights reserved.
33
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
44
*
55
* This code is free software; you can redistribute it and/or modify it
@@ -22,9 +22,9 @@
2222
*/
2323
package com.oracle.truffle.r.ffi.impl.llvm;
2424

25+
import java.nio.charset.StandardCharsets;
26+
2527
import com.oracle.truffle.api.CompilerDirectives.TruffleBoundary;
26-
import com.oracle.truffle.api.TruffleLanguage.ContextReference;
27-
import com.oracle.truffle.api.dsl.CachedContext;
2828
import com.oracle.truffle.api.dsl.GenerateUncached;
2929
import com.oracle.truffle.api.dsl.Specialization;
3030
import com.oracle.truffle.api.frame.Frame;
@@ -35,7 +35,6 @@
3535
import com.oracle.truffle.api.nodes.ExplodeLoop;
3636
import com.oracle.truffle.r.ffi.impl.llvm.TruffleLLVM_DownCallNodeFactoryFactory.LLVMDownCallNodeGen;
3737
import com.oracle.truffle.r.runtime.context.RContext;
38-
import com.oracle.truffle.r.runtime.context.TruffleRLanguage;
3938
import com.oracle.truffle.r.runtime.data.RFunction;
4039
import com.oracle.truffle.r.runtime.ffi.AfterDownCallProfiles;
4140
import com.oracle.truffle.r.runtime.ffi.DownCallNodeFactory;
@@ -47,8 +46,6 @@
4746
import com.oracle.truffle.r.runtime.ffi.interop.NativeIntegerArray;
4847
import com.oracle.truffle.r.runtime.ffi.interop.NativePointer;
4948

50-
import java.nio.charset.StandardCharsets;
51-
5249
public final class TruffleLLVM_DownCallNodeFactory extends DownCallNodeFactory {
5350

5451
public static final TruffleLLVM_DownCallNodeFactory INSTANCE = new TruffleLLVM_DownCallNodeFactory();
@@ -68,17 +65,16 @@ public LLVMDownCallNode() {
6865
}
6966

7067
@Specialization
71-
protected Object doCall(Frame frame, NativeFunction f, Object[] args,
72-
@CachedContext(TruffleRLanguage.class) ContextReference<RContext> ctxRef) {
73-
return doCallImpl(frame, f, args, ctxRef);
68+
protected Object doCall(Frame frame, NativeFunction f, Object[] args) {
69+
return doCallImpl(frame, f, args);
7470
}
7571

7672
@Override
77-
protected TruffleObject createTarget(ContextReference<RContext> ctxRef, NativeFunction fn) {
73+
protected TruffleObject createTarget(RContext ctx, NativeFunction fn) {
7874
if (fn == NativeFunction.initEventLoop) {
7975
return new InitEventLoop();
8076
}
81-
return ctxRef.get().getRFFI(TruffleLLVM_Context.class).lookupNativeFunction(fn);
77+
return ctx.getRFFI(TruffleLLVM_Context.class).lookupNativeFunction(fn, ctx);
8278
}
8379

8480
@Override
@@ -98,7 +94,7 @@ protected Object beforeCall(Frame frame, NativeFunction nativeFunction, TruffleO
9894
args[i] = new NativeCharArray(getStringBytes((String) obj));
9995
}
10096
}
101-
return RContext.getInstance().getRFFI(TruffleLLVM_Context.class).beforeDowncall(maybeMaterializeFrame(frame, nativeFunction),
97+
return RContext.getInstance(this).getRFFI(TruffleLLVM_Context.class).beforeDowncall(maybeMaterializeFrame(frame, nativeFunction),
10298
RFFIFactory.Type.LLVM);
10399
}
104100

@@ -112,7 +108,7 @@ private static byte[] getStringBytes(String obj) {
112108
protected void afterCall(Frame frame, Object before, NativeFunction fn, TruffleObject target, Object[] args) {
113109
assert !(target instanceof RFunction);
114110

115-
(RContext.getInstance().getRFFI(TruffleLLVM_Context.class)).afterDowncall(before, RFFIFactory.Type.LLVM, AfterDownCallProfiles.getUncached());
111+
(RContext.getInstance(this).getRFFI(TruffleLLVM_Context.class)).afterDowncall(before, RFFIFactory.Type.LLVM, AfterDownCallProfiles.getUncached());
116112

117113
for (int i = 0; i < args.length; i++) {
118114
Object obj = args[i];

0 commit comments

Comments
 (0)