use of com.oracle.truffle.espresso.nodes.quick.interop.ReferenceArrayStoreQuickNode in project graal by oracle.
the class BytecodeNode method quickenArrayStore.
private int quickenArrayStore(final VirtualFrame frame, int top, int curBCI, int storeOpcode) {
CompilerDirectives.transferToInterpreterAndInvalidate();
assert IASTORE <= storeOpcode && storeOpcode <= SASTORE;
BaseQuickNode arrayStoreNode;
synchronized (this) {
if (bs.currentVolatileBC(curBCI) == SLIM_QUICK) {
arrayStoreNode = sparseNodes[curBCI];
} else {
// @formatter:off
switch(storeOpcode) {
case BASTORE:
arrayStoreNode = new ByteArrayStoreQuickNode(top, curBCI);
break;
case SASTORE:
arrayStoreNode = new ShortArrayStoreQuickNode(top, curBCI);
break;
case CASTORE:
arrayStoreNode = new CharArrayStoreQuickNode(top, curBCI);
break;
case IASTORE:
arrayStoreNode = new IntArrayStoreQuickNode(top, curBCI);
break;
case FASTORE:
arrayStoreNode = new FloatArrayStoreQuickNode(top, curBCI);
break;
case LASTORE:
arrayStoreNode = new LongArrayStoreQuickNode(top, curBCI);
break;
case DASTORE:
arrayStoreNode = new DoubleArrayStoreQuickNode(top, curBCI);
break;
case AASTORE:
arrayStoreNode = new ReferenceArrayStoreQuickNode(top, curBCI);
break;
default:
CompilerDirectives.transferToInterpreter();
throw EspressoError.shouldNotReachHere("unexpected kind");
}
// @formatter:on
arrayStoreNode = injectQuick(curBCI, arrayStoreNode, SLIM_QUICK);
}
}
return arrayStoreNode.execute(frame) - Bytecodes.stackEffectOf(storeOpcode);
}
Aggregations