Search in sources :

Example 1 with LocalVariableDebugInfo

use of com.oracle.truffle.llvm.runtime.types.symbols.LocalVariableDebugInfo 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;
}
Also used : LLVMDebugObjectBuilder(com.oracle.truffle.llvm.runtime.debug.value.LLVMDebugObjectBuilder) LocalVariableDebugInfo(com.oracle.truffle.llvm.runtime.types.symbols.LocalVariableDebugInfo) Map(java.util.Map) LLVMDispatchBasicBlockNode(com.oracle.truffle.llvm.runtime.nodes.control.LLVMDispatchBasicBlockNode) TruffleBoundary(com.oracle.truffle.api.CompilerDirectives.TruffleBoundary)

Aggregations

TruffleBoundary (com.oracle.truffle.api.CompilerDirectives.TruffleBoundary)1 LLVMDebugObjectBuilder (com.oracle.truffle.llvm.runtime.debug.value.LLVMDebugObjectBuilder)1 LLVMDispatchBasicBlockNode (com.oracle.truffle.llvm.runtime.nodes.control.LLVMDispatchBasicBlockNode)1 LocalVariableDebugInfo (com.oracle.truffle.llvm.runtime.types.symbols.LocalVariableDebugInfo)1 Map (java.util.Map)1