mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 17:59:46 +02:00
GP-1545: De-guava the Debugger
This commit is contained in:
parent
a2ae1f08ce
commit
d43b9ead66
142 changed files with 1125 additions and 1889 deletions
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.advanced;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -43,14 +42,11 @@ public interface DebugAdvancedInternal extends DebugAdvanced {
|
||||||
return DbgEngUtil.lazyWeakCache(CACHE, advanced, DebugAdvancedImpl3::new);
|
return DbgEngUtil.lazyWeakCache(CACHE, advanced, DebugAdvancedImpl3::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugAdvanced>> PREFERRED_ADVANCED_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugAdvanced>> PREFERRED_ADVANCED_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugAdvanced>> PREFERRED_ADVANCED_IIDS =
|
||||||
PREFERRED_ADVANCED_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugAdvanced3.IID_IDEBUG_ADVANCED3), WrapIDebugAdvanced3.class) //
|
Map.entry(new REFIID(IDebugAdvanced3.IID_IDEBUG_ADVANCED3), WrapIDebugAdvanced3.class),
|
||||||
.put(new REFIID(IDebugAdvanced2.IID_IDEBUG_ADVANCED2), WrapIDebugAdvanced2.class) //
|
Map.entry(new REFIID(IDebugAdvanced2.IID_IDEBUG_ADVANCED2), WrapIDebugAdvanced2.class),
|
||||||
.put(new REFIID(IDebugAdvanced.IID_IDEBUG_ADVANCED), WrapIDebugAdvanced.class) //
|
Map.entry(new REFIID(IDebugAdvanced.IID_IDEBUG_ADVANCED), WrapIDebugAdvanced.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugAdvancedInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugAdvancedInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgEngUtil.tryPreferredInterfaces(DebugAdvancedInternal.class,
|
return DbgEngUtil.tryPreferredInterfaces(DebugAdvancedInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.breakpoint;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -43,16 +42,14 @@ public interface DebugBreakpointInternal extends DebugBreakpoint {
|
||||||
return DbgEngUtil.lazyWeakCache(CACHE, bp, DebugBreakpointImpl3::new);
|
return DbgEngUtil.lazyWeakCache(CACHE, bp, DebugBreakpointImpl3::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugBreakpoint>> PREFERRED_BREAKPOINT_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugBreakpoint>> PREFERRED_BREAKPOINT_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugBreakpoint>> PREFERRED_BREAKPOINT_IIDS =
|
||||||
PREFERRED_BREAKPOINT_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugBreakpoint3.IID_IDEBUG_BREAKPOINT3),
|
Map.entry(new REFIID(IDebugBreakpoint3.IID_IDEBUG_BREAKPOINT3),
|
||||||
WrapIDebugBreakpoint3.class) //
|
WrapIDebugBreakpoint3.class),
|
||||||
.put(new REFIID(IDebugBreakpoint2.IID_IDEBUG_BREAKPOINT2),
|
Map.entry(new REFIID(IDebugBreakpoint2.IID_IDEBUG_BREAKPOINT2),
|
||||||
WrapIDebugBreakpoint2.class) //
|
WrapIDebugBreakpoint2.class),
|
||||||
.put(new REFIID(IDebugBreakpoint.IID_IDEBUG_BREAKPOINT), WrapIDebugBreakpoint.class) //
|
Map.entry(new REFIID(IDebugBreakpoint.IID_IDEBUG_BREAKPOINT),
|
||||||
.build();
|
WrapIDebugBreakpoint.class));
|
||||||
|
|
||||||
static DebugBreakpointInternal tryPreferredInterfaces(DebugControlInternal control,
|
static DebugBreakpointInternal tryPreferredInterfaces(DebugControlInternal control,
|
||||||
InterfaceSupplier supplier) {
|
InterfaceSupplier supplier) {
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.client;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -67,18 +66,15 @@ public interface DebugClientInternal extends DebugClient {
|
||||||
return DbgEngUtil.lazyWeakCache(CACHE, client, DebugClientImpl7::new);
|
return DbgEngUtil.lazyWeakCache(CACHE, client, DebugClientImpl7::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugClient>> PREFERRED_CLIENT_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugClient>> PREFERRED_CLIENT_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugClient>> PREFERRED_CLIENT_IIDS =
|
||||||
PREFERRED_CLIENT_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugClient7.IID_IDEBUG_CLIENT7), WrapIDebugClient7.class) //
|
Map.entry(new REFIID(IDebugClient7.IID_IDEBUG_CLIENT7), WrapIDebugClient7.class),
|
||||||
.put(new REFIID(IDebugClient6.IID_IDEBUG_CLIENT6), WrapIDebugClient6.class) //
|
Map.entry(new REFIID(IDebugClient6.IID_IDEBUG_CLIENT6), WrapIDebugClient6.class),
|
||||||
.put(new REFIID(IDebugClient5.IID_IDEBUG_CLIENT5), WrapIDebugClient5.class) //
|
Map.entry(new REFIID(IDebugClient5.IID_IDEBUG_CLIENT5), WrapIDebugClient5.class),
|
||||||
.put(new REFIID(IDebugClient4.IID_IDEBUG_CLIENT4), WrapIDebugClient4.class) //
|
Map.entry(new REFIID(IDebugClient4.IID_IDEBUG_CLIENT4), WrapIDebugClient4.class),
|
||||||
.put(new REFIID(IDebugClient3.IID_IDEBUG_CLIENT3), WrapIDebugClient3.class) //
|
Map.entry(new REFIID(IDebugClient3.IID_IDEBUG_CLIENT3), WrapIDebugClient3.class),
|
||||||
.put(new REFIID(IDebugClient2.IID_IDEBUG_CLIENT2), WrapIDebugClient2.class) //
|
Map.entry(new REFIID(IDebugClient2.IID_IDEBUG_CLIENT2), WrapIDebugClient2.class),
|
||||||
.put(new REFIID(IDebugClient.IID_IDEBUG_CLIENT), WrapIDebugClient.class) //
|
Map.entry(new REFIID(IDebugClient.IID_IDEBUG_CLIENT), WrapIDebugClient.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugClientInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugClientInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgEngUtil.tryPreferredInterfaces(DebugClientInternal.class, PREFERRED_CLIENT_IIDS,
|
return DbgEngUtil.tryPreferredInterfaces(DebugClientInternal.class, PREFERRED_CLIENT_IIDS,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.control;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -59,18 +58,15 @@ public interface DebugControlInternal extends DebugControl {
|
||||||
return DbgEngUtil.lazyWeakCache(CACHE, control, DebugControlImpl7::new);
|
return DbgEngUtil.lazyWeakCache(CACHE, control, DebugControlImpl7::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugControl>> PREFERRED_CONTROL_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugControl>> PREFERRED_CONTROL_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugControl>> PREFERRED_CONTROL_IIDS =
|
||||||
PREFERRED_CONTROL_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugControl7.IID_IDEBUG_CONTROL7), WrapIDebugControl7.class) //
|
Map.entry(new REFIID(IDebugControl7.IID_IDEBUG_CONTROL7), WrapIDebugControl7.class),
|
||||||
.put(new REFIID(IDebugControl6.IID_IDEBUG_CONTROL6), WrapIDebugControl6.class) //
|
Map.entry(new REFIID(IDebugControl6.IID_IDEBUG_CONTROL6), WrapIDebugControl6.class),
|
||||||
.put(new REFIID(IDebugControl5.IID_IDEBUG_CONTROL5), WrapIDebugControl5.class) //
|
Map.entry(new REFIID(IDebugControl5.IID_IDEBUG_CONTROL5), WrapIDebugControl5.class),
|
||||||
.put(new REFIID(IDebugControl4.IID_IDEBUG_CONTROL4), WrapIDebugControl4.class) //
|
Map.entry(new REFIID(IDebugControl4.IID_IDEBUG_CONTROL4), WrapIDebugControl4.class),
|
||||||
.put(new REFIID(IDebugControl3.IID_IDEBUG_CONTROL3), WrapIDebugControl3.class) //
|
Map.entry(new REFIID(IDebugControl3.IID_IDEBUG_CONTROL3), WrapIDebugControl3.class),
|
||||||
.put(new REFIID(IDebugControl2.IID_IDEBUG_CONTROL2), WrapIDebugControl2.class) //
|
Map.entry(new REFIID(IDebugControl2.IID_IDEBUG_CONTROL2), WrapIDebugControl2.class),
|
||||||
.put(new REFIID(IDebugControl.IID_IDEBUG_CONTROL), WrapIDebugControl.class) //
|
Map.entry(new REFIID(IDebugControl.IID_IDEBUG_CONTROL), WrapIDebugControl.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugControlInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugControlInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgEngUtil.tryPreferredInterfaces(DebugControlInternal.class, PREFERRED_CONTROL_IIDS,
|
return DbgEngUtil.tryPreferredInterfaces(DebugControlInternal.class, PREFERRED_CONTROL_IIDS,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.dataspaces;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -46,19 +45,16 @@ public interface DebugDataSpacesInternal extends DebugDataSpaces {
|
||||||
return DbgEngUtil.lazyWeakCache(CACHE, data, DebugDataSpacesImpl4::new);
|
return DbgEngUtil.lazyWeakCache(CACHE, data, DebugDataSpacesImpl4::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugDataSpaces>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugDataSpaces>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugDataSpaces>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugDataSpaces4.IID_IDEBUG_DATA_SPACES4),
|
Map.entry(new REFIID(IDebugDataSpaces4.IID_IDEBUG_DATA_SPACES4),
|
||||||
WrapIDebugDataSpaces4.class) //
|
WrapIDebugDataSpaces4.class),
|
||||||
.put(new REFIID(IDebugDataSpaces3.IID_IDEBUG_DATA_SPACES3),
|
Map.entry(new REFIID(IDebugDataSpaces3.IID_IDEBUG_DATA_SPACES3),
|
||||||
WrapIDebugDataSpaces3.class) //
|
WrapIDebugDataSpaces3.class),
|
||||||
.put(new REFIID(IDebugDataSpaces2.IID_IDEBUG_DATA_SPACES2),
|
Map.entry(new REFIID(IDebugDataSpaces2.IID_IDEBUG_DATA_SPACES2),
|
||||||
WrapIDebugDataSpaces2.class) //
|
WrapIDebugDataSpaces2.class),
|
||||||
.put(new REFIID(IDebugDataSpaces.IID_IDEBUG_DATA_SPACES),
|
Map.entry(new REFIID(IDebugDataSpaces.IID_IDEBUG_DATA_SPACES),
|
||||||
WrapIDebugDataSpaces.class) //
|
WrapIDebugDataSpaces.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugDataSpacesInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugDataSpacesInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgEngUtil.tryPreferredInterfaces(DebugDataSpacesInternal.class,
|
return DbgEngUtil.tryPreferredInterfaces(DebugDataSpacesInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.registers;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -38,13 +37,12 @@ public interface DebugRegistersInternal extends DebugRegisters {
|
||||||
return DbgEngUtil.lazyWeakCache(CACHE, registers, DebugRegistersImpl2::new);
|
return DbgEngUtil.lazyWeakCache(CACHE, registers, DebugRegistersImpl2::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugRegisters>> PREFERRED_REGISTERS_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugRegisters>> PREFERRED_REGISTERS_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugRegisters>> PREFERRED_REGISTERS_IIDS =
|
||||||
PREFERRED_REGISTERS_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugRegisters2.IID_IDEBUG_REGISTERS2), WrapIDebugRegisters2.class) //
|
Map.entry(new REFIID(IDebugRegisters2.IID_IDEBUG_REGISTERS2),
|
||||||
.put(new REFIID(IDebugRegisters.IID_IDEBUG_REGISTERS), WrapIDebugRegisters.class) //
|
WrapIDebugRegisters2.class),
|
||||||
.build();
|
Map.entry(new REFIID(IDebugRegisters.IID_IDEBUG_REGISTERS),
|
||||||
|
WrapIDebugRegisters.class));
|
||||||
|
|
||||||
static DebugRegistersInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugRegistersInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgEngUtil.tryPreferredInterfaces(DebugRegistersInternal.class,
|
return DbgEngUtil.tryPreferredInterfaces(DebugRegistersInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.symbols;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -51,16 +50,13 @@ public interface DebugSymbolsInternal extends DebugSymbols {
|
||||||
return DbgEngUtil.lazyWeakCache(CACHE, symbols, DebugSymbolsImpl5::new);
|
return DbgEngUtil.lazyWeakCache(CACHE, symbols, DebugSymbolsImpl5::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugSymbols>> PREFERRED_SYMBOLS_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugSymbols>> PREFFERED_SYMBOLS_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugSymbols>> PREFFERED_SYMBOLS_IIDS =
|
||||||
PREFERRED_SYMBOLS_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugSymbols5.IID_IDEBUG_SYMBOLS5), WrapIDebugSymbols5.class) //
|
Map.entry(new REFIID(IDebugSymbols5.IID_IDEBUG_SYMBOLS5), WrapIDebugSymbols5.class),
|
||||||
.put(new REFIID(IDebugSymbols4.IID_IDEBUG_SYMBOLS4), WrapIDebugSymbols4.class) //
|
Map.entry(new REFIID(IDebugSymbols4.IID_IDEBUG_SYMBOLS4), WrapIDebugSymbols4.class),
|
||||||
.put(new REFIID(IDebugSymbols3.IID_IDEBUG_SYMBOLS3), WrapIDebugSymbols3.class) //
|
Map.entry(new REFIID(IDebugSymbols3.IID_IDEBUG_SYMBOLS3), WrapIDebugSymbols3.class),
|
||||||
.put(new REFIID(IDebugSymbols2.IID_IDEBUG_SYMBOLS2), WrapIDebugSymbols2.class) //
|
Map.entry(new REFIID(IDebugSymbols2.IID_IDEBUG_SYMBOLS2), WrapIDebugSymbols2.class),
|
||||||
.put(new REFIID(IDebugSymbols.IID_IDEBUG_SYMBOLS), WrapIDebugSymbols.class) //
|
Map.entry(new REFIID(IDebugSymbols.IID_IDEBUG_SYMBOLS), WrapIDebugSymbols.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugSymbolsInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugSymbolsInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgEngUtil.tryPreferredInterfaces(DebugSymbolsInternal.class, PREFFERED_SYMBOLS_IIDS,
|
return DbgEngUtil.tryPreferredInterfaces(DebugSymbolsInternal.class, PREFFERED_SYMBOLS_IIDS,
|
||||||
|
@ -69,6 +65,7 @@ public interface DebugSymbolsInternal extends DebugSymbols {
|
||||||
|
|
||||||
String getModuleName(DebugModuleName which, DebugModule module);
|
String getModuleName(DebugModuleName which, DebugModule module);
|
||||||
|
|
||||||
|
@Override
|
||||||
DebugModuleInfo getModuleParameters(int count, int startIndex);
|
DebugModuleInfo getModuleParameters(int count, int startIndex);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgeng.impl.dbgeng.sysobj;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -46,19 +45,16 @@ public interface DebugSystemObjectsInternal extends DebugSystemObjects {
|
||||||
return DbgEngUtil.lazyWeakCache(CACHE, sysobj, DebugSystemObjectsImpl4::new);
|
return DbgEngUtil.lazyWeakCache(CACHE, sysobj, DebugSystemObjectsImpl4::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugSystemObjects>> PREFERRED_SYSTEM_OBJECTS_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugSystemObjects>> PREFERRED_SYSTEM_OBJECTS_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugSystemObjects>> PREFERRED_SYSTEM_OBJECTS_IIDS =
|
||||||
PREFERRED_SYSTEM_OBJECTS_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugSystemObjects4.IID_IDEBUG_SYSTEM_OBJECTS4),
|
Map.entry(new REFIID(IDebugSystemObjects4.IID_IDEBUG_SYSTEM_OBJECTS4),
|
||||||
WrapIDebugSystemObjects4.class) //
|
WrapIDebugSystemObjects4.class),
|
||||||
.put(new REFIID(IDebugSystemObjects3.IID_IDEBUG_SYSTEM_OBJECTS3),
|
Map.entry(new REFIID(IDebugSystemObjects3.IID_IDEBUG_SYSTEM_OBJECTS3),
|
||||||
WrapIDebugSystemObjects3.class) //
|
WrapIDebugSystemObjects3.class),
|
||||||
.put(new REFIID(IDebugSystemObjects2.IID_IDEBUG_SYSTEM_OBJECTS2),
|
Map.entry(new REFIID(IDebugSystemObjects2.IID_IDEBUG_SYSTEM_OBJECTS2),
|
||||||
WrapIDebugSystemObjects2.class) //
|
WrapIDebugSystemObjects2.class),
|
||||||
.put(new REFIID(IDebugSystemObjects.IID_IDEBUG_SYSTEM_OBJECTS),
|
Map.entry(new REFIID(IDebugSystemObjects.IID_IDEBUG_SYSTEM_OBJECTS),
|
||||||
WrapIDebugSystemObjects.class) //
|
WrapIDebugSystemObjects.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugSystemObjectsInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugSystemObjectsInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgEngUtil.tryPreferredInterfaces(DebugSystemObjectsInternal.class,
|
return DbgEngUtil.tryPreferredInterfaces(DebugSystemObjectsInternal.class,
|
||||||
|
|
|
@ -26,6 +26,7 @@ import ghidra.dbg.target.TargetBreakpointSpec;
|
||||||
import ghidra.dbg.target.schema.TargetAttributeType;
|
import ghidra.dbg.target.schema.TargetAttributeType;
|
||||||
import ghidra.dbg.target.schema.TargetObjectSchemaInfo;
|
import ghidra.dbg.target.schema.TargetObjectSchemaInfo;
|
||||||
import ghidra.dbg.util.PathUtils;
|
import ghidra.dbg.util.PathUtils;
|
||||||
|
import ghidra.util.datastruct.ListenerMap.ListenerEntry;
|
||||||
import ghidra.util.datastruct.ListenerSet;
|
import ghidra.util.datastruct.ListenerSet;
|
||||||
|
|
||||||
@TargetObjectSchemaInfo(
|
@TargetObjectSchemaInfo(
|
||||||
|
@ -84,8 +85,9 @@ public class DbgModelTargetBreakpointSpecImpl extends DbgModelTargetObjectImpl
|
||||||
private final ListenerSet<TargetBreakpointAction> actions =
|
private final ListenerSet<TargetBreakpointAction> actions =
|
||||||
new ListenerSet<>(TargetBreakpointAction.class) {
|
new ListenerSet<>(TargetBreakpointAction.class) {
|
||||||
// Use strong references on actions
|
// Use strong references on actions
|
||||||
protected Map<TargetBreakpointAction, TargetBreakpointAction> createMap() {
|
// The values may be weak, but the keys, which are the same objects, are strong
|
||||||
return Collections.synchronizedMap(new LinkedHashMap<>());
|
protected Map<TargetBreakpointAction, ListenerEntry<? extends TargetBreakpointAction>> createMap() {
|
||||||
|
return new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -17,16 +17,13 @@ package agent.dbgmodel.impl.dbgmodel;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
import com.sun.jna.platform.win32.COM.IUnknown;
|
||||||
|
|
||||||
import agent.dbgmodel.dbgmodel.UnknownEx;
|
import agent.dbgmodel.dbgmodel.UnknownEx;
|
||||||
import agent.dbgmodel.impl.dbgmodel.DbgModelUtil.InterfaceSupplier;
|
import agent.dbgmodel.impl.dbgmodel.DbgModelUtil.InterfaceSupplier;
|
||||||
import agent.dbgmodel.jna.dbgmodel.WrapIUnknownEx;
|
import agent.dbgmodel.jna.dbgmodel.WrapIUnknownEx;
|
||||||
|
|
||||||
import com.sun.jna.platform.win32.COM.IUnknown;
|
|
||||||
|
|
||||||
import ghidra.util.datastruct.WeakValueHashMap;
|
import ghidra.util.datastruct.WeakValueHashMap;
|
||||||
|
|
||||||
public interface UnknownExInternal extends UnknownEx {
|
public interface UnknownExInternal extends UnknownEx {
|
||||||
|
@ -36,12 +33,9 @@ public interface UnknownExInternal extends UnknownEx {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, UnknownExImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, UnknownExImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIUnknownEx>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIUnknownEx>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIUnknownEx>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IUnknown.IID_IUNKNOWN), WrapIUnknownEx.class) //
|
Map.entry(new REFIID(IUnknown.IID_IUNKNOWN), WrapIUnknownEx.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static UnknownExInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static UnknownExInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(UnknownExInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(UnknownExInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.bridge;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface HostDataModelAccessInternal extends HostDataModelAccess {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, HostDataModelAccessImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, HostDataModelAccessImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIHostDataModelAccess>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIHostDataModelAccess>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIHostDataModelAccess>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IHostDataModelAccess.IID_IHOST_DATA_MODEL_ACCESS),
|
Map.entry(new REFIID(IHostDataModelAccess.IID_IHOST_DATA_MODEL_ACCESS),
|
||||||
WrapIHostDataModelAccess.class) //
|
WrapIHostDataModelAccess.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static HostDataModelAccessInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static HostDataModelAccessInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(HostDataModelAccessInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(HostDataModelAccessInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.concept;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface ComparableConceptInternal extends ComparableConcept {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, ComparableConceptImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, ComparableConceptImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIComparableConcept>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIComparableConcept>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIComparableConcept>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IComparableConcept.IID_ICOMPARABLE_CONCEPT),
|
Map.entry(new REFIID(IComparableConcept.IID_ICOMPARABLE_CONCEPT),
|
||||||
WrapIComparableConcept.class) //
|
WrapIComparableConcept.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static ComparableConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static ComparableConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(ComparableConceptInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(ComparableConceptInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.concept;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DataModelConceptInternal extends DataModelConcept {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelConceptImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelConceptImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelConcept>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelConcept>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelConcept>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDataModelConcept.IID_IDATA_MODEL_CONCEPT),
|
Map.entry(new REFIID(IDataModelConcept.IID_IDATA_MODEL_CONCEPT),
|
||||||
WrapIDataModelConcept.class) //
|
WrapIDataModelConcept.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DataModelConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DataModelConceptInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DataModelConceptInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.concept;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -36,15 +35,12 @@ public interface DynamicConceptProviderConceptInternal extends DynamicConceptPro
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DynamicConceptProviderConceptImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DynamicConceptProviderConceptImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDynamicConceptProviderConcept>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDynamicConceptProviderConcept>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDynamicConceptProviderConcept>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(
|
Map.entry(
|
||||||
new REFIID(
|
new REFIID(
|
||||||
IDynamicConceptProviderConcept.IID_IDYNAMIC_CONCEPT_PROVIDER_CONCEPT),
|
IDynamicConceptProviderConcept.IID_IDYNAMIC_CONCEPT_PROVIDER_CONCEPT),
|
||||||
WrapIDynamicConceptProviderConcept.class) //
|
WrapIDynamicConceptProviderConcept.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DynamicConceptProviderConceptInternal tryPreferredInterfaces(
|
static DynamicConceptProviderConceptInternal tryPreferredInterfaces(
|
||||||
InterfaceSupplier supplier) {
|
InterfaceSupplier supplier) {
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.concept;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DynamicKeyProviderConceptInternal extends DynamicKeyProviderCon
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DynamicKeyProviderConceptImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DynamicKeyProviderConceptImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDynamicKeyProviderConcept>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDynamicKeyProviderConcept>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDynamicKeyProviderConcept>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDynamicKeyProviderConcept.IID_IDYNAMIC_KEY_PROVIDER_CONCEPT),
|
Map.entry(new REFIID(IDynamicKeyProviderConcept.IID_IDYNAMIC_KEY_PROVIDER_CONCEPT),
|
||||||
WrapIDynamicKeyProviderConcept.class) //
|
WrapIDynamicKeyProviderConcept.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DynamicKeyProviderConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DynamicKeyProviderConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DynamicKeyProviderConceptInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DynamicKeyProviderConceptInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.concept;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface EquatableConceptInternal extends EquatableConcept {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, EquatableConceptImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, EquatableConceptImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIEquatableConcept>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIEquatableConcept>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIEquatableConcept>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IEquatableConcept.IID_IEQUATABLE_CONCEPT),
|
Map.entry(new REFIID(IEquatableConcept.IID_IEQUATABLE_CONCEPT),
|
||||||
WrapIEquatableConcept.class) //
|
WrapIEquatableConcept.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static EquatableConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static EquatableConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(EquatableConceptInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(EquatableConceptInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.concept;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface IndexableConceptInternal extends IndexableConcept {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, IndexableConceptImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, IndexableConceptImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIIndexableConcept>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIIndexableConcept>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIIndexableConcept>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IIndexableConcept.IID_IINDEXABLE_CONCEPT),
|
Map.entry(new REFIID(IIndexableConcept.IID_IINDEXABLE_CONCEPT),
|
||||||
WrapIIndexableConcept.class) //
|
WrapIIndexableConcept.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static IndexableConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static IndexableConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(IndexableConceptInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(IndexableConceptInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.concept;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,12 +34,10 @@ public interface IterableConceptInternal extends IterableConcept {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, IterableConceptImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, IterableConceptImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIIterableConcept>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIIterableConcept>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIIterableConcept>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IIterableConcept.IID_IITERABLE_CONCEPT), WrapIIterableConcept.class) //
|
Map.entry(new REFIID(IIterableConcept.IID_IITERABLE_CONCEPT),
|
||||||
.build();
|
WrapIIterableConcept.class));
|
||||||
|
|
||||||
static IterableConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static IterableConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(IterableConceptInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(IterableConceptInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.concept;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface PreferredRuntimeTypeConceptInternal extends PreferredRuntimeTyp
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, PreferredRuntimeTypeConceptImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, PreferredRuntimeTypeConceptImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIPreferredRuntimeTypeConcept>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIPreferredRuntimeTypeConcept>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIPreferredRuntimeTypeConcept>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IPreferredRuntimeTypeConcept.IID_IPREFERRED_RUNTIME_TYPE_CONCEPT),
|
Map.entry(new REFIID(IPreferredRuntimeTypeConcept.IID_IPREFERRED_RUNTIME_TYPE_CONCEPT),
|
||||||
WrapIPreferredRuntimeTypeConcept.class) //
|
WrapIPreferredRuntimeTypeConcept.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static PreferredRuntimeTypeConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static PreferredRuntimeTypeConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(PreferredRuntimeTypeConceptInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(PreferredRuntimeTypeConceptInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.concept;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface StringDisplayableConceptInternal extends StringDisplayableConce
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, StringDisplayableConceptImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, StringDisplayableConceptImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIStringDisplayableConcept>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIStringDisplayableConcept>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIStringDisplayableConcept>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IStringDisplayableConcept.IID_ISTRING_DISPLAYABLE_CONCEPT),
|
Map.entry(new REFIID(IStringDisplayableConcept.IID_ISTRING_DISPLAYABLE_CONCEPT),
|
||||||
WrapIStringDisplayableConcept.class) //
|
WrapIStringDisplayableConcept.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static StringDisplayableConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static StringDisplayableConceptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(StringDisplayableConceptInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(StringDisplayableConceptInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -38,15 +37,12 @@ public interface DataModelManagerInternal extends DataModelManager1 {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelManagerImpl2::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelManagerImpl2::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelManager1>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelManager1>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelManager1>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDataModelManager2.IID_IDATA_MODEL_MANAGER2),
|
Map.entry(new REFIID(IDataModelManager2.IID_IDATA_MODEL_MANAGER2),
|
||||||
WrapIDataModelManager2.class) //
|
WrapIDataModelManager2.class),
|
||||||
.put(new REFIID(IDataModelManager1.IID_IDATA_MODEL_MANAGER),
|
Map.entry(new REFIID(IDataModelManager1.IID_IDATA_MODEL_MANAGER),
|
||||||
WrapIDataModelManager1.class) //
|
WrapIDataModelManager1.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelManagerInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DataModelManagerInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DataModelManagerInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DataModelManagerInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DataModelNameBinderInternal extends DataModelNameBinder {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelNameBinderImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelNameBinderImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelNameBinder>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelNameBinder>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelNameBinder>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDataModelNameBinder.IID_IDATA_MODEL_NAME_BINDER),
|
Map.entry(new REFIID(IDataModelNameBinder.IID_IDATA_MODEL_NAME_BINDER),
|
||||||
WrapIDataModelNameBinder.class) //
|
WrapIDataModelNameBinder.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelNameBinderInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DataModelNameBinderInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DataModelNameBinderInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DataModelNameBinderInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DataModelScriptClientInternal extends DataModelScriptClient {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptClientImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptClientImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelScriptClient>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelScriptClient>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelScriptClient>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDataModelScriptClient.IID_IDATA_MODEL_SCRIPT_CLIENT),
|
Map.entry(new REFIID(IDataModelScriptClient.IID_IDATA_MODEL_SCRIPT_CLIENT),
|
||||||
WrapIDataModelScriptClient.class) //
|
WrapIDataModelScriptClient.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelScriptClientInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DataModelScriptClientInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptClientInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptClientInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DataModelScriptHostContextInternal extends DataModelScriptHostC
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptHostContextImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptHostContextImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelScriptHostContext>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelScriptHostContext>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelScriptHostContext>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDataModelScriptHostContext.IID_IDATA_MODEL_SCRIPT_HOST_CONTEXT),
|
Map.entry(new REFIID(IDataModelScriptHostContext.IID_IDATA_MODEL_SCRIPT_HOST_CONTEXT),
|
||||||
WrapIDataModelScriptHostContext.class) //
|
WrapIDataModelScriptHostContext.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelScriptHostContextInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DataModelScriptHostContextInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptHostContextInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptHostContextInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DataModelScriptInternal extends DataModelScript {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelScript>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelScript>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelScript>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDataModelScript.IID_IDATA_MODEL_SCRIPT),
|
Map.entry(new REFIID(IDataModelScript.IID_IDATA_MODEL_SCRIPT),
|
||||||
WrapIDataModelScript.class) //
|
WrapIDataModelScript.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelScriptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DataModelScriptInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DataModelScriptManagerInternal extends DataModelScriptManager {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptManagerImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptManagerImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelScriptManager>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelScriptManager>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelScriptManager>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDataModelScriptManager.IID_IDATA_MODEL_SCRIPT_MANAGER),
|
Map.entry(new REFIID(IDataModelScriptManager.IID_IDATA_MODEL_SCRIPT_MANAGER),
|
||||||
WrapIDataModelScriptManager.class) //
|
WrapIDataModelScriptManager.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelScriptManagerInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DataModelScriptManagerInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptManagerInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptManagerInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -37,15 +36,12 @@ public interface DataModelScriptProviderEnumeratorInternal
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptProviderEnumeratorImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptProviderEnumeratorImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelScriptProviderEnumerator>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelScriptProviderEnumerator>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelScriptProviderEnumerator>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(
|
Map.entry(
|
||||||
new REFIID(
|
new REFIID(
|
||||||
IDataModelScriptProviderEnumerator.IID_IDATA_MODEL_SCRIPT_PROVIDER_ENUMERATOR),
|
IDataModelScriptProviderEnumerator.IID_IDATA_MODEL_SCRIPT_PROVIDER_ENUMERATOR),
|
||||||
WrapIDataModelScriptProviderEnumerator.class) //
|
WrapIDataModelScriptProviderEnumerator.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelScriptProviderEnumeratorInternal tryPreferredInterfaces(
|
static DataModelScriptProviderEnumeratorInternal tryPreferredInterfaces(
|
||||||
InterfaceSupplier supplier) {
|
InterfaceSupplier supplier) {
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DataModelScriptProviderInternal extends DataModelScriptProvider
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptProviderImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptProviderImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelScriptProvider>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelScriptProvider>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelScriptProvider>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDataModelScriptProvider.IID_IDATA_MODEL_SCRIPT_PROVIDER),
|
Map.entry(new REFIID(IDataModelScriptProvider.IID_IDATA_MODEL_SCRIPT_PROVIDER),
|
||||||
WrapIDataModelScriptProvider.class) //
|
WrapIDataModelScriptProvider.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelScriptProviderInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DataModelScriptProviderInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptProviderInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptProviderInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -37,15 +36,11 @@ public interface DataModelScriptTemplateEnumeratorInternal
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptTemplateEnumeratorImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptTemplateEnumeratorImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelScriptTemplateEnumerator>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelScriptTemplateEnumerator>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelScriptTemplateEnumerator>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(
|
Map.entry(new REFIID(
|
||||||
new REFIID(
|
IDataModelScriptTemplateEnumerator.IID_IDATA_MODEL_SCRIPT_TEMPLATE_ENUMERATOR),
|
||||||
IDataModelScriptTemplateEnumerator.IID_IDATA_MODEL_SCRIPT_TEMPLATE_ENUMERATOR),
|
WrapIDataModelScriptTemplateEnumerator.class));
|
||||||
WrapIDataModelScriptTemplateEnumerator.class) //
|
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelScriptTemplateEnumeratorInternal tryPreferredInterfaces(
|
static DataModelScriptTemplateEnumeratorInternal tryPreferredInterfaces(
|
||||||
InterfaceSupplier supplier) {
|
InterfaceSupplier supplier) {
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DataModelScriptTemplateInternal extends DataModelScriptTemplate
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptTemplateImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptTemplateImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelScriptTemplate>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelScriptTemplate>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelScriptTemplate>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDataModelScriptTemplate.IID_IDATA_MODEL_SCRIPT_TEMPLATE),
|
Map.entry(new REFIID(IDataModelScriptTemplate.IID_IDATA_MODEL_SCRIPT_TEMPLATE),
|
||||||
WrapIDataModelScriptTemplate.class) //
|
WrapIDataModelScriptTemplate.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelScriptTemplateInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DataModelScriptTemplateInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptTemplateInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptTemplateInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script.debug;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -38,15 +37,12 @@ public interface DataModelScriptDebugBreakpointEnumeratorInternal
|
||||||
DataModelScriptDebugBreakpointEnumeratorImpl::new);
|
DataModelScriptDebugBreakpointEnumeratorImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelScriptDebugBreakpointEnumerator>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelScriptDebugBreakpointEnumerator>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelScriptDebugBreakpointEnumerator>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(
|
Map.entry(
|
||||||
new REFIID(
|
new REFIID(
|
||||||
IDataModelScriptDebugBreakpointEnumerator.IID_IDATA_MODEL_SCRIPT_DEBUG_BREAKPOINT_ENUMERATOR),
|
IDataModelScriptDebugBreakpointEnumerator.IID_IDATA_MODEL_SCRIPT_DEBUG_BREAKPOINT_ENUMERATOR),
|
||||||
WrapIDataModelScriptDebugBreakpointEnumerator.class) //
|
WrapIDataModelScriptDebugBreakpointEnumerator.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelScriptDebugBreakpointEnumeratorInternal tryPreferredInterfaces(
|
static DataModelScriptDebugBreakpointEnumeratorInternal tryPreferredInterfaces(
|
||||||
InterfaceSupplier supplier) {
|
InterfaceSupplier supplier) {
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script.debug;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -36,15 +35,12 @@ public interface DataModelScriptDebugBreakpointInternal extends DataModelScriptD
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptDebugBreakpointImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptDebugBreakpointImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelScriptDebugBreakpoint>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelScriptDebugBreakpoint>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelScriptDebugBreakpoint>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(
|
Map.entry(
|
||||||
new REFIID(
|
new REFIID(
|
||||||
IDataModelScriptDebugBreakpoint.IID_IDATA_MODEL_SCRIPT_DEBUG_BREAKPOINT),
|
IDataModelScriptDebugBreakpoint.IID_IDATA_MODEL_SCRIPT_DEBUG_BREAKPOINT),
|
||||||
WrapIDataModelScriptDebugBreakpoint.class) //
|
WrapIDataModelScriptDebugBreakpoint.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelScriptDebugBreakpointInternal tryPreferredInterfaces(
|
static DataModelScriptDebugBreakpointInternal tryPreferredInterfaces(
|
||||||
InterfaceSupplier supplier) {
|
InterfaceSupplier supplier) {
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script.debug;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -36,14 +35,11 @@ public interface DataModelScriptDebugClientInternal extends DataModelScriptDebug
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptDebugClientImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptDebugClientImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelScriptDebugClient>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelScriptDebugClient>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelScriptDebugClient>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(
|
Map.entry(
|
||||||
new REFIID(IDataModelScriptDebugClient.IID_IDATA_MODEL_SCRIPT_DEBUG_CLIENT),
|
new REFIID(IDataModelScriptDebugClient.IID_IDATA_MODEL_SCRIPT_DEBUG_CLIENT),
|
||||||
WrapIDataModelScriptDebugClient.class) //
|
WrapIDataModelScriptDebugClient.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelScriptDebugClientInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DataModelScriptDebugClientInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptDebugClientInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptDebugClientInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script.debug;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -34,15 +33,12 @@ public interface DataModelScriptDebugInternal extends DataModelScriptDebug1 {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptDebugImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptDebugImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelScriptDebug>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelScriptDebug>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelScriptDebug>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDataModelScriptDebug2.IID_IDATA_MODEL_SCRIPT_DEBUG2),
|
Map.entry(new REFIID(IDataModelScriptDebug2.IID_IDATA_MODEL_SCRIPT_DEBUG2),
|
||||||
WrapIDataModelScriptDebug.class) //
|
WrapIDataModelScriptDebug.class),
|
||||||
.put(new REFIID(IDataModelScriptDebug.IID_IDATA_MODEL_SCRIPT_DEBUG),
|
Map.entry(new REFIID(IDataModelScriptDebug.IID_IDATA_MODEL_SCRIPT_DEBUG),
|
||||||
WrapIDataModelScriptDebug.class) //
|
WrapIDataModelScriptDebug.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelScriptDebugInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DataModelScriptDebugInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptDebugInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptDebugInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script.debug;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -36,15 +35,12 @@ public interface DataModelScriptDebugStackFrameInternal extends DataModelScriptD
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptDebugStackFrameImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptDebugStackFrameImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelScriptDebugStackFrame>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelScriptDebugStackFrame>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelScriptDebugStackFrame>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(
|
Map.entry(
|
||||||
new REFIID(
|
new REFIID(
|
||||||
IDataModelScriptDebugStackFrame.IID_IDATA_MODEL_SCRIPT_DEBUG_STACK_FRAME),
|
IDataModelScriptDebugStackFrame.IID_IDATA_MODEL_SCRIPT_DEBUG_STACK_FRAME),
|
||||||
WrapIDataModelScriptDebugStackFrame.class) //
|
WrapIDataModelScriptDebugStackFrame.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelScriptDebugStackFrameInternal tryPreferredInterfaces(
|
static DataModelScriptDebugStackFrameInternal tryPreferredInterfaces(
|
||||||
InterfaceSupplier supplier) {
|
InterfaceSupplier supplier) {
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script.debug;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -36,14 +35,11 @@ public interface DataModelScriptDebugStackInternal extends DataModelScriptDebugS
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptDebugStackImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DataModelScriptDebugStackImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelScriptDebugStack>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelScriptDebugStack>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelScriptDebugStack>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(
|
Map.entry(
|
||||||
new REFIID(IDataModelScriptDebugStack.IID_IDATA_MODEL_SCRIPT_DEBUG_STACK),
|
new REFIID(IDataModelScriptDebugStack.IID_IDATA_MODEL_SCRIPT_DEBUG_STACK),
|
||||||
WrapIDataModelScriptDebugStack.class) //
|
WrapIDataModelScriptDebugStack.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelScriptDebugStackInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DataModelScriptDebugStackInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptDebugStackInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DataModelScriptDebugStackInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.datamodel.script.debug;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -39,15 +38,12 @@ public interface DataModelScriptDebugVariableSetEnumeratorInternal
|
||||||
DataModelScriptDebugVariableSetEnumeratorImpl::new);
|
DataModelScriptDebugVariableSetEnumeratorImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDataModelScriptDebugVariableSetEnumerator>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDataModelScriptDebugVariableSetEnumerator>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDataModelScriptDebugVariableSetEnumerator>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(
|
Map.entry(
|
||||||
new REFIID(
|
new REFIID(
|
||||||
IDataModelScriptDebugVariableSetEnumerator.IID_IDATA_MODEL_SCRIPT_DEBUG_VARIABLE_SET_ENUMERATOR),
|
IDataModelScriptDebugVariableSetEnumerator.IID_IDATA_MODEL_SCRIPT_DEBUG_VARIABLE_SET_ENUMERATOR),
|
||||||
WrapIDataModelScriptDebugVariableSetEnumerator.class) //
|
WrapIDataModelScriptDebugVariableSetEnumerator.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DataModelScriptDebugVariableSetEnumeratorInternal tryPreferredInterfaces(
|
static DataModelScriptDebugVariableSetEnumeratorInternal tryPreferredInterfaces(
|
||||||
InterfaceSupplier supplier) {
|
InterfaceSupplier supplier) {
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -36,13 +35,10 @@ public interface DebugHostBaseClassInternal extends DebugHostBase {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, X_DebugHostBaseClassImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, X_DebugHostBaseClassImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends X_WrapIDebugHostBaseClass>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends X_WrapIDebugHostBaseClass>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends X_WrapIDebugHostBaseClass>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(X_IDebugHostBaseClass.IID_IDEBUG_HOST_BASE_CLASS),
|
Map.entry(new REFIID(X_IDebugHostBaseClass.IID_IDEBUG_HOST_BASE_CLASS),
|
||||||
X_WrapIDebugHostBaseClass.class) //
|
X_WrapIDebugHostBaseClass.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static X_DebugHostBaseClassInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static X_DebugHostBaseClassInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(X_DebugHostBaseClassInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(X_DebugHostBaseClassInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DebugHostConstantInternal extends DebugHostConstant {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostConstantImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostConstantImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostConstant>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostConstant>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostConstant>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostConstant.IID_IDEBUG_HOST_CONSTANT),
|
Map.entry(new REFIID(IDebugHostConstant.IID_IDEBUG_HOST_CONSTANT),
|
||||||
WrapIDebugHostConstant.class) //
|
WrapIDebugHostConstant.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostConstantInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostConstantInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostConstantInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostConstantInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DebugHostContextInternal extends DebugHostContext {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostContextImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostContextImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostContext>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostContext>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostContext>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostContext.IID_IDEBUG_HOST_CONTEXT),
|
Map.entry(new REFIID(IDebugHostContext.IID_IDEBUG_HOST_CONTEXT),
|
||||||
WrapIDebugHostContext.class) //
|
WrapIDebugHostContext.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostContextInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostContextInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostContextInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostContextInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,12 +34,9 @@ public interface DebugHostDataInternal extends DebugHostData {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostDataImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostDataImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostData>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostData>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostData>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostData.IID_IDEBUG_HOST_DATA), WrapIDebugHostData.class) //
|
Map.entry(new REFIID(IDebugHostData.IID_IDEBUG_HOST_DATA), WrapIDebugHostData.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostDataInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostDataInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostDataInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostDataInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DebugHostErrorSinkInternal extends DebugHostErrorSink {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostErrorSinkImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostErrorSinkImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostErrorSink>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostErrorSink>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostErrorSink>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostErrorSink.IID_IDEBUG_HOST_ERROR_SINK),
|
Map.entry(new REFIID(IDebugHostErrorSink.IID_IDEBUG_HOST_ERROR_SINK),
|
||||||
WrapIDebugHostErrorSink.class) //
|
WrapIDebugHostErrorSink.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostErrorSinkInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostErrorSinkInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostErrorSinkInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostErrorSinkInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -38,15 +37,12 @@ public interface DebugHostEvaluatorInternal extends DebugHostEvaluator1 {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostEvaluatorImpl2::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostEvaluatorImpl2::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostEvaluator1>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostEvaluator1>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostEvaluator1>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostEvaluator2.IID_IDEBUG_HOST_EVALUATOR2),
|
Map.entry(new REFIID(IDebugHostEvaluator2.IID_IDEBUG_HOST_EVALUATOR2),
|
||||||
WrapIDebugHostEvaluator2.class) //
|
WrapIDebugHostEvaluator2.class),
|
||||||
.put(new REFIID(IDebugHostEvaluator1.IID_IDEBUG_HOST_EVALUATOR),
|
Map.entry(new REFIID(IDebugHostEvaluator1.IID_IDEBUG_HOST_EVALUATOR),
|
||||||
WrapIDebugHostEvaluator1.class) //
|
WrapIDebugHostEvaluator1.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostEvaluatorInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostEvaluatorInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostEvaluatorInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostEvaluatorInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DebugHostExtensabilityInternal extends DebugHostExtensability {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostExtensabilityImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostExtensabilityImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostExtensability>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostExtensability>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostExtensability>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostExtensability.IID_IDEBUG_HOST_EXTENSABILITY),
|
Map.entry(new REFIID(IDebugHostExtensability.IID_IDEBUG_HOST_EXTENSABILITY),
|
||||||
WrapIDebugHostExtensability.class) //
|
WrapIDebugHostExtensability.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostExtensabilityInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostExtensabilityInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostExtensabilityInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostExtensabilityInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,12 +34,10 @@ public interface DebugHostFieldInternal extends DebugHostField {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostFieldImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostFieldImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostField>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostField>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostField>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostField.IID_IDEBUG_HOST_FIELD), WrapIDebugHostField.class) //
|
Map.entry(new REFIID(IDebugHostField.IID_IDEBUG_HOST_FIELD),
|
||||||
.build();
|
WrapIDebugHostField.class));
|
||||||
|
|
||||||
static DebugHostFieldInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostFieldInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostFieldInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostFieldInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,12 +34,9 @@ public interface DebugHostInternal extends DebugHost {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHost>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHost>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHost>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHost.IID_IDEBUG_HOST), WrapIDebugHost.class) //
|
Map.entry(new REFIID(IDebugHost.IID_IDEBUG_HOST), WrapIDebugHost.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -38,15 +37,12 @@ public interface DebugHostMemoryInternal extends DebugHostMemory1 {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostMemoryImpl2::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostMemoryImpl2::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostMemory1>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostMemory1>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostMemory1>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostMemory2.IID_IDEBUG_HOST_MEMORY2),
|
Map.entry(new REFIID(IDebugHostMemory2.IID_IDEBUG_HOST_MEMORY2),
|
||||||
WrapIDebugHostMemory2.class) //
|
WrapIDebugHostMemory2.class),
|
||||||
.put(new REFIID(IDebugHostMemory1.IID_IDEBUG_HOST_MEMORY),
|
Map.entry(new REFIID(IDebugHostMemory1.IID_IDEBUG_HOST_MEMORY),
|
||||||
WrapIDebugHostMemory1.class) //
|
WrapIDebugHostMemory1.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostMemoryInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostMemoryInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostMemoryInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostMemoryInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -38,15 +37,12 @@ public interface DebugHostModuleInternal extends DebugHostModule1 {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostModuleImpl2::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostModuleImpl2::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostModule1>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostModule1>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostModule1>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostModule2.IID_IDEBUG_HOST_MODULE2),
|
Map.entry(new REFIID(IDebugHostModule2.IID_IDEBUG_HOST_MODULE2),
|
||||||
WrapIDebugHostModule2.class) //
|
WrapIDebugHostModule2.class),
|
||||||
.put(new REFIID(IDebugHostModule1.IID_IDEBUG_HOST_MODULE),
|
Map.entry(new REFIID(IDebugHostModule1.IID_IDEBUG_HOST_MODULE),
|
||||||
WrapIDebugHostModule1.class) //
|
WrapIDebugHostModule1.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostModuleInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostModuleInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostModuleInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostModuleInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DebugHostModuleSignatureInternal extends DebugHostModuleSignatu
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostModuleSignatureImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostModuleSignatureImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostModuleSignature>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostModuleSignature>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostModuleSignature>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostModuleSignature.IID_IDEBUG_HOST_MODULE_SIGNATURE),
|
Map.entry(new REFIID(IDebugHostModuleSignature.IID_IDEBUG_HOST_MODULE_SIGNATURE),
|
||||||
WrapIDebugHostModuleSignature.class) //
|
WrapIDebugHostModuleSignature.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostModuleSignatureInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostModuleSignatureInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostModuleSignatureInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostModuleSignatureInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DebugHostPublicInternal extends DebugHostPublic {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostPublicImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostPublicImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostPublic>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostPublic>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostPublic>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostPublic.IID_IDEBUG_HOST_PUBLIC),
|
Map.entry(new REFIID(IDebugHostPublic.IID_IDEBUG_HOST_PUBLIC),
|
||||||
WrapIDebugHostPublic.class) //
|
WrapIDebugHostPublic.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostPublicInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostPublicInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostPublicInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostPublicInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DebugHostScriptHostInternal extends DebugHostScriptHost {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostScriptHostImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostScriptHostImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostScriptHost>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostScriptHost>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostScriptHost>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostScriptHost.IID_IDEBUG_HOST_SCRIPT_HOST),
|
Map.entry(new REFIID(IDebugHostScriptHost.IID_IDEBUG_HOST_SCRIPT_HOST),
|
||||||
WrapIDebugHostScriptHost.class) //
|
WrapIDebugHostScriptHost.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostScriptHostInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostScriptHostInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostScriptHostInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostScriptHostInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DebugHostStatusInternal extends DebugHostStatus {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostStatusImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostStatusImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostStatus>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostStatus>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostStatus>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostStatus.IID_IDEBUG_HOST_STATUS),
|
Map.entry(new REFIID(IDebugHostStatus.IID_IDEBUG_HOST_STATUS),
|
||||||
WrapIDebugHostStatus.class) //
|
WrapIDebugHostStatus.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostStatusInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostStatusInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostStatusInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostStatusInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DebugHostSymbolEnumeratorInternal extends DebugHostSymbolEnumer
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostSymbolEnumeratorImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostSymbolEnumeratorImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostSymbolEnumerator>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostSymbolEnumerator>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostSymbolEnumerator>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostSymbolEnumerator.IID_IDEBUG_HOST_SYMBOL_ENUMERATOR),
|
Map.entry(new REFIID(IDebugHostSymbolEnumerator.IID_IDEBUG_HOST_SYMBOL_ENUMERATOR),
|
||||||
WrapIDebugHostSymbolEnumerator.class) //
|
WrapIDebugHostSymbolEnumerator.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostSymbolEnumeratorInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostSymbolEnumeratorInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostSymbolEnumeratorInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostSymbolEnumeratorInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -38,15 +37,12 @@ public interface DebugHostSymbolInternal extends DebugHostSymbol1 {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostSymbolImpl2::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostSymbolImpl2::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostSymbol1>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostSymbol1>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostSymbol1>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostSymbol2.IID_IDEBUG_HOST_SYMBOL2),
|
Map.entry(new REFIID(IDebugHostSymbol2.IID_IDEBUG_HOST_SYMBOL2),
|
||||||
WrapIDebugHostSymbol2.class) //
|
WrapIDebugHostSymbol2.class),
|
||||||
.put(new REFIID(IDebugHostSymbol1.IID_IDEBUG_HOST_SYMBOL),
|
Map.entry(new REFIID(IDebugHostSymbol1.IID_IDEBUG_HOST_SYMBOL),
|
||||||
WrapIDebugHostSymbol1.class) //
|
WrapIDebugHostSymbol1.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostSymbolInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostSymbolInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostSymbolInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostSymbolInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DebugHostSymbolsInternal extends DebugHostSymbols {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostSymbolsImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostSymbolsImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostSymbols>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostSymbols>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostSymbols>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostSymbols.IID_IDEBUG_HOST_SYMBOLS),
|
Map.entry(new REFIID(IDebugHostSymbols.IID_IDEBUG_HOST_SYMBOLS),
|
||||||
WrapIDebugHostSymbols.class) //
|
WrapIDebugHostSymbols.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostSymbolsInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostSymbolsInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostSymbolsInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostSymbolsInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -38,13 +37,10 @@ public interface DebugHostTypeInternal extends DebugHostType1 {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostTypeImpl2::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostTypeImpl2::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostType1>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostType1>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostType1>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostType2.IID_IDEBUG_HOST_TYPE2), WrapIDebugHostType2.class) //
|
Map.entry(new REFIID(IDebugHostType2.IID_IDEBUG_HOST_TYPE2), WrapIDebugHostType2.class),
|
||||||
.put(new REFIID(IDebugHostType1.IID_IDEBUG_HOST_TYPE), WrapIDebugHostType1.class) //
|
Map.entry(new REFIID(IDebugHostType1.IID_IDEBUG_HOST_TYPE), WrapIDebugHostType1.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostTypeInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostTypeInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostTypeInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostTypeInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface DebugHostTypeSignatureInternal extends DebugHostTypeSignature {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostTypeSignatureImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, DebugHostTypeSignatureImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIDebugHostTypeSignature>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIDebugHostTypeSignature>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIDebugHostTypeSignature>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IDebugHostTypeSignature.IID_IDEBUG_HOST_TYPE_SIGNATURE),
|
Map.entry(new REFIID(IDebugHostTypeSignature.IID_IDEBUG_HOST_TYPE_SIGNATURE),
|
||||||
WrapIDebugHostTypeSignature.class) //
|
WrapIDebugHostTypeSignature.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static DebugHostTypeSignatureInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static DebugHostTypeSignatureInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(DebugHostTypeSignatureInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(DebugHostTypeSignatureInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.debughost;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface X_DebugHostBaseClassInternal extends DebugHostBaseClass {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, X_DebugHostBaseClassImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, X_DebugHostBaseClassImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends X_WrapIDebugHostBaseClass>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends X_WrapIDebugHostBaseClass>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends X_WrapIDebugHostBaseClass>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(X_IDebugHostBaseClass.IID_IDEBUG_HOST_BASE_CLASS),
|
Map.entry(new REFIID(X_IDebugHostBaseClass.IID_IDEBUG_HOST_BASE_CLASS),
|
||||||
X_WrapIDebugHostBaseClass.class) //
|
X_WrapIDebugHostBaseClass.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static X_DebugHostBaseClassInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static X_DebugHostBaseClassInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(X_DebugHostBaseClassInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(X_DebugHostBaseClassInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.main;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,12 +34,9 @@ public interface KeyEnumeratorInternal extends KeyEnumerator {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, KeyEnumeratorImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, KeyEnumeratorImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIKeyEnumerator>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIKeyEnumerator>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIKeyEnumerator>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IKeyEnumerator.IID_IKEY_ENUMERATOR), WrapIKeyEnumerator.class) //
|
Map.entry(new REFIID(IKeyEnumerator.IID_IKEY_ENUMERATOR), WrapIKeyEnumerator.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static KeyEnumeratorInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static KeyEnumeratorInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(KeyEnumeratorInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(KeyEnumeratorInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.main;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,12 +34,9 @@ public interface KeyStoreInternal extends KeyStore {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, KeyStoreImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, KeyStoreImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIKeyStore>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIKeyStore>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIKeyStore>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IKeyStore.IID_IKEY_STORE), WrapIKeyStore.class) //
|
Map.entry(new REFIID(IKeyStore.IID_IKEY_STORE), WrapIKeyStore.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static KeyStoreInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static KeyStoreInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(KeyStoreInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(KeyStoreInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.main;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,12 +34,9 @@ public interface ModelIteratorInternal extends ModelIterator {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, ModelIteratorImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, ModelIteratorImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIModelIterator>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIModelIterator>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIModelIterator>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IModelIterator.IID_IMODEL_ITERATOR), WrapIModelIterator.class) //
|
Map.entry(new REFIID(IModelIterator.IID_IMODEL_ITERATOR), WrapIModelIterator.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static ModelIteratorInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static ModelIteratorInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(ModelIteratorInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(ModelIteratorInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.main;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -38,15 +37,12 @@ public interface ModelKeyReferenceInternal extends ModelKeyReference1 {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, ModelKeyReferenceImpl2::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, ModelKeyReferenceImpl2::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIModelKeyReference1>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIModelKeyReference1>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIModelKeyReference1>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IModelKeyReference2.IID_IMODEL_REFERENCE2),
|
Map.entry(new REFIID(IModelKeyReference2.IID_IMODEL_REFERENCE2),
|
||||||
WrapIModelKeyReference2.class) //
|
WrapIModelKeyReference2.class),
|
||||||
.put(new REFIID(IModelKeyReference.IID_IMODEL_REFERENCE),
|
Map.entry(new REFIID(IModelKeyReference.IID_IMODEL_REFERENCE),
|
||||||
WrapIModelKeyReference1.class) //
|
WrapIModelKeyReference1.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static ModelKeyReferenceInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static ModelKeyReferenceInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(ModelKeyReferenceInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(ModelKeyReferenceInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.main;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,12 +34,9 @@ public interface ModelMethodInternal extends ModelMethod {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, ModelMethodImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, ModelMethodImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIModelMethod>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIModelMethod>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIModelMethod>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IModelMethod.IID_IMODEL_METHOD), WrapIModelMethod.class) //
|
Map.entry(new REFIID(IModelMethod.IID_IMODEL_METHOD), WrapIModelMethod.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static ModelMethodInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static ModelMethodInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(ModelMethodInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(ModelMethodInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.main;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,12 +34,9 @@ public interface ModelObjectInternal extends ModelObject {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, ModelObjectImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, ModelObjectImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIModelObject>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIModelObject>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIModelObject>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IModelObject.IID_IMODEL_OBJECT), WrapIModelObject.class) //
|
Map.entry(new REFIID(IModelObject.IID_IMODEL_OBJECT), WrapIModelObject.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static ModelObjectInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static ModelObjectInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(ModelObjectInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(ModelObjectInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.main;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,13 +34,10 @@ public interface ModelPropertyAccessorInternal extends ModelPropertyAccessor {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, ModelPropertyAccessorImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, ModelPropertyAccessorImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIModelPropertyAccessor>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIModelPropertyAccessor>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIModelPropertyAccessor>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IModelPropertyAccessor.IID_IMODEL_PROPERTY_ACCESSOR),
|
Map.entry(new REFIID(IModelPropertyAccessor.IID_IMODEL_PROPERTY_ACCESSOR),
|
||||||
WrapIModelPropertyAccessor.class) //
|
WrapIModelPropertyAccessor.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static ModelPropertyAccessorInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static ModelPropertyAccessorInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(ModelPropertyAccessorInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(ModelPropertyAccessorInternal.class,
|
||||||
|
|
|
@ -17,7 +17,6 @@ package agent.dbgmodel.impl.dbgmodel.main;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
import com.sun.jna.Pointer;
|
import com.sun.jna.Pointer;
|
||||||
import com.sun.jna.platform.win32.Guid.REFIID;
|
import com.sun.jna.platform.win32.Guid.REFIID;
|
||||||
|
|
||||||
|
@ -35,12 +34,9 @@ public interface RawEnumeratorInternal extends RawEnumerator {
|
||||||
return DbgModelUtil.lazyWeakCache(CACHE, data, RawEnumeratorImpl::new);
|
return DbgModelUtil.lazyWeakCache(CACHE, data, RawEnumeratorImpl::new);
|
||||||
}
|
}
|
||||||
|
|
||||||
ImmutableMap.Builder<REFIID, Class<? extends WrapIRawEnumerator>> PREFERRED_DATA_SPACES_IIDS_BUILDER =
|
|
||||||
ImmutableMap.builder();
|
|
||||||
Map<REFIID, Class<? extends WrapIRawEnumerator>> PREFERRED_DATA_SPACES_IIDS =
|
Map<REFIID, Class<? extends WrapIRawEnumerator>> PREFERRED_DATA_SPACES_IIDS =
|
||||||
PREFERRED_DATA_SPACES_IIDS_BUILDER //
|
Map.ofEntries(
|
||||||
.put(new REFIID(IRawEnumerator.IID_IRAW_ENUMERATOR), WrapIRawEnumerator.class) //
|
Map.entry(new REFIID(IRawEnumerator.IID_IRAW_ENUMERATOR), WrapIRawEnumerator.class));
|
||||||
.build();
|
|
||||||
|
|
||||||
static RawEnumeratorInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
static RawEnumeratorInternal tryPreferredInterfaces(InterfaceSupplier supplier) {
|
||||||
return DbgModelUtil.tryPreferredInterfaces(RawEnumeratorInternal.class,
|
return DbgModelUtil.tryPreferredInterfaces(RawEnumeratorInternal.class,
|
||||||
|
|
|
@ -68,6 +68,7 @@ import ghidra.dbg.target.TargetStack;
|
||||||
import ghidra.dbg.target.TargetStackFrame;
|
import ghidra.dbg.target.TargetStackFrame;
|
||||||
import ghidra.dbg.target.TargetThread;
|
import ghidra.dbg.target.TargetThread;
|
||||||
import ghidra.dbg.util.PathUtils;
|
import ghidra.dbg.util.PathUtils;
|
||||||
|
import ghidra.util.datastruct.ListenerMap.ListenerEntry;
|
||||||
import ghidra.util.datastruct.ListenerSet;
|
import ghidra.util.datastruct.ListenerSet;
|
||||||
|
|
||||||
public class DelegateDbgModel2TargetObject extends DbgModel2TargetObjectImpl implements //
|
public class DelegateDbgModel2TargetObject extends DbgModel2TargetObjectImpl implements //
|
||||||
|
@ -210,8 +211,8 @@ public class DelegateDbgModel2TargetObject extends DbgModel2TargetObjectImpl imp
|
||||||
private final ListenerSet<TargetBreakpointAction> breakpointActions =
|
private final ListenerSet<TargetBreakpointAction> breakpointActions =
|
||||||
new ListenerSet<>(TargetBreakpointAction.class) {
|
new ListenerSet<>(TargetBreakpointAction.class) {
|
||||||
// Use strong references on actions
|
// Use strong references on actions
|
||||||
protected Map<TargetBreakpointAction, TargetBreakpointAction> createMap() {
|
protected Map<TargetBreakpointAction, ListenerEntry<? extends TargetBreakpointAction>> createMap() {
|
||||||
return Collections.synchronizedMap(new LinkedHashMap<>());
|
return new LinkedHashMap<>();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -18,8 +18,6 @@ package agent.gdb.manager.reason;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
|
|
||||||
import agent.gdb.manager.GdbState;
|
import agent.gdb.manager.GdbState;
|
||||||
import agent.gdb.manager.parsing.GdbMiParser.GdbMiFieldList;
|
import agent.gdb.manager.parsing.GdbMiParser.GdbMiFieldList;
|
||||||
import ghidra.util.Msg;
|
import ghidra.util.Msg;
|
||||||
|
@ -38,13 +36,12 @@ public interface GdbReason {
|
||||||
* A map of reason strings to reason classes
|
* A map of reason strings to reason classes
|
||||||
*/
|
*/
|
||||||
static final Map<String, Function<GdbMiFieldList, ? extends GdbReason>> TYPES =
|
static final Map<String, Function<GdbMiFieldList, ? extends GdbReason>> TYPES =
|
||||||
new ImmutableMap.Builder<String, Function<GdbMiFieldList, ? extends GdbReason>>()
|
Map.ofEntries(
|
||||||
.put("signal-received", GdbSignalReceivedReason::new)
|
Map.entry("signal-received", GdbSignalReceivedReason::new),
|
||||||
.put("breakpoint-hit", GdbBreakpointHitReason::new)
|
Map.entry("breakpoint-hit", GdbBreakpointHitReason::new),
|
||||||
.put("end-stepping-range", GdbEndSteppingRangeReason::new)
|
Map.entry("end-stepping-range", GdbEndSteppingRangeReason::new),
|
||||||
.put("exited", GdbExitedReason::new)
|
Map.entry("exited", GdbExitedReason::new),
|
||||||
.put("exited-normally", GdbExitNormallyReason::new)
|
Map.entry("exited-normally", GdbExitNormallyReason::new));
|
||||||
.build();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Reasons other than those given by GDB
|
* Reasons other than those given by GDB
|
||||||
|
|
|
@ -29,6 +29,7 @@ import ghidra.dbg.target.schema.TargetAttributeType;
|
||||||
import ghidra.dbg.target.schema.TargetObjectSchemaInfo;
|
import ghidra.dbg.target.schema.TargetObjectSchemaInfo;
|
||||||
import ghidra.dbg.util.PathUtils;
|
import ghidra.dbg.util.PathUtils;
|
||||||
import ghidra.util.Msg;
|
import ghidra.util.Msg;
|
||||||
|
import ghidra.util.datastruct.ListenerMap.ListenerEntry;
|
||||||
import ghidra.util.datastruct.ListenerSet;
|
import ghidra.util.datastruct.ListenerSet;
|
||||||
import ghidra.util.datastruct.WeakValueHashMap;
|
import ghidra.util.datastruct.WeakValueHashMap;
|
||||||
|
|
||||||
|
@ -62,8 +63,8 @@ public class GdbModelTargetBreakpointSpec extends
|
||||||
protected final ListenerSet<TargetBreakpointAction> actions =
|
protected final ListenerSet<TargetBreakpointAction> actions =
|
||||||
new ListenerSet<>(TargetBreakpointAction.class) {
|
new ListenerSet<>(TargetBreakpointAction.class) {
|
||||||
// Use strong references on actions
|
// Use strong references on actions
|
||||||
protected Map<TargetBreakpointAction, TargetBreakpointAction> createMap() {
|
protected Map<TargetBreakpointAction, ListenerEntry<? extends TargetBreakpointAction>> createMap() {
|
||||||
return Collections.synchronizedMap(new LinkedHashMap<>());
|
return new LinkedHashMap<>();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -22,10 +22,6 @@ import java.util.function.Consumer;
|
||||||
|
|
||||||
import org.junit.Test;
|
import org.junit.Test;
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
|
||||||
import com.google.common.collect.ImmutableMap;
|
|
||||||
|
|
||||||
import agent.gdb.manager.GdbTable;
|
|
||||||
import agent.gdb.manager.parsing.GdbMiParser.GdbMiFieldList;
|
import agent.gdb.manager.parsing.GdbMiParser.GdbMiFieldList;
|
||||||
|
|
||||||
public class GdbTableTest {
|
public class GdbTableTest {
|
||||||
|
@ -35,16 +31,16 @@ public class GdbTableTest {
|
||||||
return builder.build();
|
return builder.build();
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <K, V> Map<K, V> buildMap(Consumer<ImmutableMap.Builder<K, V>> conf) {
|
protected <K, V> Map<K, V> buildMap(Consumer<Map<K, V>> conf) {
|
||||||
ImmutableMap.Builder<K, V> builder = ImmutableMap.builder();
|
Map<K, V> builder = new HashMap<>();
|
||||||
conf.accept(builder);
|
conf.accept(builder);
|
||||||
return builder.build();
|
return Map.copyOf(builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected <E> List<E> buildList(Consumer<ImmutableList.Builder<E>> conf) {
|
protected <E> List<E> buildList(Consumer<List<E>> conf) {
|
||||||
ImmutableList.Builder<E> builder = ImmutableList.builder();
|
List<E> builder = new ArrayList<>();
|
||||||
conf.accept(builder);
|
conf.accept(builder);
|
||||||
return builder.build();
|
return List.copyOf(builder);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected GdbTable buildTestTable() {
|
protected GdbTable buildTestTable() {
|
||||||
|
|
|
@ -18,8 +18,6 @@ package agent.lldb.manager.cmd;
|
||||||
import java.math.BigInteger;
|
import java.math.BigInteger;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
|
|
||||||
import com.google.common.collect.*;
|
|
||||||
|
|
||||||
import SWIG.*;
|
import SWIG.*;
|
||||||
import agent.lldb.manager.impl.LldbManagerImpl;
|
import agent.lldb.manager.impl.LldbManagerImpl;
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
|
|
|
@ -26,13 +26,14 @@ import ghidra.async.AsyncUtils;
|
||||||
import ghidra.dbg.target.TargetBreakpointSpecContainer.TargetBreakpointKindSet;
|
import ghidra.dbg.target.TargetBreakpointSpecContainer.TargetBreakpointKindSet;
|
||||||
import ghidra.dbg.target.schema.*;
|
import ghidra.dbg.target.schema.*;
|
||||||
import ghidra.dbg.util.PathUtils;
|
import ghidra.dbg.util.PathUtils;
|
||||||
|
import ghidra.util.datastruct.ListenerMap.ListenerEntry;
|
||||||
import ghidra.util.datastruct.ListenerSet;
|
import ghidra.util.datastruct.ListenerSet;
|
||||||
import ghidra.util.datastruct.WeakValueHashMap;
|
import ghidra.util.datastruct.WeakValueHashMap;
|
||||||
|
|
||||||
@TargetObjectSchemaInfo(
|
@TargetObjectSchemaInfo(
|
||||||
name = "BreakpointSpec",
|
name = "BreakpointSpec",
|
||||||
elements = { //
|
elements = { //
|
||||||
@TargetElementType(type = LldbModelTargetBreakpointLocationImpl.class) //
|
@TargetElementType(type = LldbModelTargetBreakpointLocationImpl.class)
|
||||||
},
|
},
|
||||||
attributes = {
|
attributes = {
|
||||||
@TargetAttributeType(name = "Type", type = String.class),
|
@TargetAttributeType(name = "Type", type = String.class),
|
||||||
|
@ -60,8 +61,8 @@ public abstract class LldbModelTargetAbstractXpointSpec extends LldbModelTargetO
|
||||||
protected final ListenerSet<TargetBreakpointAction> actions =
|
protected final ListenerSet<TargetBreakpointAction> actions =
|
||||||
new ListenerSet<>(TargetBreakpointAction.class) {
|
new ListenerSet<>(TargetBreakpointAction.class) {
|
||||||
// Use strong references on actions
|
// Use strong references on actions
|
||||||
protected Map<TargetBreakpointAction, TargetBreakpointAction> createMap() {
|
protected Map<TargetBreakpointAction, ListenerEntry<? extends TargetBreakpointAction>> createMap() {
|
||||||
return Collections.synchronizedMap(new LinkedHashMap<>());
|
return new LinkedHashMap<>();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -19,19 +19,21 @@ import java.math.BigInteger;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import SWIG.*;
|
import SWIG.SBBreakpoint;
|
||||||
|
import SWIG.SBStream;
|
||||||
import agent.lldb.model.iface2.LldbModelTargetBreakpointContainer;
|
import agent.lldb.model.iface2.LldbModelTargetBreakpointContainer;
|
||||||
import agent.lldb.model.iface2.LldbModelTargetBreakpointLocation;
|
import agent.lldb.model.iface2.LldbModelTargetBreakpointLocation;
|
||||||
import ghidra.dbg.target.TargetBreakpointLocation;
|
import ghidra.dbg.target.TargetBreakpointLocation;
|
||||||
import ghidra.dbg.target.TargetBreakpointSpecContainer.TargetBreakpointKindSet;
|
import ghidra.dbg.target.TargetBreakpointSpecContainer.TargetBreakpointKindSet;
|
||||||
import ghidra.dbg.target.TargetObject;
|
import ghidra.dbg.target.TargetObject;
|
||||||
import ghidra.dbg.target.schema.*;
|
import ghidra.dbg.target.schema.*;
|
||||||
|
import ghidra.util.datastruct.ListenerMap.ListenerEntry;
|
||||||
import ghidra.util.datastruct.ListenerSet;
|
import ghidra.util.datastruct.ListenerSet;
|
||||||
|
|
||||||
@TargetObjectSchemaInfo(
|
@TargetObjectSchemaInfo(
|
||||||
name = "BreakpointSpec",
|
name = "BreakpointSpec",
|
||||||
elements = { //
|
elements = { //
|
||||||
@TargetElementType(type = LldbModelTargetBreakpointLocationImpl.class) //
|
@TargetElementType(type = LldbModelTargetBreakpointLocationImpl.class)
|
||||||
},
|
},
|
||||||
attributes = {
|
attributes = {
|
||||||
@TargetAttributeType(name = "Type", type = String.class),
|
@TargetAttributeType(name = "Type", type = String.class),
|
||||||
|
@ -46,8 +48,8 @@ public class LldbModelTargetBreakpointSpecImpl extends LldbModelTargetAbstractXp
|
||||||
protected final ListenerSet<TargetBreakpointAction> actions =
|
protected final ListenerSet<TargetBreakpointAction> actions =
|
||||||
new ListenerSet<>(TargetBreakpointAction.class) {
|
new ListenerSet<>(TargetBreakpointAction.class) {
|
||||||
// Use strong references on actions
|
// Use strong references on actions
|
||||||
protected Map<TargetBreakpointAction, TargetBreakpointAction> createMap() {
|
protected Map<TargetBreakpointAction, ListenerEntry<? extends TargetBreakpointAction>> createMap() {
|
||||||
return Collections.synchronizedMap(new LinkedHashMap<>());
|
return new LinkedHashMap<>();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -33,6 +33,7 @@ import ghidra.dbg.target.TargetObject;
|
||||||
import ghidra.dbg.target.schema.TargetObjectSchema;
|
import ghidra.dbg.target.schema.TargetObjectSchema;
|
||||||
import ghidra.program.model.address.AddressSpace;
|
import ghidra.program.model.address.AddressSpace;
|
||||||
import ghidra.util.Msg;
|
import ghidra.util.Msg;
|
||||||
|
import ghidra.util.datastruct.ListenerMap.ListenerEntry;
|
||||||
import ghidra.util.datastruct.ListenerSet;
|
import ghidra.util.datastruct.ListenerSet;
|
||||||
import utilities.util.ProxyUtilities;
|
import utilities.util.ProxyUtilities;
|
||||||
|
|
||||||
|
@ -276,8 +277,8 @@ public class DelegateGadpClientTargetObject
|
||||||
if (actions == null && createIfAbsent) {
|
if (actions == null && createIfAbsent) {
|
||||||
actions = new ListenerSet<>(TargetBreakpointAction.class) {
|
actions = new ListenerSet<>(TargetBreakpointAction.class) {
|
||||||
// Want strong references on actions
|
// Want strong references on actions
|
||||||
protected Map<TargetBreakpointAction, TargetBreakpointAction> createMap() {
|
protected Map<TargetBreakpointAction, ListenerEntry<? extends TargetBreakpointAction>> createMap() {
|
||||||
return Collections.synchronizedMap(new LinkedHashMap<>());
|
return new LinkedHashMap<>();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|
|
@ -26,7 +26,6 @@ import java.util.function.Function;
|
||||||
import org.apache.commons.lang3.exception.ExceptionUtils;
|
import org.apache.commons.lang3.exception.ExceptionUtils;
|
||||||
import org.jdom.JDOMException;
|
import org.jdom.JDOMException;
|
||||||
|
|
||||||
import com.google.common.cache.RemovalNotification;
|
|
||||||
import com.google.protobuf.Message;
|
import com.google.protobuf.Message;
|
||||||
import com.google.protobuf.ProtocolStringList;
|
import com.google.protobuf.ProtocolStringList;
|
||||||
|
|
||||||
|
@ -48,6 +47,7 @@ import ghidra.dbg.target.schema.XmlSchemaContext;
|
||||||
import ghidra.dbg.util.PathUtils;
|
import ghidra.dbg.util.PathUtils;
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
import ghidra.util.*;
|
import ghidra.util.*;
|
||||||
|
import ghidra.util.datastruct.FixedSizeHashMap;
|
||||||
import ghidra.util.exception.DuplicateNameException;
|
import ghidra.util.exception.DuplicateNameException;
|
||||||
import utilities.util.ProxyUtilities;
|
import utilities.util.ProxyUtilities;
|
||||||
|
|
||||||
|
@ -58,7 +58,6 @@ public class GadpClient extends AbstractDebuggerObjectModel
|
||||||
// TODO: More sophisticated cache management
|
// TODO: More sophisticated cache management
|
||||||
// TODO: Perhaps no cache at all, and rely totally on async notifications
|
// TODO: Perhaps no cache at all, and rely totally on async notifications
|
||||||
protected static final int MAX_OUTSTANDING_REQUESTS = Integer.MAX_VALUE;
|
protected static final int MAX_OUTSTANDING_REQUESTS = Integer.MAX_VALUE;
|
||||||
protected static final int REQUEST_TIMEOUT_MILLIS = Integer.MAX_VALUE;
|
|
||||||
|
|
||||||
protected static final ProtobufOneofByTypeHelper<Gadp.RootMessage, Gadp.RootMessage.Builder> MSG_HELPER =
|
protected static final ProtobufOneofByTypeHelper<Gadp.RootMessage, Gadp.RootMessage.Builder> MSG_HELPER =
|
||||||
ProtobufOneofByTypeHelper.create(Gadp.RootMessage.getDefaultInstance(),
|
ProtobufOneofByTypeHelper.create(Gadp.RootMessage.getDefaultInstance(),
|
||||||
|
@ -218,13 +217,22 @@ public class GadpClient extends AbstractDebuggerObjectModel
|
||||||
new AsyncDebouncer<>(AsyncTimer.DEFAULT_TIMER, 500);
|
new AsyncDebouncer<>(AsyncTimer.DEFAULT_TIMER, 500);
|
||||||
|
|
||||||
public MessagePairingCache() {
|
public MessagePairingCache() {
|
||||||
super(4, REQUEST_TIMEOUT_MILLIS, MAX_OUTSTANDING_REQUESTS);
|
super(MAX_OUTSTANDING_REQUESTS);
|
||||||
cacheMonitor.addListener(this::cacheSettled);
|
cacheMonitor.addListener(this::cacheSettled);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void resultRemoved(RemovalNotification<Integer, Gadp.RootMessage> rn) {
|
protected Map<Integer, RootMessage> createResultCache(int max) {
|
||||||
Msg.error(this, "Received message with unexpected sequence number: " + rn);
|
return new FixedSizeHashMap<>(max) {
|
||||||
|
@Override
|
||||||
|
protected boolean removeEldestEntry(Map.Entry<Integer, RootMessage> eldest) {
|
||||||
|
if (!super.removeEldestEntry(eldest)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
Msg.error(this, "Received message with unexpected sequence number: " + eldest);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -235,17 +243,23 @@ public class GadpClient extends AbstractDebuggerObjectModel
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void promiseRemoved(
|
protected Map<Integer, CompletableFuture<RootMessage>> createPromiseCache(int max) {
|
||||||
RemovalNotification<Integer, CompletableFuture<Gadp.RootMessage>> rn) {
|
return new FixedSizeHashMap<>(max) {
|
||||||
if (rn.wasEvicted()) {
|
@Override
|
||||||
String message = "Command with sequence number " + rn.getKey() +
|
protected boolean removeEldestEntry(
|
||||||
" evicted because " + rn.getCause();
|
Map.Entry<Integer, CompletableFuture<RootMessage>> eldest) {
|
||||||
Msg.error(this, message);
|
if (!super.removeEldestEntry(eldest)) {
|
||||||
AsyncUtils.FRAMEWORK_EXECUTOR.execute(() -> {
|
return false;
|
||||||
rn.getValue().completeExceptionally(new TimeoutException(message));
|
}
|
||||||
});
|
String message = "Command with sequence number " + eldest.getKey() +
|
||||||
}
|
" evicted";
|
||||||
cacheMonitor.contact(null);
|
Msg.error(this, message);
|
||||||
|
AsyncUtils.FRAMEWORK_EXECUTOR.execute(() -> {
|
||||||
|
eldest.getValue().completeExceptionally(new TimeoutException(message));
|
||||||
|
});
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cacheSettled(Void __) {
|
private void cacheSettled(Void __) {
|
||||||
|
|
|
@ -20,11 +20,12 @@ import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
import ghidra.dbg.jdi.manager.breakpoint.JdiBreakpointInfo;
|
import ghidra.dbg.jdi.manager.breakpoint.JdiBreakpointInfo;
|
||||||
import ghidra.dbg.jdi.model.iface1.JdiModelTargetDeletable;
|
import ghidra.dbg.jdi.model.iface1.JdiModelTargetDeletable;
|
||||||
import ghidra.dbg.target.TargetBreakpointSpecContainer.TargetBreakpointKindSet;
|
|
||||||
import ghidra.dbg.target.TargetBreakpointLocation;
|
import ghidra.dbg.target.TargetBreakpointLocation;
|
||||||
import ghidra.dbg.target.TargetBreakpointSpec;
|
import ghidra.dbg.target.TargetBreakpointSpec;
|
||||||
|
import ghidra.dbg.target.TargetBreakpointSpecContainer.TargetBreakpointKindSet;
|
||||||
import ghidra.dbg.target.schema.TargetAttributeType;
|
import ghidra.dbg.target.schema.TargetAttributeType;
|
||||||
import ghidra.dbg.target.schema.TargetObjectSchemaInfo;
|
import ghidra.dbg.target.schema.TargetObjectSchemaInfo;
|
||||||
|
import ghidra.util.datastruct.ListenerMap.ListenerEntry;
|
||||||
import ghidra.util.datastruct.ListenerSet;
|
import ghidra.util.datastruct.ListenerSet;
|
||||||
|
|
||||||
@TargetObjectSchemaInfo(
|
@TargetObjectSchemaInfo(
|
||||||
|
@ -48,8 +49,8 @@ public class JdiModelTargetBreakpointSpec extends JdiModelTargetObjectImpl
|
||||||
protected final ListenerSet<TargetBreakpointAction> actions =
|
protected final ListenerSet<TargetBreakpointAction> actions =
|
||||||
new ListenerSet<>(TargetBreakpointAction.class) {
|
new ListenerSet<>(TargetBreakpointAction.class) {
|
||||||
// Use strong references on actions
|
// Use strong references on actions
|
||||||
protected Map<TargetBreakpointAction, TargetBreakpointAction> createMap() {
|
protected Map<TargetBreakpointAction, ListenerEntry<? extends TargetBreakpointAction>> createMap() {
|
||||||
return Collections.synchronizedMap(new LinkedHashMap<>());
|
return new LinkedHashMap<>();
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -25,8 +25,6 @@ import java.util.function.Function;
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
import javax.swing.table.*;
|
import javax.swing.table.*;
|
||||||
|
|
||||||
import com.google.common.collect.Collections2;
|
|
||||||
|
|
||||||
import docking.widgets.table.*;
|
import docking.widgets.table.*;
|
||||||
import docking.widgets.table.DefaultEnumeratedColumnTableModel.EnumeratedTableColumn;
|
import docking.widgets.table.DefaultEnumeratedColumnTableModel.EnumeratedTableColumn;
|
||||||
import ghidra.docking.settings.Settings;
|
import ghidra.docking.settings.Settings;
|
||||||
|
@ -239,8 +237,8 @@ public class DebuggerSnapshotTablePanel extends JPanel {
|
||||||
Collection<? extends TraceSnapshot> snapshots = hideScratch
|
Collection<? extends TraceSnapshot> snapshots = hideScratch
|
||||||
? manager.getSnapshots(0, true, Long.MAX_VALUE, true)
|
? manager.getSnapshots(0, true, Long.MAX_VALUE, true)
|
||||||
: manager.getAllSnapshots();
|
: manager.getAllSnapshots();
|
||||||
snapshotTableModel.addAll(Collections2.transform(snapshots,
|
snapshotTableModel
|
||||||
s -> new SnapshotRow(currentTrace, s)));
|
.addAll(snapshots.stream().map(s -> new SnapshotRow(currentTrace, s)).toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void deleteScratchSnapshots() {
|
protected void deleteScratchSnapshots() {
|
||||||
|
@ -252,9 +250,10 @@ public class DebuggerSnapshotTablePanel extends JPanel {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
TraceTimeManager manager = currentTrace.getTimeManager();
|
TraceTimeManager manager = currentTrace.getTimeManager();
|
||||||
snapshotTableModel.addAll(Collections2.transform(
|
snapshotTableModel.addAll(manager.getSnapshots(Long.MIN_VALUE, true, 0, false)
|
||||||
manager.getSnapshots(Long.MIN_VALUE, true, 0, false),
|
.stream()
|
||||||
s -> new SnapshotRow(currentTrace, s)));
|
.map(s -> new SnapshotRow(currentTrace, s))
|
||||||
|
.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
public ListSelectionModel getSelectionModel() {
|
public ListSelectionModel getSelectionModel() {
|
||||||
|
|
|
@ -112,7 +112,7 @@ public class LoneLogicalBreakpoint implements LogicalBreakpointInternal {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Set<TraceBreakpoint> getTraceBreakpoints() {
|
public Set<TraceBreakpoint> getTraceBreakpoints() {
|
||||||
return new HashSet<>(breaks.getBreakpoints());
|
return breaks.getBreakpoints();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -334,7 +334,7 @@ public class MappedLogicalBreakpoint implements LogicalBreakpointInternal {
|
||||||
synchronized (traceBreaks) {
|
synchronized (traceBreaks) {
|
||||||
breaks = traceBreaks.get(trace);
|
breaks = traceBreaks.get(trace);
|
||||||
}
|
}
|
||||||
return breaks == null ? Set.of() : new HashSet<>(breaks.getBreakpoints());
|
return breaks == null ? Set.of() : breaks.getBreakpoints();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -16,8 +16,7 @@
|
||||||
package ghidra.app.plugin.core.debug.service.breakpoint;
|
package ghidra.app.plugin.core.debug.service.breakpoint;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import com.google.common.collect.Collections2;
|
|
||||||
|
|
||||||
import ghidra.app.services.*;
|
import ghidra.app.services.*;
|
||||||
import ghidra.app.services.LogicalBreakpoint.TraceMode;
|
import ghidra.app.services.LogicalBreakpoint.TraceMode;
|
||||||
|
@ -239,8 +238,8 @@ class TraceBreakpointSet {
|
||||||
*
|
*
|
||||||
* @return the breakpoints
|
* @return the breakpoints
|
||||||
*/
|
*/
|
||||||
public Collection<TraceBreakpoint> getBreakpoints() {
|
public Set<TraceBreakpoint> getBreakpoints() {
|
||||||
return Collections2.transform(breakpoints, e -> e.obj);
|
return breakpoints.stream().map(e -> e.obj).collect(Collectors.toUnmodifiableSet());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -17,14 +17,12 @@ package ghidra.async;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
import java.util.concurrent.TimeUnit;
|
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
|
|
||||||
import com.google.common.cache.*;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A cache of futures which pairs each to its result by key
|
* A cache of futures which pairs each to its result by key
|
||||||
*
|
*
|
||||||
|
* <p>
|
||||||
* The cache accepts promises and results, storing unpaired entries for a timeout period. Each
|
* The cache accepts promises and results, storing unpaired entries for a timeout period. Each
|
||||||
* promise is fulfilled when the cache accepts its corresponding result, determined by key.
|
* promise is fulfilled when the cache accepts its corresponding result, determined by key.
|
||||||
* Conversely, a cached result fulfills its corresponding promise, determined by key, when the cache
|
* Conversely, a cached result fulfills its corresponding promise, determined by key, when the cache
|
||||||
|
@ -32,6 +30,7 @@ import com.google.common.cache.*;
|
||||||
* given key enter the cache, they are paired, the promise is fulfilled, and both are removed from
|
* given key enter the cache, they are paired, the promise is fulfilled, and both are removed from
|
||||||
* the cache.
|
* the cache.
|
||||||
*
|
*
|
||||||
|
* <p>
|
||||||
* If an entry is not paired within the timeout period, it is evicted. An evicted promise is likely
|
* If an entry is not paired within the timeout period, it is evicted. An evicted promise is likely
|
||||||
* a recoverable error, e.g., a request timed out. An evicted result is likely a logic or
|
* a recoverable error, e.g., a request timed out. An evicted result is likely a logic or
|
||||||
* synchronization error. Requests, i.e., promises, are usually created before the result is
|
* synchronization error. Requests, i.e., promises, are usually created before the result is
|
||||||
|
@ -53,66 +52,26 @@ public abstract class AsyncPairingCache<K, V> {
|
||||||
/**
|
/**
|
||||||
* Construct a new matching cache
|
* Construct a new matching cache
|
||||||
*
|
*
|
||||||
* @param concurrencyLevel the maximum number of thread expected to simultaneously access the
|
|
||||||
* cache
|
|
||||||
* @param timeoutMillis the amount of time (in milliseconds) a promise or result may pend before
|
|
||||||
* eviction
|
|
||||||
* @param maxPending the maximum number of pending promises or results before the eldest is
|
* @param maxPending the maximum number of pending promises or results before the eldest is
|
||||||
* evicted. Each is counted independently, e.g., a value of 5 permits 5 pending
|
* evicted. Each is counted independently, e.g., a value of 5 permits 5 pending
|
||||||
* promises and 5 pending results simultaneously.
|
* promises and 5 pending results simultaneously.
|
||||||
*/
|
*/
|
||||||
public AsyncPairingCache(int concurrencyLevel, int timeoutMillis, int maxPending) {
|
public AsyncPairingCache(int maxPending) {
|
||||||
results = CacheBuilder.newBuilder()
|
results = createResultCache(maxPending);
|
||||||
.concurrencyLevel(concurrencyLevel)
|
|
||||||
.expireAfterWrite(timeoutMillis, TimeUnit.MILLISECONDS)
|
|
||||||
.maximumSize(maxPending)
|
|
||||||
.removalListener(this::resultRemoved)
|
|
||||||
.build()
|
|
||||||
.asMap();
|
|
||||||
resultsView = Collections.unmodifiableMap(results);
|
resultsView = Collections.unmodifiableMap(results);
|
||||||
|
|
||||||
promises = CacheBuilder.newBuilder()
|
promises = createPromiseCache(maxPending);
|
||||||
.concurrencyLevel(concurrencyLevel)
|
|
||||||
.expireAfterWrite(timeoutMillis, TimeUnit.MILLISECONDS)
|
|
||||||
.maximumSize(maxPending)
|
|
||||||
.removalListener(this::promiseRemoved)
|
|
||||||
.build()
|
|
||||||
.asMap();
|
|
||||||
promisesView = Collections.unmodifiableMap(promises);
|
promisesView = Collections.unmodifiableMap(promises);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
protected abstract Map<K, V> createResultCache(int max);
|
||||||
* Called when a result is removed
|
|
||||||
*
|
|
||||||
* Eviction is likely due to a logic bug or a gratuitous result from an external source.
|
|
||||||
*
|
|
||||||
* @param rn the removal notification for the result entry
|
|
||||||
*/
|
|
||||||
protected abstract void resultRemoved(RemovalNotification<K, V> rn);
|
|
||||||
|
|
||||||
/**
|
protected abstract Map<K, CompletableFuture<V>> createPromiseCache(int max);
|
||||||
* Called when a promise is removed
|
|
||||||
*
|
|
||||||
* The most common implementation is to complete the future exceptionally. The default
|
|
||||||
* implementation completes the future with a {@link RuntimeException}. Extensions should
|
|
||||||
* override this method. Note that this method is called for removal as a result of normal
|
|
||||||
* completion, too. In that case {@link RemovalNotification#getCause()} will return
|
|
||||||
* {@link RemovalCause#EXPLICIT}.
|
|
||||||
*
|
|
||||||
* @param rn the removal notification for the promise entry
|
|
||||||
*/
|
|
||||||
protected void promiseRemoved(RemovalNotification<K, CompletableFuture<V>> rn) {
|
|
||||||
if (rn.getCause() != RemovalCause.EXPLICIT) {
|
|
||||||
rn.getValue()
|
|
||||||
.completeExceptionally(new RuntimeException(
|
|
||||||
"Promise with key " + rn.getKey() +
|
|
||||||
" was evicted with the default handler"));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Enter a promise for the the given key into the cache
|
* Enter a promise for the the given key into the cache
|
||||||
*
|
*
|
||||||
|
* <p>
|
||||||
* If the result for the given key is already available, the promise does not enter the cache.
|
* If the result for the given key is already available, the promise does not enter the cache.
|
||||||
* Instead, the result is removed and the promise is completed.
|
* Instead, the result is removed and the promise is completed.
|
||||||
*
|
*
|
||||||
|
@ -126,6 +85,7 @@ public abstract class AsyncPairingCache<K, V> {
|
||||||
/**
|
/**
|
||||||
* Enter a promise for the the given key into the cache
|
* Enter a promise for the the given key into the cache
|
||||||
*
|
*
|
||||||
|
* <p>
|
||||||
* If the result for the given key is already available, the promise does not enter the cache.
|
* If the result for the given key is already available, the promise does not enter the cache.
|
||||||
* Instead, the result is removed and the promise is completed.
|
* Instead, the result is removed and the promise is completed.
|
||||||
*
|
*
|
||||||
|
@ -148,6 +108,7 @@ public abstract class AsyncPairingCache<K, V> {
|
||||||
/**
|
/**
|
||||||
* Enter a result for the given key into the cache
|
* Enter a result for the given key into the cache
|
||||||
*
|
*
|
||||||
|
* <p>
|
||||||
* If a promise for the key already exists, the result does not enter the cache. Instead, the
|
* If a promise for the key already exists, the result does not enter the cache. Instead, the
|
||||||
* promise is removed and completed.
|
* promise is removed and completed.
|
||||||
*
|
*
|
||||||
|
@ -169,11 +130,8 @@ public abstract class AsyncPairingCache<K, V> {
|
||||||
/**
|
/**
|
||||||
* Flush the cache, completing all pending requests exceptionally
|
* Flush the cache, completing all pending requests exceptionally
|
||||||
*
|
*
|
||||||
* Both sides of the cache are cleared. Note that this will invoke the removal callback for each
|
* <p>
|
||||||
* entry giving {@link RemovalCause#EXPLICIT} as the cause. For requests, the callback ought not
|
* Both sides of the cache are cleared.
|
||||||
* to complete the request, exceptionally or otherwise, since the flush is about to complete it
|
|
||||||
* with the given exception. The implementor may freely choose how to handle flushed pending
|
|
||||||
* results.
|
|
||||||
*
|
*
|
||||||
* @param exc the exception for completing the requests
|
* @param exc the exception for completing the requests
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -15,25 +15,50 @@
|
||||||
*/
|
*/
|
||||||
package ghidra.framework.data;
|
package ghidra.framework.data;
|
||||||
|
|
||||||
import java.util.Map;
|
import java.lang.ref.Cleaner;
|
||||||
import java.util.NoSuchElementException;
|
import java.util.*;
|
||||||
|
|
||||||
import com.google.common.cache.CacheBuilder;
|
|
||||||
import com.google.common.cache.RemovalNotification;
|
|
||||||
|
|
||||||
import ghidra.framework.model.*;
|
import ghidra.framework.model.*;
|
||||||
import ghidra.util.Lock;
|
import ghidra.util.Lock;
|
||||||
|
|
||||||
public class DomainObjectEventQueues {
|
public class DomainObjectEventQueues {
|
||||||
|
protected static class PrivateQueue {
|
||||||
|
private static final Cleaner CLEANER = Cleaner.create();
|
||||||
|
|
||||||
|
static class State implements Runnable {
|
||||||
|
final DomainObjectChangeSupport docs;
|
||||||
|
|
||||||
|
public State(DomainObjectChangeSupport docs) {
|
||||||
|
this.docs = docs;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void run() {
|
||||||
|
docs.dispose();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private final State state;
|
||||||
|
private final Cleaner.Cleanable cleanable;
|
||||||
|
|
||||||
|
public PrivateQueue(DomainObjectChangeSupport docs) {
|
||||||
|
this.state = new State(docs);
|
||||||
|
this.cleanable = CLEANER.register(this, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
public void flush() {
|
||||||
|
state.docs.flush();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void fireEvent(DomainObjectChangeRecord ev) {
|
||||||
|
state.docs.fireEvent(ev);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
protected final DomainObject source;
|
protected final DomainObject source;
|
||||||
protected final Lock lock;
|
protected final Lock lock;
|
||||||
protected final DomainObjectChangeSupport eventQueue;
|
protected final DomainObjectChangeSupport eventQueue;
|
||||||
protected final Map<EventQueueID, DomainObjectChangeSupport> privateEventQueues =
|
protected final Map<EventQueueID, PrivateQueue> privateEventQueues = new WeakHashMap<>();
|
||||||
CacheBuilder.newBuilder()
|
|
||||||
.removalListener(this::privateQueueRemoved)
|
|
||||||
.weakKeys()
|
|
||||||
.build()
|
|
||||||
.asMap();
|
|
||||||
|
|
||||||
protected volatile boolean eventsEnabled = true;
|
protected volatile boolean eventsEnabled = true;
|
||||||
|
|
||||||
|
@ -43,14 +68,9 @@ public class DomainObjectEventQueues {
|
||||||
eventQueue = new DomainObjectChangeSupport(source, timeInterval, lock);
|
eventQueue = new DomainObjectChangeSupport(source, timeInterval, lock);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void privateQueueRemoved(
|
|
||||||
RemovalNotification<EventQueueID, DomainObjectChangeSupport> rn) {
|
|
||||||
rn.getValue().dispose();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void flushEvents() {
|
public void flushEvents() {
|
||||||
eventQueue.flush();
|
eventQueue.flush();
|
||||||
for (DomainObjectChangeSupport privateQueue : privateEventQueues.values()) {
|
for (PrivateQueue privateQueue : privateEventQueues.values()) {
|
||||||
privateQueue.flush();
|
privateQueue.flush();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -65,20 +85,23 @@ public class DomainObjectEventQueues {
|
||||||
|
|
||||||
public EventQueueID createPrivateEventQueue(DomainObjectListener listener, int maxDelay) {
|
public EventQueueID createPrivateEventQueue(DomainObjectListener listener, int maxDelay) {
|
||||||
EventQueueID id = new EventQueueID();
|
EventQueueID id = new EventQueueID();
|
||||||
DomainObjectChangeSupport privateQueue =
|
DomainObjectChangeSupport docs = new DomainObjectChangeSupport(source, maxDelay, lock);
|
||||||
new DomainObjectChangeSupport(source, maxDelay, lock);
|
docs.addListener(listener);
|
||||||
privateQueue.addListener(listener);
|
privateEventQueues.put(id, new PrivateQueue(docs));
|
||||||
privateEventQueues.put(id, privateQueue);
|
|
||||||
return id;
|
return id;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean removePrivateEventQueue(EventQueueID id) {
|
public boolean removePrivateEventQueue(EventQueueID id) {
|
||||||
return privateEventQueues.remove(id) != null;
|
PrivateQueue privateQueue = privateEventQueues.remove(id);
|
||||||
// NOTE: Removal callback will dispose()
|
if (privateQueue == null) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
privateQueue.cleanable.clean();
|
||||||
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void flushPrivateEventQueue(EventQueueID id) {
|
public void flushPrivateEventQueue(EventQueueID id) {
|
||||||
DomainObjectChangeSupport privateQueue = privateEventQueues.get(id);
|
PrivateQueue privateQueue = privateEventQueues.get(id);
|
||||||
if (privateQueue == null) {
|
if (privateQueue == null) {
|
||||||
throw new NoSuchElementException("Private queue no longer exists");
|
throw new NoSuchElementException("Private queue no longer exists");
|
||||||
}
|
}
|
||||||
|
@ -88,7 +111,7 @@ public class DomainObjectEventQueues {
|
||||||
public void fireEvent(DomainObjectChangeRecord ev) {
|
public void fireEvent(DomainObjectChangeRecord ev) {
|
||||||
if (eventsEnabled) {
|
if (eventsEnabled) {
|
||||||
eventQueue.fireEvent(ev);
|
eventQueue.fireEvent(ev);
|
||||||
for (DomainObjectChangeSupport privateQueue : privateEventQueues.values()) {
|
for (PrivateQueue privateQueue : privateEventQueues.values()) {
|
||||||
privateQueue.fireEvent(ev);
|
privateQueue.fireEvent(ev);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -103,7 +126,7 @@ public class DomainObjectEventQueues {
|
||||||
DomainObjectChangeRecord restored =
|
DomainObjectChangeRecord restored =
|
||||||
new DomainObjectChangeRecord(DomainObject.DO_OBJECT_RESTORED);
|
new DomainObjectChangeRecord(DomainObject.DO_OBJECT_RESTORED);
|
||||||
eventQueue.fireEvent(restored);
|
eventQueue.fireEvent(restored);
|
||||||
for (DomainObjectChangeSupport privateQueue : privateEventQueues.values()) {
|
for (PrivateQueue privateQueue : privateEventQueues.values()) {
|
||||||
privateQueue.fireEvent(restored);
|
privateQueue.fireEvent(restored);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -16,7 +16,6 @@
|
||||||
package ghidra.pcode.exec.trace;
|
package ghidra.pcode.exec.trace;
|
||||||
|
|
||||||
import ghidra.pcode.exec.AccessPcodeExecutionException;
|
import ghidra.pcode.exec.AccessPcodeExecutionException;
|
||||||
import ghidra.pcode.exec.PcodeExecutorStatePiece;
|
|
||||||
import ghidra.pcode.exec.trace.data.PcodeTraceDataAccess;
|
import ghidra.pcode.exec.trace.data.PcodeTraceDataAccess;
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
import ghidra.trace.model.memory.TraceMemorySpace;
|
import ghidra.trace.model.memory.TraceMemorySpace;
|
||||||
|
|
|
@ -21,8 +21,6 @@ import java.util.function.Consumer;
|
||||||
|
|
||||||
import org.apache.commons.collections4.collection.CompositeCollection;
|
import org.apache.commons.collections4.collection.CompositeCollection;
|
||||||
|
|
||||||
import com.google.common.cache.RemovalNotification;
|
|
||||||
|
|
||||||
import db.DBHandle;
|
import db.DBHandle;
|
||||||
import generic.depends.DependentService;
|
import generic.depends.DependentService;
|
||||||
import generic.depends.err.ServiceConstructionException;
|
import generic.depends.err.ServiceConstructionException;
|
||||||
|
@ -229,10 +227,6 @@ public class DBTrace extends DBCachedDomainObjectAdapter implements Trace, Trace
|
||||||
super.dbError(e);
|
super.dbError(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void fixedProgramViewRemoved(RemovalNotification<Long, DBTraceProgramView> rn) {
|
|
||||||
Msg.debug(this, "Dropped cached fixed view at snap=" + rn.getKey());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Internal
|
@Internal
|
||||||
public void assertValidAddress(Address pc) {
|
public void assertValidAddress(Address pc) {
|
||||||
if (pc == null) {
|
if (pc == null) {
|
||||||
|
|
|
@ -20,12 +20,10 @@ import java.util.Map.Entry;
|
||||||
|
|
||||||
import org.apache.commons.lang3.tuple.ImmutablePair;
|
import org.apache.commons.lang3.tuple.ImmutablePair;
|
||||||
|
|
||||||
import com.google.common.cache.CacheBuilder;
|
|
||||||
import com.google.common.cache.RemovalNotification;
|
|
||||||
|
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
import ghidra.trace.database.DBTraceCacheForContainingQueries.GetKey;
|
import ghidra.trace.database.DBTraceCacheForContainingQueries.GetKey;
|
||||||
import ghidra.trace.model.*;
|
import ghidra.trace.model.*;
|
||||||
|
import ghidra.util.datastruct.FixedSizeHashMap;
|
||||||
|
|
||||||
public abstract class DBTraceCacheForContainingQueries<K extends GetKey, V, T> {
|
public abstract class DBTraceCacheForContainingQueries<K extends GetKey, V, T> {
|
||||||
public static class GetKey {
|
public static class GetKey {
|
||||||
|
@ -73,16 +71,7 @@ public abstract class DBTraceCacheForContainingQueries<K extends GetKey, V, T> {
|
||||||
public DBTraceCacheForContainingQueries(int snapBreadth, int addressBreadth, int maxPoints) {
|
public DBTraceCacheForContainingQueries(int snapBreadth, int addressBreadth, int maxPoints) {
|
||||||
this.snapBreadth = snapBreadth;
|
this.snapBreadth = snapBreadth;
|
||||||
this.addressBreadth = addressBreadth;
|
this.addressBreadth = addressBreadth;
|
||||||
this.pointCache = CacheBuilder.newBuilder()
|
this.pointCache = new FixedSizeHashMap<>(maxPoints);
|
||||||
.removalListener(this::getContainingRemoved)
|
|
||||||
.maximumSize(maxPoints)
|
|
||||||
.concurrencyLevel(2)
|
|
||||||
.build()
|
|
||||||
.asMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
private void getContainingRemoved(RemovalNotification<K, V> rn) {
|
|
||||||
// Nothing
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected abstract void loadRangeCache(TraceAddressSnapRange range);
|
protected abstract void loadRangeCache(TraceAddressSnapRange range);
|
||||||
|
|
|
@ -19,8 +19,6 @@ import java.util.*;
|
||||||
import java.util.function.Function;
|
import java.util.function.Function;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import com.google.common.collect.*;
|
|
||||||
|
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
import ghidra.trace.model.*;
|
import ghidra.trace.model.*;
|
||||||
import ghidra.trace.model.Lifespan.DefaultLifeSet;
|
import ghidra.trace.model.Lifespan.DefaultLifeSet;
|
||||||
|
@ -324,10 +322,10 @@ public class DBTraceTimeViewport implements TraceTimeViewport {
|
||||||
public List<Long> getReversedSnaps() {
|
public List<Long> getReversedSnaps() {
|
||||||
try (LockHold hold = trace.lockRead()) {
|
try (LockHold hold = trace.lockRead()) {
|
||||||
synchronized (ordered) {
|
synchronized (ordered) {
|
||||||
return Lists.reverse(ordered)
|
List<Long> reversed =
|
||||||
.stream()
|
ordered.stream().map(Lifespan::lmax).collect(Collectors.toList());
|
||||||
.map(Lifespan::lmax)
|
Collections.reverse(reversed);
|
||||||
.collect(Collectors.toList());
|
return reversed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -15,12 +15,9 @@
|
||||||
*/
|
*/
|
||||||
package ghidra.trace.database.listing;
|
package ghidra.trace.database.listing;
|
||||||
|
|
||||||
import java.util.Collection;
|
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
|
|
||||||
import com.google.common.collect.Collections2;
|
|
||||||
|
|
||||||
import generic.NestedIterator;
|
import generic.NestedIterator;
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
import ghidra.trace.database.DBTraceUtils;
|
import ghidra.trace.database.DBTraceUtils;
|
||||||
|
@ -40,7 +37,6 @@ import ghidra.util.LockHold;
|
||||||
public abstract class AbstractBaseDBTraceCodeUnitsMemoryView<T extends DBTraceCodeUnitAdapter, M extends AbstractBaseDBTraceCodeUnitsView<T>>
|
public abstract class AbstractBaseDBTraceCodeUnitsMemoryView<T extends DBTraceCodeUnitAdapter, M extends AbstractBaseDBTraceCodeUnitsView<T>>
|
||||||
implements DBTraceDelegatingManager<M> {
|
implements DBTraceDelegatingManager<M> {
|
||||||
protected final DBTraceCodeManager manager;
|
protected final DBTraceCodeManager manager;
|
||||||
protected final Collection<M> activeSpacesView;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct a composite view
|
* Construct a composite view
|
||||||
|
@ -49,8 +45,6 @@ public abstract class AbstractBaseDBTraceCodeUnitsMemoryView<T extends DBTraceCo
|
||||||
*/
|
*/
|
||||||
public AbstractBaseDBTraceCodeUnitsMemoryView(DBTraceCodeManager manager) {
|
public AbstractBaseDBTraceCodeUnitsMemoryView(DBTraceCodeManager manager) {
|
||||||
this.manager = manager;
|
this.manager = manager;
|
||||||
this.activeSpacesView =
|
|
||||||
Collections2.transform(manager.getActiveMemorySpaces(), this::getView);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public AddressSpace getSpace() {
|
public AddressSpace getSpace() {
|
||||||
|
@ -242,8 +236,8 @@ public abstract class AbstractBaseDBTraceCodeUnitsMemoryView<T extends DBTraceCo
|
||||||
*/
|
*/
|
||||||
public int size() {
|
public int size() {
|
||||||
int sum = 0;
|
int sum = 0;
|
||||||
for (M m : activeSpacesView) {
|
for (DBTraceCodeSpace space : manager.getActiveMemorySpaces()) {
|
||||||
sum += m.size();
|
sum += getView(space).size();
|
||||||
}
|
}
|
||||||
return sum;
|
return sum;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,9 +17,7 @@ package ghidra.trace.database.listing;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.stream.StreamSupport;
|
||||||
import com.google.common.collect.Collections2;
|
|
||||||
import com.google.common.collect.Iterators;
|
|
||||||
|
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
import ghidra.trace.model.TraceAddressSnapRange;
|
import ghidra.trace.model.TraceAddressSnapRange;
|
||||||
|
@ -83,7 +81,7 @@ public abstract class AbstractComposedDBTraceCodeUnitsView<T extends DBTraceCode
|
||||||
@Override
|
@Override
|
||||||
public Iterable<? extends T> get(long snap, Address min, Address max, boolean forward) {
|
public Iterable<? extends T> get(long snap, Address min, Address max, boolean forward) {
|
||||||
Collection<? extends Iterator<? extends T>> itCol =
|
Collection<? extends Iterator<? extends T>> itCol =
|
||||||
Collections2.transform(parts, p -> p.get(snap, min, max, forward).iterator());
|
parts.stream().map(p -> p.get(snap, min, max, forward).iterator()).toList();
|
||||||
return () -> new MergeSortingIterator<T>(itCol,
|
return () -> new MergeSortingIterator<T>(itCol,
|
||||||
forward ? DBTraceDefinedUnitsView::compareForward
|
forward ? DBTraceDefinedUnitsView::compareForward
|
||||||
: DBTraceDefinedUnitsView::compareBackward);
|
: DBTraceDefinedUnitsView::compareBackward);
|
||||||
|
@ -91,9 +89,10 @@ public abstract class AbstractComposedDBTraceCodeUnitsView<T extends DBTraceCode
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<? extends T> getIntersecting(TraceAddressSnapRange tasr) {
|
public Iterable<? extends T> getIntersecting(TraceAddressSnapRange tasr) {
|
||||||
Collection<? extends Iterator<? extends T>> itCol =
|
return () -> parts.stream()
|
||||||
Collections2.transform(parts, p -> p.getIntersecting(tasr).iterator());
|
.flatMap(p -> StreamSupport.stream(p.getIntersecting(tasr).spliterator(), false)
|
||||||
return () -> Iterators.concat(itCol.iterator());
|
.map(t -> (T) t))
|
||||||
|
.iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -165,7 +164,7 @@ public abstract class AbstractComposedDBTraceCodeUnitsView<T extends DBTraceCode
|
||||||
@Override
|
@Override
|
||||||
public AddressSetView getAddressSetView(long snap, AddressRange within) {
|
public AddressSetView getAddressSetView(long snap, AddressRange within) {
|
||||||
return new UnionAddressSetView(
|
return new UnionAddressSetView(
|
||||||
Collections2.transform(parts, p -> p.getAddressSetView(snap, within)));
|
parts.stream().map(p -> p.getAddressSetView(snap, within)).toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -16,8 +16,7 @@
|
||||||
package ghidra.trace.database.listing;
|
package ghidra.trace.database.listing;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
|
import java.util.stream.StreamSupport;
|
||||||
import com.google.common.collect.Iterators;
|
|
||||||
|
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
import ghidra.trace.model.TraceAddressSnapRange;
|
import ghidra.trace.model.TraceAddressSnapRange;
|
||||||
|
@ -83,9 +82,12 @@ public abstract class AbstractWithUndefinedDBTraceCodeUnitsMemoryView<T extends
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<? extends T> emptyOrFullIterableUndefined(TraceAddressSnapRange tasr) {
|
public Iterable<? extends T> emptyOrFullIterableUndefined(TraceAddressSnapRange tasr) {
|
||||||
Iterator<Iterator<? extends T>> itIt =
|
return () -> StreamSupport.stream(tasr.getLifespan().spliterator(), false)
|
||||||
Iterators.transform(tasr.getLifespan().iterator(),
|
.flatMap(snap -> StreamSupport
|
||||||
snap -> emptyOrFullIterableUndefined(snap, tasr.getRange(), true).iterator());
|
.stream(emptyOrFullIterableUndefined(snap, tasr.getRange(), true)
|
||||||
return () -> Iterators.concat(itIt);
|
.spliterator(),
|
||||||
|
false)
|
||||||
|
.map(t -> (T) t))
|
||||||
|
.iterator();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -23,9 +23,6 @@ import java.util.*;
|
||||||
import java.util.concurrent.locks.Lock;
|
import java.util.concurrent.locks.Lock;
|
||||||
import java.util.concurrent.locks.ReadWriteLock;
|
import java.util.concurrent.locks.ReadWriteLock;
|
||||||
|
|
||||||
import com.google.common.cache.CacheBuilder;
|
|
||||||
import com.google.common.cache.RemovalNotification;
|
|
||||||
|
|
||||||
import db.DBHandle;
|
import db.DBHandle;
|
||||||
import db.DBRecord;
|
import db.DBRecord;
|
||||||
import ghidra.lifecycle.Internal;
|
import ghidra.lifecycle.Internal;
|
||||||
|
@ -56,6 +53,7 @@ import ghidra.trace.util.TraceAddressSpace;
|
||||||
import ghidra.util.*;
|
import ghidra.util.*;
|
||||||
import ghidra.util.database.*;
|
import ghidra.util.database.*;
|
||||||
import ghidra.util.database.annot.*;
|
import ghidra.util.database.annot.*;
|
||||||
|
import ghidra.util.datastruct.WeakValueHashMap;
|
||||||
import ghidra.util.exception.CancelledException;
|
import ghidra.util.exception.CancelledException;
|
||||||
import ghidra.util.exception.VersionException;
|
import ghidra.util.exception.VersionException;
|
||||||
import ghidra.util.task.TaskMonitor;
|
import ghidra.util.task.TaskMonitor;
|
||||||
|
@ -323,11 +321,7 @@ public class DBTraceCodeManager extends AbstractDBTraceSpaceBasedManager<DBTrace
|
||||||
new DBTraceDefinedUnitsMemoryView(this);
|
new DBTraceDefinedUnitsMemoryView(this);
|
||||||
|
|
||||||
protected final Map<AddressSnap, UndefinedDBTraceData> undefinedCache =
|
protected final Map<AddressSnap, UndefinedDBTraceData> undefinedCache =
|
||||||
CacheBuilder.newBuilder()
|
new WeakValueHashMap<>();
|
||||||
.removalListener(this::undefinedRemovedFromCache)
|
|
||||||
.weakValues()
|
|
||||||
.build()
|
|
||||||
.asMap();
|
|
||||||
|
|
||||||
public DBTraceCodeManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock,
|
public DBTraceCodeManager(DBHandle dbh, DBOpenMode openMode, ReadWriteLock lock,
|
||||||
TaskMonitor monitor, Language baseLanguage, DBTrace trace,
|
TaskMonitor monitor, Language baseLanguage, DBTrace trace,
|
||||||
|
@ -349,11 +343,6 @@ public class DBTraceCodeManager extends AbstractDBTraceSpaceBasedManager<DBTrace
|
||||||
loadSpaces();
|
loadSpaces();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void undefinedRemovedFromCache(
|
|
||||||
RemovalNotification<AddressSnap, UndefinedDBTraceData> rn) {
|
|
||||||
// Do nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
// Internal
|
// Internal
|
||||||
public UndefinedDBTraceData doCreateUndefinedUnit(long snap, Address address,
|
public UndefinedDBTraceData doCreateUndefinedUnit(long snap, Address address,
|
||||||
TraceThread thread, int frameLevel) {
|
TraceThread thread, int frameLevel) {
|
||||||
|
|
|
@ -21,7 +21,7 @@ import java.nio.ByteBuffer;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.Map.Entry;
|
import java.util.Map.Entry;
|
||||||
|
|
||||||
import com.google.common.collect.Iterators;
|
import org.apache.commons.collections4.IteratorUtils;
|
||||||
|
|
||||||
import ghidra.program.model.address.Address;
|
import ghidra.program.model.address.Address;
|
||||||
import ghidra.program.model.address.AddressRangeImpl;
|
import ghidra.program.model.address.AddressRangeImpl;
|
||||||
|
@ -196,7 +196,7 @@ public interface DBTraceCodeUnitAdapter extends TraceCodeUnit, MemBufferAdapter
|
||||||
@Override
|
@Override
|
||||||
default Iterator<String> propertyNames() {
|
default Iterator<String> propertyNames() {
|
||||||
Lifespan span = Lifespan.at(getStartSnap());
|
Lifespan span = Lifespan.at(getStartSnap());
|
||||||
return Iterators.transform(Iterators.filter(
|
return IteratorUtils.transformedIterator(IteratorUtils.filteredIterator(
|
||||||
getTrace().getInternalAddressPropertyManager().getAllProperties().entrySet().iterator(),
|
getTrace().getInternalAddressPropertyManager().getAllProperties().entrySet().iterator(),
|
||||||
e -> e.getValue().getAddressSetView(span).contains(getAddress())), Entry::getKey);
|
e -> e.getValue().getAddressSetView(span).contains(getAddress())), Entry::getKey);
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,16 +17,16 @@ package ghidra.trace.database.listing;
|
||||||
|
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.stream.StreamSupport;
|
||||||
|
|
||||||
import com.google.common.cache.CacheBuilder;
|
import org.apache.commons.collections4.IteratorUtils;
|
||||||
import com.google.common.cache.RemovalNotification;
|
|
||||||
import com.google.common.collect.Iterators;
|
|
||||||
|
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
import ghidra.trace.model.Lifespan;
|
import ghidra.trace.model.Lifespan;
|
||||||
import ghidra.trace.model.TraceAddressSnapRange;
|
import ghidra.trace.model.TraceAddressSnapRange;
|
||||||
import ghidra.trace.model.listing.*;
|
import ghidra.trace.model.listing.*;
|
||||||
import ghidra.util.*;
|
import ghidra.util.*;
|
||||||
|
import ghidra.util.datastruct.FixedSizeHashMap;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The implementation of {@link TraceCodeSpace#undefinedData()}
|
* The implementation of {@link TraceCodeSpace#undefinedData()}
|
||||||
|
@ -39,11 +39,7 @@ public class DBTraceUndefinedDataView extends
|
||||||
|
|
||||||
protected final DBTraceCodeManager manager;
|
protected final DBTraceCodeManager manager;
|
||||||
|
|
||||||
protected final Map<Long, CachedAddressSetView> cache = CacheBuilder.newBuilder()
|
protected final Map<Long, CachedAddressSetView> cache = new FixedSizeHashMap<>(CACHE_MAX_SNAPS);
|
||||||
.removalListener(this::cacheEntryRemoved)
|
|
||||||
.maximumSize(CACHE_MAX_SNAPS)
|
|
||||||
.build()
|
|
||||||
.asMap();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Construct the view
|
* Construct the view
|
||||||
|
@ -55,10 +51,6 @@ public class DBTraceUndefinedDataView extends
|
||||||
this.manager = space.manager;
|
this.manager = space.manager;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void cacheEntryRemoved(RemovalNotification<Long, CachedAddressSetView> rn) {
|
|
||||||
// Nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Generate an undefined data unit at the given point
|
* Generate an undefined data unit at the given point
|
||||||
*
|
*
|
||||||
|
@ -150,15 +142,16 @@ public class DBTraceUndefinedDataView extends
|
||||||
boolean forward) {
|
boolean forward) {
|
||||||
Iterator<Address> ait =
|
Iterator<Address> ait =
|
||||||
getAddressSetView(snap, new AddressRangeImpl(min, max)).getAddresses(forward);
|
getAddressSetView(snap, new AddressRangeImpl(min, max)).getAddresses(forward);
|
||||||
return () -> Iterators.transform(ait, a -> doCreateUnit(snap, a));
|
return () -> IteratorUtils.transformedIterator(ait, a -> doCreateUnit(snap, a));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterable<? extends UndefinedDBTraceData> getIntersecting(TraceAddressSnapRange tasr) {
|
public Iterable<? extends UndefinedDBTraceData> getIntersecting(TraceAddressSnapRange tasr) {
|
||||||
Iterator<Iterator<? extends UndefinedDBTraceData>> itIt =
|
return () -> StreamSupport.stream(tasr.getLifespan().spliterator(), false)
|
||||||
Iterators.transform(tasr.getLifespan().iterator(),
|
.flatMap(snap -> StreamSupport
|
||||||
snap -> get(snap, tasr.getX1(), tasr.getX2(), true).iterator());
|
.stream(get(snap, tasr.getX1(), tasr.getX2(), true).spliterator(), false)
|
||||||
return () -> Iterators.concat(itIt);
|
.map(u -> (UndefinedDBTraceData) u))
|
||||||
|
.iterator();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -22,8 +22,6 @@ import java.util.concurrent.locks.Lock;
|
||||||
import java.util.concurrent.locks.ReadWriteLock;
|
import java.util.concurrent.locks.ReadWriteLock;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import com.google.common.collect.Collections2;
|
|
||||||
|
|
||||||
import db.DBHandle;
|
import db.DBHandle;
|
||||||
import db.DBRecord;
|
import db.DBRecord;
|
||||||
import ghidra.program.model.address.AddressSetView;
|
import ghidra.program.model.address.AddressSetView;
|
||||||
|
@ -235,7 +233,7 @@ public class DBTraceAddressSnapRangePropertyMap<T, DR extends AbstractDBTraceAdd
|
||||||
@Override
|
@Override
|
||||||
public AddressSetView getAddressSetView(Lifespan span, Predicate<T> predicate) {
|
public AddressSetView getAddressSetView(Lifespan span, Predicate<T> predicate) {
|
||||||
return new UnionAddressSetView(
|
return new UnionAddressSetView(
|
||||||
Collections2.transform(memSpacesView, m -> m.getAddressSetView(span, predicate)));
|
memSpaces.values().stream().map(m -> m.getAddressSetView(span, predicate)).toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -21,7 +21,7 @@ import java.util.NoSuchElementException;
|
||||||
import java.util.concurrent.locks.ReadWriteLock;
|
import java.util.concurrent.locks.ReadWriteLock;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import com.google.common.collect.Iterators;
|
import org.apache.commons.collections4.IteratorUtils;
|
||||||
|
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
import ghidra.trace.database.map.DBTraceAddressSnapRangePropertyMapTree.TraceAddressSnapRangeQuery;
|
import ghidra.trace.database.map.DBTraceAddressSnapRangePropertyMapTree.TraceAddressSnapRangeQuery;
|
||||||
|
@ -171,8 +171,9 @@ public class DBTraceAddressSnapRangePropertyMapAddressSetView<T> extends Abstrac
|
||||||
.orderedEntries()
|
.orderedEntries()
|
||||||
.iterator();
|
.iterator();
|
||||||
Iterator<Entry<TraceAddressSnapRange, T>> fltIt =
|
Iterator<Entry<TraceAddressSnapRange, T>> fltIt =
|
||||||
Iterators.filter(mapIt, e -> predicate.test(e.getValue()));
|
IteratorUtils.filteredIterator(mapIt, e -> predicate.test(e.getValue()));
|
||||||
Iterator<AddressRange> rawIt = Iterators.transform(fltIt, e -> e.getKey().getRange());
|
Iterator<AddressRange> rawIt =
|
||||||
|
IteratorUtils.transformedIterator(fltIt, e -> e.getKey().getRange());
|
||||||
return new UnionAddressRangeIterator(rawIt, forward);
|
return new UnionAddressRangeIterator(rawIt, forward);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -24,8 +24,6 @@ import java.util.concurrent.locks.Lock;
|
||||||
import java.util.concurrent.locks.ReadWriteLock;
|
import java.util.concurrent.locks.ReadWriteLock;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import com.google.common.collect.Collections2;
|
|
||||||
|
|
||||||
import db.DBHandle;
|
import db.DBHandle;
|
||||||
import ghidra.dbg.target.TargetMemoryRegion;
|
import ghidra.dbg.target.TargetMemoryRegion;
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
|
@ -226,8 +224,9 @@ public class DBTraceMemoryManager extends AbstractDBTraceSpaceBasedManager<DBTra
|
||||||
.getObjectsAddressSet(snap, TargetMemoryRegion.RANGE_ATTRIBUTE_NAME,
|
.getObjectsAddressSet(snap, TargetMemoryRegion.RANGE_ATTRIBUTE_NAME,
|
||||||
TraceObjectMemoryRegion.class, r -> true);
|
TraceObjectMemoryRegion.class, r -> true);
|
||||||
}
|
}
|
||||||
return new UnionAddressSetView(Collections2.transform(getActiveMemorySpaces(),
|
return new UnionAddressSetView(getActiveMemorySpaces().stream()
|
||||||
m -> m.getRegionsAddressSet(snap)));
|
.map(m -> m.getRegionsAddressSet(snap))
|
||||||
|
.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -238,8 +237,9 @@ public class DBTraceMemoryManager extends AbstractDBTraceSpaceBasedManager<DBTra
|
||||||
.getObjectsAddressSet(snap, TargetMemoryRegion.RANGE_ATTRIBUTE_NAME,
|
.getObjectsAddressSet(snap, TargetMemoryRegion.RANGE_ATTRIBUTE_NAME,
|
||||||
TraceObjectMemoryRegion.class, predicate);
|
TraceObjectMemoryRegion.class, predicate);
|
||||||
}
|
}
|
||||||
return new UnionAddressSetView(Collections2.transform(getActiveMemorySpaces(),
|
return new UnionAddressSetView(getActiveMemorySpaces().stream()
|
||||||
m -> m.getRegionsAddressSetWith(snap, predicate)));
|
.map(m -> m.getRegionsAddressSetWith(snap, predicate))
|
||||||
|
.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -298,15 +298,17 @@ public class DBTraceMemoryManager extends AbstractDBTraceSpaceBasedManager<DBTra
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AddressSetView getAddressesWithState(long snap, Predicate<TraceMemoryState> predicate) {
|
public AddressSetView getAddressesWithState(long snap, Predicate<TraceMemoryState> predicate) {
|
||||||
return new UnionAddressSetView(Collections2.transform(getActiveMemorySpaces(),
|
return new UnionAddressSetView(getActiveMemorySpaces().stream()
|
||||||
m -> m.getAddressesWithState(snap, predicate)));
|
.map(m -> m.getAddressesWithState(snap, predicate))
|
||||||
|
.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public AddressSetView getAddressesWithState(Lifespan lifespan,
|
public AddressSetView getAddressesWithState(Lifespan lifespan,
|
||||||
Predicate<TraceMemoryState> predicate) {
|
Predicate<TraceMemoryState> predicate) {
|
||||||
return new UnionAddressSetView(Collections2.transform(getActiveMemorySpaces(),
|
return new UnionAddressSetView(getActiveMemorySpaces().stream()
|
||||||
m -> m.getAddressesWithState(lifespan, predicate)));
|
.map(m -> m.getAddressesWithState(lifespan, predicate))
|
||||||
|
.toList());
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -23,9 +23,6 @@ import java.util.Map.Entry;
|
||||||
import java.util.concurrent.locks.ReadWriteLock;
|
import java.util.concurrent.locks.ReadWriteLock;
|
||||||
import java.util.function.Predicate;
|
import java.util.function.Predicate;
|
||||||
|
|
||||||
import com.google.common.cache.CacheBuilder;
|
|
||||||
import com.google.common.cache.RemovalNotification;
|
|
||||||
|
|
||||||
import db.DBHandle;
|
import db.DBHandle;
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
import ghidra.program.model.mem.MemBuffer;
|
import ghidra.program.model.mem.MemBuffer;
|
||||||
|
@ -47,6 +44,7 @@ import ghidra.util.*;
|
||||||
import ghidra.util.AddressIteratorAdapter;
|
import ghidra.util.AddressIteratorAdapter;
|
||||||
import ghidra.util.database.*;
|
import ghidra.util.database.*;
|
||||||
import ghidra.util.database.spatial.rect.Rectangle2DDirection;
|
import ghidra.util.database.spatial.rect.Rectangle2DDirection;
|
||||||
|
import ghidra.util.datastruct.FixedSizeHashMap;
|
||||||
import ghidra.util.exception.DuplicateNameException;
|
import ghidra.util.exception.DuplicateNameException;
|
||||||
import ghidra.util.exception.VersionException;
|
import ghidra.util.exception.VersionException;
|
||||||
import ghidra.util.task.TaskMonitor;
|
import ghidra.util.task.TaskMonitor;
|
||||||
|
@ -74,24 +72,16 @@ public class DBTraceMemorySpace
|
||||||
protected final DBTraceAddressSnapRangePropertyMapSpace<DBTraceMemoryRegion, DBTraceMemoryRegion> regionMapSpace;
|
protected final DBTraceAddressSnapRangePropertyMapSpace<DBTraceMemoryRegion, DBTraceMemoryRegion> regionMapSpace;
|
||||||
protected final DBCachedObjectIndex<String, DBTraceMemoryRegion> regionsByPath;
|
protected final DBCachedObjectIndex<String, DBTraceMemoryRegion> regionsByPath;
|
||||||
protected final Collection<TraceMemoryRegion> regionView;
|
protected final Collection<TraceMemoryRegion> regionView;
|
||||||
protected final Map<DBTraceMemoryRegion, DBTraceMemoryRegion> regionCache = CacheBuilder
|
protected final Map<DBTraceMemoryRegion, DBTraceMemoryRegion> regionCache =
|
||||||
.newBuilder()
|
new FixedSizeHashMap<>(10);
|
||||||
.removalListener(this::regionCacheEntryRemoved)
|
|
||||||
.maximumSize(10)
|
|
||||||
.build()
|
|
||||||
.asMap();
|
|
||||||
|
|
||||||
protected final DBTraceAddressSnapRangePropertyMapSpace<TraceMemoryState, DBTraceMemoryStateEntry> stateMapSpace;
|
protected final DBTraceAddressSnapRangePropertyMapSpace<TraceMemoryState, DBTraceMemoryStateEntry> stateMapSpace;
|
||||||
|
|
||||||
protected final DBCachedObjectStore<DBTraceMemoryBufferEntry> bufferStore;
|
protected final DBCachedObjectStore<DBTraceMemoryBufferEntry> bufferStore;
|
||||||
protected final DBCachedObjectStore<DBTraceMemoryBlockEntry> blockStore;
|
protected final DBCachedObjectStore<DBTraceMemoryBlockEntry> blockStore;
|
||||||
protected final DBCachedObjectIndex<OffsetSnap, DBTraceMemoryBlockEntry> blocksByOffset;
|
protected final DBCachedObjectIndex<OffsetSnap, DBTraceMemoryBlockEntry> blocksByOffset;
|
||||||
protected final Map<OffsetSnap, DBTraceMemoryBlockEntry> blockCacheMostRecent = CacheBuilder
|
protected final Map<OffsetSnap, DBTraceMemoryBlockEntry> blockCacheMostRecent =
|
||||||
.newBuilder()
|
new FixedSizeHashMap<>(10);
|
||||||
.removalListener(this::blockCacheEntryRemoved)
|
|
||||||
.maximumSize(10)
|
|
||||||
.build()
|
|
||||||
.asMap();
|
|
||||||
|
|
||||||
protected final DBTraceTimeViewport viewport;
|
protected final DBTraceTimeViewport viewport;
|
||||||
|
|
||||||
|
@ -146,16 +136,6 @@ public class DBTraceMemorySpace
|
||||||
return lock;
|
return lock;
|
||||||
}
|
}
|
||||||
|
|
||||||
private void regionCacheEntryRemoved(
|
|
||||||
RemovalNotification<DBTraceMemoryRegion, DBTraceMemoryRegion> rn) {
|
|
||||||
// Nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
private void blockCacheEntryRemoved(
|
|
||||||
RemovalNotification<OffsetSnap, DBTraceMemoryBlockEntry> rn) {
|
|
||||||
// Nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Trace getTrace() {
|
public Trace getTrace() {
|
||||||
return trace;
|
return trace;
|
||||||
|
|
|
@ -18,9 +18,7 @@ package ghidra.trace.database.program;
|
||||||
import java.nio.ByteBuffer;
|
import java.nio.ByteBuffer;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import com.google.common.cache.CacheBuilder;
|
import org.apache.commons.collections4.IteratorUtils;
|
||||||
import com.google.common.cache.RemovalNotification;
|
|
||||||
import com.google.common.collect.Iterators;
|
|
||||||
|
|
||||||
import generic.NestedIterator;
|
import generic.NestedIterator;
|
||||||
import ghidra.program.database.ProgramDB;
|
import ghidra.program.database.ProgramDB;
|
||||||
|
@ -51,6 +49,7 @@ import ghidra.trace.model.symbol.TraceFunctionSymbol;
|
||||||
import ghidra.trace.util.*;
|
import ghidra.trace.util.*;
|
||||||
import ghidra.util.*;
|
import ghidra.util.*;
|
||||||
import ghidra.util.AddressIteratorAdapter;
|
import ghidra.util.AddressIteratorAdapter;
|
||||||
|
import ghidra.util.datastruct.WeakValueHashMap;
|
||||||
import ghidra.util.exception.*;
|
import ghidra.util.exception.*;
|
||||||
import ghidra.util.task.TaskMonitor;
|
import ghidra.util.task.TaskMonitor;
|
||||||
|
|
||||||
|
@ -84,12 +83,7 @@ public abstract class AbstractDBTraceProgramViewListing implements TraceProgramV
|
||||||
new HashMap<>();
|
new HashMap<>();
|
||||||
|
|
||||||
protected final Map<AddressSnap, UndefinedDBTraceData> undefinedCache =
|
protected final Map<AddressSnap, UndefinedDBTraceData> undefinedCache =
|
||||||
CacheBuilder.newBuilder()
|
new WeakValueHashMap<>();
|
||||||
.removalListener(
|
|
||||||
this::undefinedRemovedFromCache)
|
|
||||||
.weakValues()
|
|
||||||
.build()
|
|
||||||
.asMap();
|
|
||||||
|
|
||||||
public AbstractDBTraceProgramViewListing(DBTraceProgramView program,
|
public AbstractDBTraceProgramViewListing(DBTraceProgramView program,
|
||||||
TraceCodeOperations codeOperations) {
|
TraceCodeOperations codeOperations) {
|
||||||
|
@ -101,11 +95,6 @@ public abstract class AbstractDBTraceProgramViewListing implements TraceProgramV
|
||||||
this.rootModule = new DBTraceProgramViewRootModule(this);
|
this.rootModule = new DBTraceProgramViewRootModule(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void undefinedRemovedFromCache(
|
|
||||||
RemovalNotification<AddressSnap, UndefinedDBTraceData> rn) {
|
|
||||||
// Do nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public TraceProgramView getProgram() {
|
public TraceProgramView getProgram() {
|
||||||
return program;
|
return program;
|
||||||
|
@ -165,7 +154,7 @@ public abstract class AbstractDBTraceProgramViewListing implements TraceProgramV
|
||||||
|
|
||||||
protected <T extends TraceCodeUnit> Iterator<T> getTopCodeIterator(
|
protected <T extends TraceCodeUnit> Iterator<T> getTopCodeIterator(
|
||||||
java.util.function.Function<Long, Iterator<T>> iterFunc, boolean forward) {
|
java.util.function.Function<Long, Iterator<T>> iterFunc, boolean forward) {
|
||||||
return Iterators.filter(
|
return IteratorUtils.filteredIterator(
|
||||||
program.viewport.mergedIterator(iterFunc, getUnitComparator(forward)),
|
program.viewport.mergedIterator(iterFunc, getUnitComparator(forward)),
|
||||||
cu -> program.isCodeVisible(cu, cu.getLifespan()));
|
cu -> program.isCodeVisible(cu, cu.getLifespan()));
|
||||||
}
|
}
|
||||||
|
@ -239,16 +228,17 @@ public abstract class AbstractDBTraceProgramViewListing implements TraceProgramV
|
||||||
defStart = defUnit.getMinAddress();
|
defStart = defUnit.getMinAddress();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Iterator<AddressRange> defIter = Iterators.transform(
|
Iterator<AddressRange> defIter = IteratorUtils.transformedIterator(
|
||||||
getDefinedUnitIterator(defStart, forward), u -> u.getRange());
|
getDefinedUnitIterator(defStart, forward), u -> u.getRange());
|
||||||
AddressRangeIterator undefIter =
|
AddressRangeIterator undefIter =
|
||||||
AddressRangeIterators.subtract(set.iterator(forward), defIter, start, forward);
|
AddressRangeIterators.subtract(set.iterator(forward), defIter, start, forward);
|
||||||
AddressIteratorAdapter undefAddrIter = new AddressIteratorAdapter(undefIter, forward);
|
AddressIteratorAdapter undefAddrIter = new AddressIteratorAdapter(undefIter, forward);
|
||||||
return Iterators.transform(undefAddrIter.iterator(), a -> doCreateUndefinedUnit(a));
|
return IteratorUtils.transformedIterator(undefAddrIter.iterator(),
|
||||||
|
a -> doCreateUndefinedUnit(a));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected AddressRangeIterator getUndefinedRangeIterator(AddressSetView set, boolean forward) {
|
protected AddressRangeIterator getUndefinedRangeIterator(AddressSetView set, boolean forward) {
|
||||||
Iterator<AddressRange> defIter = Iterators.transform(
|
Iterator<AddressRange> defIter = IteratorUtils.transformedIterator(
|
||||||
getDefinedUnitIterator(set, forward), u -> u.getRange());
|
getDefinedUnitIterator(set, forward), u -> u.getRange());
|
||||||
return AddressRangeIterators.subtract(set.iterator(forward), defIter,
|
return AddressRangeIterators.subtract(set.iterator(forward), defIter,
|
||||||
forward ? set.getMinAddress() : set.getMaxAddress(), forward);
|
forward ? set.getMinAddress() : set.getMaxAddress(), forward);
|
||||||
|
@ -274,7 +264,8 @@ public abstract class AbstractDBTraceProgramViewListing implements TraceProgramV
|
||||||
protected Iterator<TraceData> getUndefinedDataIterator(AddressSetView set, boolean forward) {
|
protected Iterator<TraceData> getUndefinedDataIterator(AddressSetView set, boolean forward) {
|
||||||
AddressRangeIterator undefIter = getUndefinedRangeIterator(set, forward);
|
AddressRangeIterator undefIter = getUndefinedRangeIterator(set, forward);
|
||||||
AddressIteratorAdapter undefAddrIter = new AddressIteratorAdapter(undefIter, forward);
|
AddressIteratorAdapter undefAddrIter = new AddressIteratorAdapter(undefIter, forward);
|
||||||
return Iterators.transform(undefAddrIter.iterator(), a -> doCreateUndefinedUnit(a));
|
return IteratorUtils.transformedIterator(undefAddrIter.iterator(),
|
||||||
|
a -> doCreateUndefinedUnit(a));
|
||||||
}
|
}
|
||||||
|
|
||||||
protected Iterator<TraceCodeUnit> getCodeUnitIterator(AddressSetView set, boolean forward) {
|
protected Iterator<TraceCodeUnit> getCodeUnitIterator(AddressSetView set, boolean forward) {
|
||||||
|
|
|
@ -21,8 +21,6 @@ import java.nio.ByteBuffer;
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
import java.util.function.Consumer;
|
import java.util.function.Consumer;
|
||||||
|
|
||||||
import com.google.common.cache.RemovalNotification;
|
|
||||||
|
|
||||||
import ghidra.framework.store.LockException;
|
import ghidra.framework.store.LockException;
|
||||||
import ghidra.program.database.mem.*;
|
import ghidra.program.database.mem.*;
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
|
@ -57,16 +55,6 @@ public abstract class AbstractDBTraceProgramViewMemory
|
||||||
setSnap(program.snap);
|
setSnap(program.snap);
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void regionBlockRemoved(
|
|
||||||
RemovalNotification<TraceMemoryRegion, DBTraceProgramViewMemoryRegionBlock> rn) {
|
|
||||||
// Nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
protected void spaceBlockRemoved(
|
|
||||||
RemovalNotification<AddressSpace, DBTraceProgramViewMemorySpaceBlock> rn) {
|
|
||||||
// Nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
protected abstract void recomputeAddressSet();
|
protected abstract void recomputeAddressSet();
|
||||||
|
|
||||||
protected void forPhysicalSpaces(Consumer<AddressSpace> consumer) {
|
protected void forPhysicalSpaces(Consumer<AddressSpace> consumer) {
|
||||||
|
|
|
@ -23,8 +23,6 @@ import javax.swing.Icon;
|
||||||
|
|
||||||
import org.apache.commons.collections4.IteratorUtils;
|
import org.apache.commons.collections4.IteratorUtils;
|
||||||
|
|
||||||
import com.google.common.collect.Iterators;
|
|
||||||
|
|
||||||
import generic.NestedIterator;
|
import generic.NestedIterator;
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
import ghidra.program.model.listing.Bookmark;
|
import ghidra.program.model.listing.Bookmark;
|
||||||
|
@ -283,6 +281,7 @@ public class DBTraceProgramViewBookmarkManager implements TraceProgramViewBookma
|
||||||
* A less restrictive casting of
|
* A less restrictive casting of
|
||||||
* {@link IteratorUtils#filteredIterator(Iterator, org.apache.commons.collections4.Predicate)}.
|
* {@link IteratorUtils#filteredIterator(Iterator, org.apache.commons.collections4.Predicate)}.
|
||||||
*
|
*
|
||||||
|
* <p>
|
||||||
* This one understands that the predicate will be testing things of the (possibly
|
* This one understands that the predicate will be testing things of the (possibly
|
||||||
* more-specific) type of elements in the original iterator, not that of the returned iterator.
|
* more-specific) type of elements in the original iterator, not that of the returned iterator.
|
||||||
*
|
*
|
||||||
|
@ -293,7 +292,7 @@ public class DBTraceProgramViewBookmarkManager implements TraceProgramViewBookma
|
||||||
@SuppressWarnings("unchecked")
|
@SuppressWarnings("unchecked")
|
||||||
protected static <T, U extends T> Iterator<T> filteredIterator(Iterator<U> it,
|
protected static <T, U extends T> Iterator<T> filteredIterator(Iterator<U> it,
|
||||||
Predicate<? super U> predicate) {
|
Predicate<? super U> predicate) {
|
||||||
return (Iterator<T>) Iterators.filter(it, e -> predicate.test(e));
|
return (Iterator<T>) IteratorUtils.filteredIterator(it, e -> predicate.test(e));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -17,9 +17,7 @@ package ghidra.trace.database.program;
|
||||||
|
|
||||||
import java.util.*;
|
import java.util.*;
|
||||||
|
|
||||||
import com.google.common.cache.CacheBuilder;
|
import org.apache.commons.collections4.IteratorUtils;
|
||||||
import com.google.common.cache.RemovalNotification;
|
|
||||||
import com.google.common.collect.Iterators;
|
|
||||||
|
|
||||||
import ghidra.program.model.address.*;
|
import ghidra.program.model.address.*;
|
||||||
import ghidra.program.model.symbol.Equate;
|
import ghidra.program.model.symbol.Equate;
|
||||||
|
@ -30,6 +28,7 @@ import ghidra.trace.model.Lifespan;
|
||||||
import ghidra.trace.model.listing.TraceCodeUnit;
|
import ghidra.trace.model.listing.TraceCodeUnit;
|
||||||
import ghidra.util.IntersectionAddressSetView;
|
import ghidra.util.IntersectionAddressSetView;
|
||||||
import ghidra.util.LockHold;
|
import ghidra.util.LockHold;
|
||||||
|
import ghidra.util.datastruct.WeakValueHashMap;
|
||||||
import ghidra.util.exception.*;
|
import ghidra.util.exception.*;
|
||||||
import ghidra.util.task.TaskMonitor;
|
import ghidra.util.task.TaskMonitor;
|
||||||
|
|
||||||
|
@ -37,18 +36,13 @@ public class DBTraceProgramViewEquateTable implements EquateTable {
|
||||||
protected final DBTraceProgramView program;
|
protected final DBTraceProgramView program;
|
||||||
protected final DBTraceEquateManager equateManager;
|
protected final DBTraceEquateManager equateManager;
|
||||||
|
|
||||||
protected final Map<DBTraceEquate, DBTraceProgramViewEquate> cache =
|
protected final Map<DBTraceEquate, DBTraceProgramViewEquate> cache = new WeakValueHashMap<>();
|
||||||
CacheBuilder.newBuilder().removalListener(this::equateRemoved).weakValues().build().asMap();
|
|
||||||
|
|
||||||
public DBTraceProgramViewEquateTable(DBTraceProgramView program) {
|
public DBTraceProgramViewEquateTable(DBTraceProgramView program) {
|
||||||
this.program = program;
|
this.program = program;
|
||||||
this.equateManager = program.trace.getEquateManager();
|
this.equateManager = program.trace.getEquateManager();
|
||||||
}
|
}
|
||||||
|
|
||||||
private void equateRemoved(RemovalNotification<DBTraceEquate, DBTraceProgramViewEquate> rn) {
|
|
||||||
// Nothing
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Equate createEquate(String name, long value)
|
public Equate createEquate(String name, long value)
|
||||||
throws DuplicateNameException, InvalidInputException {
|
throws DuplicateNameException, InvalidInputException {
|
||||||
|
@ -77,7 +71,8 @@ public class DBTraceProgramViewEquateTable implements EquateTable {
|
||||||
@Override
|
@Override
|
||||||
public void deleteAddressRange(Address start, Address end, TaskMonitor monitor)
|
public void deleteAddressRange(Address start, Address end, TaskMonitor monitor)
|
||||||
throws CancelledException {
|
throws CancelledException {
|
||||||
equateManager.clearReferences(Lifespan.nowOn(program.snap), new AddressRangeImpl(start, end),
|
equateManager.clearReferences(Lifespan.nowOn(program.snap),
|
||||||
|
new AddressRangeImpl(start, end),
|
||||||
monitor);
|
monitor);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -161,7 +156,8 @@ public class DBTraceProgramViewEquateTable implements EquateTable {
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public Iterator<Equate> getEquates() {
|
public Iterator<Equate> getEquates() {
|
||||||
return Iterators.transform(equateManager.getAll().iterator(), e -> doGetViewEquate(e));
|
return IteratorUtils.transformedIterator(equateManager.getAll().iterator(),
|
||||||
|
e -> doGetViewEquate(e));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue