Search in sources :

Example 1 with VariableBitWidthType

use of com.oracle.truffle.llvm.runtime.types.VariableBitWidthType in project sulong by graalvm.

the class LLVMFrameNullerUtil method nullObject.

public static void nullObject(VirtualFrame frame, FrameSlot frameSlot) {
    CompilerAsserts.partialEvaluationConstant(frameSlot.getInfo());
    CompilerAsserts.partialEvaluationConstant(frameSlot.getInfo() == null);
    if (frameSlot.getInfo() != null) {
        Type type = (Type) frameSlot.getInfo();
        CompilerAsserts.partialEvaluationConstant(Type.isFunctionOrFunctionPointer(type));
        CompilerAsserts.partialEvaluationConstant(type instanceof VectorType);
        CompilerAsserts.partialEvaluationConstant(type instanceof VariableBitWidthType);
        CompilerAsserts.partialEvaluationConstant(type instanceof PrimitiveType && ((PrimitiveType) type).getPrimitiveKind() == PrimitiveKind.X86_FP80);
        if (Type.isFunctionOrFunctionPointer(type)) {
            nullFunction(frame, frameSlot);
        } else if (type instanceof VectorType && ((VectorType) type).getElementType() instanceof PrimitiveType) {
            nullVector(frame, frameSlot, ((PrimitiveType) ((VectorType) type).getElementType()).getPrimitiveKind());
        } else if (type instanceof VectorType && ((VectorType) type).getElementType() instanceof PointerType) {
            frame.setObject(frameSlot, LLVMAddressVector.createNullVector());
        } else if (type instanceof VariableBitWidthType) {
            nullIVarBit(frame, frameSlot);
        } else if (type instanceof PrimitiveType && ((PrimitiveType) type).getPrimitiveKind() == PrimitiveKind.X86_FP80) {
            null80BitFloat(frame, frameSlot);
        }
    }
    // This is a best effort approach. It could still be that LLVMAddress clashes with some
    // other class.
    nullAddress(frame, frameSlot);
}
Also used : PrimitiveType(com.oracle.truffle.llvm.runtime.types.PrimitiveType) VariableBitWidthType(com.oracle.truffle.llvm.runtime.types.VariableBitWidthType) VectorType(com.oracle.truffle.llvm.runtime.types.VectorType) PointerType(com.oracle.truffle.llvm.runtime.types.PointerType) Type(com.oracle.truffle.llvm.runtime.types.Type) VectorType(com.oracle.truffle.llvm.runtime.types.VectorType) VariableBitWidthType(com.oracle.truffle.llvm.runtime.types.VariableBitWidthType) PrimitiveType(com.oracle.truffle.llvm.runtime.types.PrimitiveType) PointerType(com.oracle.truffle.llvm.runtime.types.PointerType)

Aggregations

PointerType (com.oracle.truffle.llvm.runtime.types.PointerType)1 PrimitiveType (com.oracle.truffle.llvm.runtime.types.PrimitiveType)1 Type (com.oracle.truffle.llvm.runtime.types.Type)1 VariableBitWidthType (com.oracle.truffle.llvm.runtime.types.VariableBitWidthType)1 VectorType (com.oracle.truffle.llvm.runtime.types.VectorType)1