use of com.oracle.truffle.llvm.runtime.nodes.control.LLVMDispatchBasicBlockNode in project graal by oracle.
the class LLVMDebuggerScopeFactory method getVariables.
@TruffleBoundary
private LLVMDebuggerScopeEntries getVariables(Frame frame) {
if (symbols.isEmpty()) {
return LLVMDebuggerScopeEntries.EMPTY_SCOPE;
}
final LLVMDebuggerScopeEntries vars = new LLVMDebuggerScopeEntries(getName());
LLVMDispatchBasicBlockNode dispatchBlock = LLVMNode.getParent(node, LLVMDispatchBasicBlockNode.class);
if (frame != null && dispatchBlock != null) {
LocalVariableDebugInfo debugInfo = dispatchBlock.getDebugInfo();
Map<LLVMSourceSymbol, Object> localVariables = debugInfo.getLocalVariables(frame, node);
for (Map.Entry<LLVMSourceSymbol, Object> entry : localVariables.entrySet()) {
LLVMSourceSymbol symbol = entry.getKey();
if (symbols.contains(symbol)) {
vars.add(symbol.getName(), entry.getValue());
}
}
}
for (LLVMSourceSymbol symbol : symbols) {
if (!vars.contains(symbol.getName())) {
LLVMDebugObjectBuilder dbgVal = sourceContext.getStatic(symbol);
if (dbgVal == null) {
dbgVal = LLVMDebugObjectBuilder.UNAVAILABLE;
}
vars.add(convertIdentifier(symbol.getName(), context), dbgVal.getValue(symbol));
}
}
return vars;
}
use of com.oracle.truffle.llvm.runtime.nodes.control.LLVMDispatchBasicBlockNode in project graal by oracle.
the class BasicNodeFactory method createFunction.
@Override
public RootNode createFunction(int exceptionValueSlot, LLVMBasicBlockNode[] allFunctionNodes, UniquesRegion uniquesRegion, LLVMStatementNode[] copyArgumentsToFrame, FrameDescriptor frameDescriptor, int loopSuccessorSlot, LocalVariableDebugInfo debugInfo, String name, String originalName, int argumentCount, Source bcSource, LLVMSourceLocation location, LLVMFunction rootFunction) {
LLVMUniquesRegionAllocNode uniquesRegionAllocNode = uniquesRegion.isEmpty() ? null : LLVMUniquesRegionAllocNodeGen.create(createAlloca(uniquesRegion.getSize(), uniquesRegion.getAlignment()));
LLVMDispatchBasicBlockNode body = LLVMDispatchBasicBlockNodeGen.create(exceptionValueSlot, allFunctionNodes, loopSuccessorSlot, debugInfo);
body.setSourceLocation(LLVMSourceLocation.orDefault(location));
LLVMStackAccess stackAccess = createStackAccess();
LLVMFunctionRootNode functionRoot = LLVMFunctionRootNodeGen.create(uniquesRegionAllocNode, stackAccess, copyArgumentsToFrame, body, frameDescriptor);
functionRoot.setSourceLocation(LLVMSourceLocation.orDefault(location));
return new LLVMFunctionStartNode(language, stackAccess, functionRoot, frameDescriptor, name, argumentCount, originalName, bcSource, location, dataLayout, rootFunction);
}
Aggregations