private boolean isKind(FrameSlot slot, FrameSlotKind kind) { if (slot.getKind() == kind) { return true; } if (slot.getKind() == FrameSlotKind.Illegal) { CompilerDirectives.transferToInterpreterAndInvalidate(); slot.setKind(kind); return true; } return false; }
@Specialization(contains = {"writeLong", "writeBoolean"}) protected Object write(VirtualFrame virtualFrame, Object value) { FrameSlot slot = this.getSlot(); if (slot.getKind() != FrameSlotKind.Object) { CompilerDirectives.transferToInterpreterAndInvalidate(); slot.setKind(FrameSlotKind.Object); } virtualFrame.setObject(slot, value); return value; }
private boolean isKind(FrameSlotKind kind) { if (getSlot().getKind() == kind) { return true; } else if (getSlot().getKind() == FrameSlotKind.Illegal) { CompilerDirectives.transferToInterpreterAndInvalidate(); getSlot().setKind(kind); return true; } else { return false; } } }