[refactor] 重构methodPointer,微小调整了桥接函数生成
parent
2899d13d60
commit
823877275c
|
@ -1,4 +1,4 @@
|
||||||
#include "MethodBridge.h"
|
#include "MethodBridge.h"
|
||||||
|
|
||||||
#include <codegen/il2cpp-codegen-metadata.h>
|
#include <codegen/il2cpp-codegen-metadata.h>
|
||||||
#include "vm/ClassInlines.h"
|
#include "vm/ClassInlines.h"
|
||||||
|
@ -13,7 +13,6 @@
|
||||||
#include "InstrinctDef.h"
|
#include "InstrinctDef.h"
|
||||||
|
|
||||||
using namespace hybridclr::interpreter;
|
using namespace hybridclr::interpreter;
|
||||||
using hybridclr::GetInterpreterDirectlyCallMethodPointer;
|
|
||||||
|
|
||||||
#if HYBRIDCLR_ABI_ARM_64
|
#if HYBRIDCLR_ABI_ARM_64
|
||||||
//!!!{{INVOKE_STUB
|
//!!!{{INVOKE_STUB
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#include "MethodBridge.h"
|
#include "MethodBridge.h"
|
||||||
|
|
||||||
#include <codegen/il2cpp-codegen-metadata.h>
|
#include <codegen/il2cpp-codegen-metadata.h>
|
||||||
#include "vm/ClassInlines.h"
|
#include "vm/ClassInlines.h"
|
||||||
|
@ -13,7 +13,6 @@
|
||||||
#include "InstrinctDef.h"
|
#include "InstrinctDef.h"
|
||||||
|
|
||||||
using namespace hybridclr::interpreter;
|
using namespace hybridclr::interpreter;
|
||||||
using hybridclr::GetInterpreterDirectlyCallMethodPointer;
|
|
||||||
|
|
||||||
#if HYBRIDCLR_ABI_UNIVERSAL_32
|
#if HYBRIDCLR_ABI_UNIVERSAL_32
|
||||||
//!!!{{INVOKE_STUB
|
//!!!{{INVOKE_STUB
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
#include "MethodBridge.h"
|
#include "MethodBridge.h"
|
||||||
|
|
||||||
#include <codegen/il2cpp-codegen-metadata.h>
|
#include <codegen/il2cpp-codegen-metadata.h>
|
||||||
#include "vm/ClassInlines.h"
|
#include "vm/ClassInlines.h"
|
||||||
|
@ -13,7 +13,6 @@
|
||||||
#include "InstrinctDef.h"
|
#include "InstrinctDef.h"
|
||||||
|
|
||||||
using namespace hybridclr::interpreter;
|
using namespace hybridclr::interpreter;
|
||||||
using hybridclr::GetInterpreterDirectlyCallMethodPointer;
|
|
||||||
|
|
||||||
#if HYBRIDCLR_ABI_UNIVERSAL_64
|
#if HYBRIDCLR_ABI_UNIVERSAL_64
|
||||||
//!!!{{INVOKE_STUB
|
//!!!{{INVOKE_STUB
|
||||||
|
|
|
@ -58,7 +58,7 @@ namespace HybridCLR.Editor.MethodBridge
|
||||||
static void __M2N_{method.CreateCallSigName()}(const MethodInfo* method, uint16_t* argVarIndexs, StackObject* localVarBase, void* ret)
|
static void __M2N_{method.CreateCallSigName()}(const MethodInfo* method, uint16_t* argVarIndexs, StackObject* localVarBase, void* ret)
|
||||||
{{
|
{{
|
||||||
typedef {method.ReturnInfo.Type.GetTypeName()} (*NativeMethod)({paramListStr});
|
typedef {method.ReturnInfo.Type.GetTypeName()} (*NativeMethod)({paramListStr});
|
||||||
{(!method.ReturnInfo.IsVoid ? $"*({method.ReturnInfo.Type.GetTypeName()}*)ret = " : "")}((NativeMethod)(GetInterpreterDirectlyCallMethodPointer(method)))({paramNameListStr});
|
{(!method.ReturnInfo.IsVoid ? $"*({method.ReturnInfo.Type.GetTypeName()}*)ret = " : "")}((NativeMethod)(method->methodPointerCallByInterp))({paramNameListStr});
|
||||||
}}
|
}}
|
||||||
");
|
");
|
||||||
}
|
}
|
||||||
|
|
|
@ -41,7 +41,7 @@ namespace HybridCLR.Editor.MethodBridge
|
||||||
static void __M2N_{method.CreateCallSigName()}(const MethodInfo* method, uint16_t* argVarIndexs, StackObject* localVarBase, void* ret)
|
static void __M2N_{method.CreateCallSigName()}(const MethodInfo* method, uint16_t* argVarIndexs, StackObject* localVarBase, void* ret)
|
||||||
{{
|
{{
|
||||||
typedef {method.ReturnInfo.Type.GetTypeName()} (*NativeMethod)({paramListStr});
|
typedef {method.ReturnInfo.Type.GetTypeName()} (*NativeMethod)({paramListStr});
|
||||||
{(!method.ReturnInfo.IsVoid ? $"*({method.ReturnInfo.Type.GetTypeName()}*)ret = " : "")}((NativeMethod)(GetInterpreterDirectlyCallMethodPointer(method)))({paramNameListStr});
|
{(!method.ReturnInfo.IsVoid ? $"*({method.ReturnInfo.Type.GetTypeName()}*)ret = " : "")}((NativeMethod)(method->methodPointerCallByInterp))({paramNameListStr});
|
||||||
}}
|
}}
|
||||||
");
|
");
|
||||||
}
|
}
|
||||||
|
|
|
@ -39,7 +39,7 @@ namespace HybridCLR.Editor.MethodBridge
|
||||||
static void __M2N_{method.CreateCallSigName()}(const MethodInfo* method, uint16_t* argVarIndexs, StackObject* localVarBase, void* ret)
|
static void __M2N_{method.CreateCallSigName()}(const MethodInfo* method, uint16_t* argVarIndexs, StackObject* localVarBase, void* ret)
|
||||||
{{
|
{{
|
||||||
typedef {method.ReturnInfo.Type.GetTypeName()} (*NativeMethod)({paramListStr});
|
typedef {method.ReturnInfo.Type.GetTypeName()} (*NativeMethod)({paramListStr});
|
||||||
{(!method.ReturnInfo.IsVoid ? $"*({method.ReturnInfo.Type.GetTypeName()}*)ret = " : "")}((NativeMethod)(GetInterpreterDirectlyCallMethodPointer(method)))({paramNameListStr});
|
{(!method.ReturnInfo.IsVoid ? $"*({method.ReturnInfo.Type.GetTypeName()}*)ret = " : "")}((NativeMethod)(method->methodPointerCallByInterp))({paramNameListStr});
|
||||||
}}
|
}}
|
||||||
");
|
");
|
||||||
}
|
}
|
||||||
|
|
|
@ -27,12 +27,12 @@ namespace HybridCLR.Editor
|
||||||
public string outputAOTGenericReferenceFile = "HybridCLRData/Generated/AOTGenericReferences.cs";
|
public string outputAOTGenericReferenceFile = "HybridCLRData/Generated/AOTGenericReferences.cs";
|
||||||
|
|
||||||
[Header("AOT泛型实例化搜索迭代次数")]
|
[Header("AOT泛型实例化搜索迭代次数")]
|
||||||
public int maxGenericReferenceIteration = 4;
|
public int maxGenericReferenceIteration = 10;
|
||||||
|
|
||||||
[Header("预留MonoPInvokeCallbackAttribute函数个数")]
|
[Header("预留MonoPInvokeCallbackAttribute函数个数")]
|
||||||
public int ReversePInvokeWrapperCount = 10;
|
public int ReversePInvokeWrapperCount = 10;
|
||||||
|
|
||||||
[Header("MethodBridge泛型搜索迭代次数")]
|
[Header("MethodBridge泛型搜索迭代次数")]
|
||||||
public int maxMethodBridgeGenericIteration = 4;
|
public int maxMethodBridgeGenericIteration = 10;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "com.focus-creative-games.hybridclr_unity",
|
"name": "com.focus-creative-games.hybridclr_unity",
|
||||||
"version": "0.3.9",
|
"version": "0.4.0",
|
||||||
"displayName": "HybridCLR",
|
"displayName": "HybridCLR",
|
||||||
"description": "Unity package for HybridCLR. It includes editor and runtime scripts and assets for HybridCLR",
|
"description": "Unity package for HybridCLR. It includes editor and runtime scripts and assets for HybridCLR",
|
||||||
"category": "Runtime",
|
"category": "Runtime",
|
||||||
|
|
Loading…
Reference in New Issue