public static IntPtr CreateTrampoline(Module module, ulong codeAdr, uint key, DarksVMFuncSig sig, uint sigId) { var dm = trampolines[codeAdr]; if (dm != null) { return(getDesc((DynamicMethod)dm).GetFunctionPointer()); } lock (trampolines) { dm = (DynamicMethod)trampolines[codeAdr]; if (dm != null) { return(getDesc((DynamicMethod)dm).GetFunctionPointer()); } if (ShouldBeTyped(sig)) { dm = CreateTrampolineTyped(DarksVMInstance.GetModuleId(module), codeAdr, key, sig, sigId); } else { dm = CreateTrampolineNormal(DarksVMInstance.GetModuleId(module), codeAdr, key, sig, sigId); } trampolines[codeAdr] = dm; return(getDesc((DynamicMethod)dm).GetFunctionPointer()); } }
public DarksVMContext(DarksVMInstance inst) { this.Instance = inst; }