예제 #1
0
 @Specialization
 public Object callNamedFunction(
     VirtualFrame frame,
     RList symbol,
     RArgsValuesAndNames args,
     @SuppressWarnings("unused") Object packageName) {
   String name = getNameFromSymbolInfo(frame, symbol);
   Object list = encodeArgumentPairList(args, name);
   return RFFIFactory.getRFFI()
       .getCallRFFI()
       .invokeCall(getAddressFromSymbolInfo(frame, symbol), name, new Object[] {list});
 }
예제 #2
0
 @Specialization
 public Object callNamedFunctionWithPackage(
     String name, RArgsValuesAndNames args, String packageName) {
   controlVisibility();
   SymbolInfo symbolInfo = DLL.findSymbolInfo(name, packageName);
   if (symbolInfo == null) {
     errorProfile.enter();
     throw RError.error(this, Message.C_SYMBOL_NOT_IN_TABLE, name);
   }
   return RFFIFactory.getRFFI()
       .getCallRFFI()
       .invokeCall(symbolInfo.address, symbolInfo.symbol, args.getArguments());
 }
예제 #3
0
 @Specialization
 public Object callNamedFunction(
     VirtualFrame frame,
     RList symbol,
     RArgsValuesAndNames args,
     @SuppressWarnings("unused") Object packageName) {
   return RFFIFactory.getRFFI()
       .getCallRFFI()
       .invokeCall(
           getAddressFromSymbolInfo(frame, symbol),
           getNameFromSymbolInfo(frame, symbol),
           args.getArguments());
 }
예제 #4
0
 @Specialization
 public Object callNamedFunction(
     VirtualFrame frame,
     RList symbol,
     RArgsValuesAndNames args,
     @SuppressWarnings("unused") Object packageName) {
   String name = getNameFromSymbolInfo(frame, symbol);
   Object list = encodeArgumentPairList(args, name);
   // TODO: provide proper values for the CALL, OP and RHO parameters
   return RFFIFactory.getRFFI()
       .getCallRFFI()
       .invokeCall(
           getAddressFromSymbolInfo(frame, symbol), name, new Object[] {CALL, OP, list, RHO});
 }
예제 #5
0
 @Specialization
 public Object callNamedFunctionWithPackage(
     String name, RArgsValuesAndNames args, String packageName) {
   controlVisibility();
   SymbolInfo symbolInfo = DLL.findSymbolInfo(name, packageName);
   if (symbolInfo == null) {
     errorProfile.enter();
     throw RError.error(this, Message.C_SYMBOL_NOT_IN_TABLE, name);
   }
   Object list = encodeArgumentPairList(args, symbolInfo.symbol);
   // TODO: provide proper values for the CALL, OP and RHO parameters
   return RFFIFactory.getRFFI()
       .getCallRFFI()
       .invokeCall(symbolInfo.address, symbolInfo.symbol, new Object[] {CALL, OP, list, RHO});
 }