use of com.oracle.truffle.llvm.runtime.datalayout.DataLayout in project graal by oracle.
the class LLVMDebuggerScopeFactory method createIRLevelScope.
@TruffleBoundary
public static Object createIRLevelScope(Node node, Frame frame, LLVMContext context) {
DataLayout dataLayout = LLVMNode.findDataLayout(node);
final LLVMDebuggerScopeEntries localScope = getIRLevelEntries(frame, context, dataLayout);
final LLVMDebuggerScopeEntries globalScope = getIRLevelEntries(node, context, dataLayout);
localScope.setParentScope(globalScope);
return localScope;
}
use of com.oracle.truffle.llvm.runtime.datalayout.DataLayout in project graal by oracle.
the class LLVMVAListNode method createAllocaNode.
LLVMExpressionNode createAllocaNode() {
DataLayout dataLayout = getDataLayout();
LLVMLanguage language = LLVMLanguage.get(null);
PlatformCapability<?> capability = language.getCapability(PlatformCapability.class);
return language.getActiveConfiguration().createNodeFactory(language, dataLayout).createAlloca(capability.getVAListType(), capability.getVAListAlignment());
}
use of com.oracle.truffle.llvm.runtime.datalayout.DataLayout in project graal by oracle.
the class LLVMPanic method createPanicLocation.
protected PanicLocType createPanicLocation() {
LLVMFunctionStartNode startNode = (LLVMFunctionStartNode) getRootNode();
DataLayout dataSpecConverter = startNode.getDatalayout();
return PanicLocType.create(dataSpecConverter);
}
use of com.oracle.truffle.llvm.runtime.datalayout.DataLayout in project graal by oracle.
the class DITypeExtractor method visit.
@Override
public void visit(MDSubprogram mdSubprogram) {
// 'this' parameter of thunk methods is missing in the debug info, thus fix here.
LLVMSourceType llvmSourceType = resolve(mdSubprogram.getType());
if (Flags.THUNK.isSetIn(mdSubprogram.getFlags())) {
SymbolImpl symbol = MDValue.getIfInstance(mdSubprogram.getFunction());
if (symbol != null && symbol instanceof FunctionDefinition) {
FunctionDefinition function = (FunctionDefinition) symbol;
final DataLayout dataLayout = LLVMLanguage.get(null).getDefaultDataLayout();
LLVMSourceType llvmSourceReturnType = LLVMSourceTypeFactory.resolveType(function.getType().getReturnType(), dataLayout);
List<LLVMSourceType> typeList = new ArrayList<>();
typeList.add(llvmSourceReturnType);
for (FunctionParameter fp : function.getParameters()) {
LLVMSourceType parameterSourceType = LLVMSourceTypeFactory.resolveType(fp.getType(), dataLayout);
typeList.add(parameterSourceType);
}
llvmSourceType = new LLVMSourceFunctionType(typeList);
}
}
parsedTypes.put(mdSubprogram, llvmSourceType);
}
use of com.oracle.truffle.llvm.runtime.datalayout.DataLayout in project graal by oracle.
the class ParserDriver method parseBinary.
/**
* Parses a binary (bitcode with optional meta information from an ELF, Mach-O object file).
*/
private LLVMParserResult parseBinary(BinaryParserResult binaryParserResult, TruffleFile file) {
ModelModule module = new ModelModule();
Source source = binaryParserResult.getSource();
LLVMScanner.parseBitcode(binaryParserResult.getBitcode(), module, source);
TargetDataLayout layout = module.getTargetDataLayout();
DataLayout targetDataLayout = new DataLayout(layout.getDataLayout());
verifyBitcodeSource(source, targetDataLayout, getTargetTriple(module));
NodeFactory nodeFactory = context.getLanguage().getActiveConfiguration().createNodeFactory(language, targetDataLayout);
// Create a new public file scope to be returned inside sulong library.
LLVMScope publicFileScope = new LLVMScope();
LLVMScope fileScope = new LLVMScope();
LLVMParserRuntime runtime = new LLVMParserRuntime(fileScope, publicFileScope, nodeFactory, bitcodeID, file, binaryParserResult.getLibraryName(), getSourceFilesWithChecksums(context.getEnv(), module), binaryParserResult.getLocator());
LLVMParser parser = new LLVMParser(source, runtime);
LLVMParserResult result = parser.parse(module, targetDataLayout);
createDebugInfo(module, new LLVMSymbolReadResolver(runtime, null, GetStackSpaceFactory.createAllocaFactory(), targetDataLayout, false));
return result;
}
Aggregations