use of com.oracle.truffle.espresso.runtime.StaticObject in project graal by oracle.
the class ReferenceArrayLoadQuickNode method execute.
@Override
public int execute(VirtualFrame frame) {
int index = BytecodeNode.popInt(frame, top - 1);
StaticObject array = nullCheck(BytecodeNode.popObject(frame, top - 2));
StaticObject result = objectArrayLoad.execute(array, index);
getBytecodeNode().checkNoForeignObjectAssumption(result);
BytecodeNode.putObject(frame, top - 2, result);
return stackEffectOf_AALOAD;
}
use of com.oracle.truffle.espresso.runtime.StaticObject in project graal by oracle.
the class ShortArrayLoadQuickNode method execute.
@Override
public int execute(VirtualFrame frame) {
int index = BytecodeNode.popInt(frame, top - 1);
StaticObject array = nullCheck(BytecodeNode.popObject(frame, top - 2));
BytecodeNode.putInt(frame, top - 2, shortArrayLoad.execute(array, index));
return stackEffectOf_SALOAD;
}
use of com.oracle.truffle.espresso.runtime.StaticObject in project graal by oracle.
the class CharArrayStoreQuickNode method execute.
@Override
public int execute(VirtualFrame frame) {
char value = (char) BytecodeNode.popInt(frame, top - 1);
int index = BytecodeNode.popInt(frame, top - 2);
StaticObject array = nullCheck(BytecodeNode.popObject(frame, top - 3));
charArrayStore.execute(array, index, value);
return stackEffectOf_CASTORE;
}
use of com.oracle.truffle.espresso.runtime.StaticObject in project graal by oracle.
the class MHInvokeBasicNode method call.
@Override
public Object call(Object[] args) {
StaticObject mh = (StaticObject) args[0];
StaticObject lform = form.getObject(mh);
StaticObject mname = vmentry.getObject(lform);
Method target = (Method) hiddenVmtarget.getHiddenObject(mname);
return executeCall(args, target);
}
use of com.oracle.truffle.espresso.runtime.StaticObject in project graal by oracle.
the class MHLinkToNode method call.
@Override
public Object call(Object[] args) {
assert (getMethod().isStatic());
Method.MethodVersion resolutionSeed = getTarget(args);
Object[] basicArgs = unbasic(args, resolutionSeed.getMethod().getParsedSignature(), 0, argCount - 1, hasReceiver);
// method might have been redefined or removed by redefinition
if (!resolutionSeed.getRedefineAssumption().isValid()) {
if (resolutionSeed.getMethod().isRemovedByRedefition()) {
Klass receiverKlass = hasReceiver ? ((StaticObject) basicArgs[0]).getKlass() : resolutionSeed.getMethod().getDeclaringKlass();
resolutionSeed = resolutionSeed.getMethod().getContext().getClassRedefinition().handleRemovedMethod(resolutionSeed.getMethod(), receiverKlass).getMethodVersion();
}
}
Method target = linker.linkTo(resolutionSeed.getMethod(), args);
Object result = executeCall(basicArgs, target.getMethodVersion());
return rebasic(result, target.getReturnKind());
}
Aggregations