Search in sources :

Example 1 with LLVMParser

use of com.oracle.truffle.llvm.parser.LLVMParser 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;
}
Also used : ModelModule(com.oracle.truffle.llvm.parser.model.ModelModule) DataLayout(com.oracle.truffle.llvm.runtime.datalayout.DataLayout) TargetDataLayout(com.oracle.truffle.llvm.parser.model.target.TargetDataLayout) TargetDataLayout(com.oracle.truffle.llvm.parser.model.target.TargetDataLayout) CommonNodeFactory(com.oracle.truffle.llvm.runtime.CommonNodeFactory) NodeFactory(com.oracle.truffle.llvm.runtime.NodeFactory) LLVMParser(com.oracle.truffle.llvm.parser.LLVMParser) LLVMSymbolReadResolver(com.oracle.truffle.llvm.parser.nodes.LLVMSymbolReadResolver) LLVMScope(com.oracle.truffle.llvm.runtime.LLVMScope) LLVMParserResult(com.oracle.truffle.llvm.parser.LLVMParserResult) LLVMParserRuntime(com.oracle.truffle.llvm.parser.LLVMParserRuntime) Source(com.oracle.truffle.api.source.Source)

Aggregations

Source (com.oracle.truffle.api.source.Source)1 LLVMParser (com.oracle.truffle.llvm.parser.LLVMParser)1 LLVMParserResult (com.oracle.truffle.llvm.parser.LLVMParserResult)1 LLVMParserRuntime (com.oracle.truffle.llvm.parser.LLVMParserRuntime)1 ModelModule (com.oracle.truffle.llvm.parser.model.ModelModule)1 TargetDataLayout (com.oracle.truffle.llvm.parser.model.target.TargetDataLayout)1 LLVMSymbolReadResolver (com.oracle.truffle.llvm.parser.nodes.LLVMSymbolReadResolver)1 CommonNodeFactory (com.oracle.truffle.llvm.runtime.CommonNodeFactory)1 LLVMScope (com.oracle.truffle.llvm.runtime.LLVMScope)1 NodeFactory (com.oracle.truffle.llvm.runtime.NodeFactory)1 DataLayout (com.oracle.truffle.llvm.runtime.datalayout.DataLayout)1