Merge remote-tracking branch 'origin/GP-1545_Dan_noGuavaCache--SQUASHED'

Conflicts:
	Ghidra/Debug/Debugger-agent-dbgmodel/src/main/java/agent/dbgmodel/model/impl/DelegateDbgModel2TargetObject.java
This commit is contained in:
Ryan Kurtz 2023-02-28 13:06:36 -05:00
commit 2b20e32a78
142 changed files with 1135 additions and 1939 deletions

View file

@ -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,

View file

@ -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) {

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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);
} }

View file

@ -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,

View file

@ -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<>();
} }
}; };

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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) {

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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) {

View file

@ -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,

View file

@ -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) {

View file

@ -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,

View file

@ -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) {

View file

@ -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) {

View file

@ -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,

View file

@ -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,

View file

@ -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) {

View file

@ -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,

View file

@ -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) {

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -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,

View file

@ -18,59 +18,19 @@ package agent.dbgmodel.model.impl;
import java.lang.invoke.MethodHandles; import java.lang.invoke.MethodHandles;
import java.lang.ref.Cleaner; import java.lang.ref.Cleaner;
import java.lang.ref.Cleaner.Cleanable; import java.lang.ref.Cleaner.Cleanable;
import java.util.ArrayList; import java.util.*;
import java.util.Collections;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import agent.dbgeng.manager.DbgCause; import agent.dbgeng.manager.*;
import agent.dbgeng.manager.DbgEventsListener;
import agent.dbgeng.manager.DbgProcess;
import agent.dbgeng.manager.DbgReason;
import agent.dbgeng.manager.DbgState;
import agent.dbgeng.manager.DbgStateListener;
import agent.dbgeng.manager.DbgThread;
import agent.dbgeng.manager.breakpoint.DbgBreakpointInfo; import agent.dbgeng.manager.breakpoint.DbgBreakpointInfo;
import agent.dbgeng.manager.impl.DbgManagerImpl; import agent.dbgeng.manager.impl.DbgManagerImpl;
import agent.dbgeng.model.iface1.DbgModelTargetAccessConditioned; import agent.dbgeng.model.iface1.*;
import agent.dbgeng.model.iface1.DbgModelTargetBptHelper; import agent.dbgeng.model.iface2.*;
import agent.dbgeng.model.iface1.DbgModelTargetExecutionStateful;
import agent.dbgeng.model.iface1.DbgModelTargetMethod;
import agent.dbgeng.model.iface2.DbgModelTargetAvailable;
import agent.dbgeng.model.iface2.DbgModelTargetAvailableContainer;
import agent.dbgeng.model.iface2.DbgModelTargetBreakpointContainer;
import agent.dbgeng.model.iface2.DbgModelTargetBreakpointSpec;
import agent.dbgeng.model.iface2.DbgModelTargetDebugContainer;
import agent.dbgeng.model.iface2.DbgModelTargetMemoryContainer;
import agent.dbgeng.model.iface2.DbgModelTargetModule;
import agent.dbgeng.model.iface2.DbgModelTargetModuleContainer;
import agent.dbgeng.model.iface2.DbgModelTargetObject;
import agent.dbgeng.model.iface2.DbgModelTargetProcess;
import agent.dbgeng.model.iface2.DbgModelTargetProcessContainer;
import agent.dbgeng.model.iface2.DbgModelTargetRegister;
import agent.dbgeng.model.iface2.DbgModelTargetRegisterBank;
import agent.dbgeng.model.iface2.DbgModelTargetRegisterContainer;
import agent.dbgeng.model.iface2.DbgModelTargetSession;
import agent.dbgeng.model.iface2.DbgModelTargetSessionAttributes;
import agent.dbgeng.model.iface2.DbgModelTargetSessionContainer;
import agent.dbgeng.model.iface2.DbgModelTargetStack;
import agent.dbgeng.model.iface2.DbgModelTargetStackFrame;
import agent.dbgeng.model.iface2.DbgModelTargetTTD;
import agent.dbgeng.model.iface2.DbgModelTargetThread;
import agent.dbgeng.model.iface2.DbgModelTargetThreadContainer;
import agent.dbgmodel.dbgmodel.main.ModelObject; import agent.dbgmodel.dbgmodel.main.ModelObject;
import agent.dbgmodel.jna.dbgmodel.DbgModelNative.ModelObjectKind; import agent.dbgmodel.jna.dbgmodel.DbgModelNative.ModelObjectKind;
import ghidra.dbg.target.TargetAccessConditioned; import ghidra.dbg.target.*;
import ghidra.dbg.target.TargetBreakpointSpec.TargetBreakpointAction; import ghidra.dbg.target.TargetBreakpointSpec.TargetBreakpointAction;
import ghidra.dbg.target.TargetExecutionStateful;
import ghidra.dbg.target.TargetObject;
import ghidra.dbg.target.TargetRegisterBank;
import ghidra.dbg.target.TargetRegisterContainer;
import ghidra.dbg.target.TargetStack;
import ghidra.dbg.target.TargetStackFrame;
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 //
@ -198,12 +158,13 @@ public class DelegateDbgModel2TargetObject extends DbgModel2TargetObjectImpl imp
protected final Cleanable cleanable; protected final Cleanable cleanable;
private boolean breakpointEnabled; private boolean breakpointEnabled;
private final ListenerSet<TargetBreakpointAction> breakpointActions = new ListenerSet<>(
TargetBreakpointAction.class) { private final ListenerSet<TargetBreakpointAction> breakpointActions =
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<>();
}; }
}; };
// Extending DefaultTargetObject may spare you from listeners, elements, and // Extending DefaultTargetObject may spare you from listeners, elements, and

View file

@ -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

View file

@ -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<>();
}; };
}; };

View file

@ -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() {

View file

@ -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.*;

View file

@ -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<>();
}; };
}; };

View file

@ -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<>();
}; };
}; };

View file

@ -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<>();
}; };
}; };
} }

View file

@ -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) {
if (!super.removeEldestEntry(eldest)) {
return false;
}
String message = "Command with sequence number " + eldest.getKey() +
" evicted";
Msg.error(this, message); Msg.error(this, message);
AsyncUtils.FRAMEWORK_EXECUTOR.execute(() -> { AsyncUtils.FRAMEWORK_EXECUTOR.execute(() -> {
rn.getValue().completeExceptionally(new TimeoutException(message)); eldest.getValue().completeExceptionally(new TimeoutException(message));
}); });
return true;
} }
cacheMonitor.contact(null); };
} }
private void cacheSettled(Void __) { private void cacheSettled(Void __) {

View file

@ -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<>();
} }
}; };

View file

@ -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() {

View file

@ -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

View file

@ -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

View file

@ -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());
} }
/** /**

View file

@ -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
*/ */

View file

@ -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);
} }
} }

View file

@ -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;

View file

@ -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) {

View file

@ -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);

View file

@ -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;
} }
} }
} }

View file

@ -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;
} }

View file

@ -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

View file

@ -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();
} }
} }

View file

@ -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) {

View file

@ -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);
} }

View file

@ -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

View file

@ -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

View file

@ -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);
} }

View file

@ -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

View file

@ -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;

View file

@ -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) {

View file

@ -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) {

View file

@ -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

View file

@ -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