[add] first
This commit is contained in:
25
Libraries/libil2cpp/include/vm-utils/BlobReader.h
Normal file
25
Libraries/libil2cpp/include/vm-utils/BlobReader.h
Normal file
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
#include "il2cpp-class-internals.h"
|
||||
#include "../il2cpp-blob.h"
|
||||
|
||||
namespace il2cpp
|
||||
{
|
||||
namespace utils
|
||||
{
|
||||
class BlobReader
|
||||
{
|
||||
public:
|
||||
// internal
|
||||
static bool GetConstantValueFromBlob(const Il2CppImage* image, Il2CppTypeEnum type, const char *blob, void *value);
|
||||
// This overload move the blob pointer as it reads
|
||||
static bool GetConstantValueFromBlob(const Il2CppImage* image, Il2CppTypeEnum type, const char **blob, void *value, bool deserializeManagedObjects);
|
||||
|
||||
// Reads an encoded Il2CppTypeEnum
|
||||
// For IL2CPP_TYPE_ENUM, the underlying Il2CppTypeEnum will be returned and klass will be the actual enum class
|
||||
// For IL2CPP_TYPE_SZARRAY, klass will just be System.Array
|
||||
// For all other Il2CppTypeEnum klass will the the correct Il2CppClass
|
||||
static Il2CppTypeEnum ReadEncodedTypeEnum(const Il2CppImage* image, const char** blob, Il2CppClass** klass);
|
||||
};
|
||||
} /* utils */
|
||||
} /* il2cpp */
|
||||
23
Libraries/libil2cpp/include/vm-utils/DebugSymbolReader.h
Normal file
23
Libraries/libil2cpp/include/vm-utils/DebugSymbolReader.h
Normal file
@@ -0,0 +1,23 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
|
||||
namespace il2cpp
|
||||
{
|
||||
namespace utils
|
||||
{
|
||||
struct SourceLocation
|
||||
{
|
||||
const char* filePath;
|
||||
uint32_t lineNumber;
|
||||
};
|
||||
|
||||
class DebugSymbolReader
|
||||
{
|
||||
public:
|
||||
static bool LoadDebugSymbols();
|
||||
static bool GetSourceLocation(void* nativeInsturctionPointer, SourceLocation& sourceLocation);
|
||||
static bool DebugSymbolsAvailable();
|
||||
};
|
||||
} /* namespace utils */
|
||||
} /* namespace il2cpp */
|
||||
234
Libraries/libil2cpp/include/vm-utils/Debugger.h
Normal file
234
Libraries/libil2cpp/include/vm-utils/Debugger.h
Normal file
@@ -0,0 +1,234 @@
|
||||
#pragma once
|
||||
#include "il2cpp-class-internals.h"
|
||||
|
||||
struct Il2CppSequencePoint;
|
||||
struct Il2CppCatchPoint;
|
||||
struct Il2CppSequencePointExecutionContext;
|
||||
struct Il2CppThreadUnwindState;
|
||||
|
||||
typedef void(*DebugInfoInitialization)();
|
||||
typedef void(*ThreadCallback)(void*, uintptr_t);
|
||||
|
||||
typedef struct Il2CppSequencePointExecutionContext
|
||||
{
|
||||
const MethodInfo* method;
|
||||
void** thisArg;
|
||||
void** params;
|
||||
void** locals;
|
||||
Il2CppSequencePoint* currentSequencePoint;
|
||||
int32_t tryId;
|
||||
|
||||
#ifdef __cplusplus
|
||||
Il2CppSequencePointExecutionContext(const MethodInfo* method, void** thisArg, void** params, void** locals);
|
||||
~Il2CppSequencePointExecutionContext();
|
||||
#endif //__cplusplus
|
||||
} Il2CppSequencePointExecutionContext;
|
||||
|
||||
|
||||
typedef struct Il2CppThreadUnwindState
|
||||
{
|
||||
Il2CppSequencePointExecutionContext** executionContexts;
|
||||
uint32_t frameCount;
|
||||
uint32_t frameCapacity;
|
||||
} Il2CppThreadUnwindState;
|
||||
|
||||
typedef int32_t (*Il2CppMonoInternalStackWalk) (void /*MonoStackFrameInfo*/ *frame, void /*MonoContext*/ *ctx, void* data);
|
||||
|
||||
struct Il2CppMonoInterpCallbacks
|
||||
{
|
||||
void* (*create_method_pointer) (MethodInfo *method, void /*MonoError*/ *error);
|
||||
Il2CppObject* (*runtime_invoke) (MethodInfo *method, void *obj, void **params, Il2CppObject **exc, void /*MonoError*/ *error);
|
||||
void (*init_delegate) (Il2CppDelegate *del);
|
||||
#ifndef DISABLE_REMOTING
|
||||
void* (*get_remoting_invoke) (void* imethod, void /*MonoError*/ *error);
|
||||
#endif
|
||||
void* (*create_trampoline) (Il2CppDomain *domain, MethodInfo *method, void /*MonoError*/ *error);
|
||||
void (*walk_stack_with_ctx) (Il2CppMonoInternalStackWalk func, void /*MonoContext*/ *ctx, int32_t /*MonoUnwindOptions*/ options, void *user_data);
|
||||
void (*set_resume_state) (void /*MonoJitTlsData*/ *jit_tls, Il2CppException *ex, void /*MonoJitExceptionInfo*/ *ei, Il2CppSequencePointExecutionContext* interp_frame, void* handler_ip);
|
||||
int32_t (*run_finally) (void /*MonoStackFrameInfo*/ *frame, int clause_index, void* handler_ip);
|
||||
int32_t (*run_filter) (void /*MonoStackFrameInfo*/ *frame, Il2CppException *ex, int clause_index, void* handler_ip);
|
||||
void (*frame_iter_init) (void /*MonoInterpStackIter*/ *iter, void* interp_exit_data);
|
||||
int32_t (*frame_iter_next) (void /*MonoInterpStackIter*/ *iter, void /*MonoStackFrameInfo*/ *frame);
|
||||
void* /*MonoJitInfo*/ (*find_jit_info) (Il2CppDomain *domain, MethodInfo *method);
|
||||
void (*set_breakpoint) (void /*MonoJitInfo*/ *jinfo, void* ip);
|
||||
void (*clear_breakpoint) (void /*MonoJitInfo*/ *jinfo, void* ip);
|
||||
void* /*MonoJitInfo*/ (*frame_get_jit_info) (Il2CppSequencePointExecutionContext* frame);
|
||||
void* (*frame_get_ip) (Il2CppSequencePointExecutionContext* frame);
|
||||
void* (*frame_get_arg) (Il2CppSequencePointExecutionContext* frame, int pos);
|
||||
void* (*frame_get_local) (Il2CppSequencePointExecutionContext* frame, int pos);
|
||||
void* (*frame_get_this) (Il2CppSequencePointExecutionContext* frame);
|
||||
Il2CppSequencePointExecutionContext* (*frame_get_parent) (Il2CppSequencePointExecutionContext* frame);
|
||||
void (*start_single_stepping) ();
|
||||
void (*stop_single_stepping) ();
|
||||
};
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
int32_t unity_sequence_point_active_entry(Il2CppSequencePoint *seqPoint);
|
||||
int32_t unity_sequence_point_active_exit(Il2CppSequencePoint *seqPoint);
|
||||
extern int32_t g_unity_pause_point_active;
|
||||
}
|
||||
#include <stdint.h>
|
||||
#include "os/Atomic.h"
|
||||
#include "os/ThreadLocalValue.h"
|
||||
|
||||
#undef IsLoggingEnabled
|
||||
|
||||
extern il2cpp::os::ThreadLocalValue s_ExecutionContexts;
|
||||
|
||||
namespace il2cpp
|
||||
{
|
||||
namespace os
|
||||
{
|
||||
class Thread;
|
||||
}
|
||||
namespace utils
|
||||
{
|
||||
class Debugger
|
||||
{
|
||||
public:
|
||||
static void RegisterMetadata(const Il2CppDebuggerMetadataRegistration *data);
|
||||
static void SetAgentOptions(const char* options);
|
||||
static void RegisterTransport(const Il2CppDebuggerTransport* transport);
|
||||
static void Init();
|
||||
static void Start();
|
||||
static void StartDebuggerThread();
|
||||
|
||||
static inline void PushExecutionContext(Il2CppSequencePointExecutionContext* executionContext)
|
||||
{
|
||||
Il2CppThreadUnwindState* unwindState;
|
||||
s_ExecutionContexts.GetValue(reinterpret_cast<void**>(&unwindState));
|
||||
|
||||
if (unwindState->frameCount == unwindState->frameCapacity)
|
||||
GrowFrameCapacity(unwindState);
|
||||
|
||||
unwindState->executionContexts[unwindState->frameCount] = executionContext;
|
||||
unwindState->frameCount++;
|
||||
}
|
||||
|
||||
static inline void PopExecutionContext()
|
||||
{
|
||||
Il2CppThreadUnwindState* unwindState;
|
||||
s_ExecutionContexts.GetValue(reinterpret_cast<void**>(&unwindState));
|
||||
|
||||
IL2CPP_ASSERT(unwindState->frameCount > 0);
|
||||
unwindState->frameCount--;
|
||||
}
|
||||
|
||||
typedef void(*OnBreakPointHitCallback) (Il2CppSequencePoint* sequencePoint);
|
||||
typedef void (*OnPausePointHitCallback) ();
|
||||
static void RegisterCallbacks(OnBreakPointHitCallback breakCallback, OnPausePointHitCallback pauseCallback);
|
||||
static Il2CppThreadUnwindState* GetThreadStatePointer();
|
||||
static void SaveThreadContext(Il2CppThreadUnwindState* context, int frameCountAdjust);
|
||||
static void FreeThreadContext(Il2CppThreadUnwindState* context);
|
||||
static void OnBreakPointHit(Il2CppSequencePoint *sequencePoint);
|
||||
static void OnPausePointHit();
|
||||
static bool IsGlobalBreakpointActive();
|
||||
static bool GetIsDebuggerAttached();
|
||||
static void SetIsDebuggerAttached(bool attached);
|
||||
static bool IsDebuggerThread(os::Thread* thread);
|
||||
static void AllocateThreadLocalData();
|
||||
static void FreeThreadLocalData();
|
||||
static Il2CppSequencePoint* GetSequencePoint(const Il2CppImage* image, size_t id);
|
||||
static Il2CppSequencePoint* GetSequencePoints(const MethodInfo* method, void**iter);
|
||||
static Il2CppSequencePoint* GetSequencePoint(const Il2CppImage* image, Il2CppCatchPoint* cp);
|
||||
static Il2CppCatchPoint* GetCatchPoints(const MethodInfo* method, void**iter);
|
||||
static Il2CppSequencePoint* GetAllSequencePoints(void* *iter);
|
||||
static void HandleException(Il2CppException *exc);
|
||||
static const char** GetTypeSourceFiles(const Il2CppClass *klass, int& count);
|
||||
static void UserBreak();
|
||||
static bool IsLoggingEnabled();
|
||||
static void Log(int level, Il2CppString *category, Il2CppString *message);
|
||||
|
||||
static inline bool IsSequencePointActive(Il2CppSequencePoint *seqPoint)
|
||||
{
|
||||
return il2cpp::os::Atomic::LoadRelaxed(&seqPoint->isActive) || g_unity_pause_point_active;
|
||||
}
|
||||
|
||||
static inline bool IsSequencePointActiveEntry(Il2CppSequencePoint *seqPoint)
|
||||
{
|
||||
return unity_sequence_point_active_entry(seqPoint);
|
||||
}
|
||||
|
||||
static inline bool IsSequencePointActiveExit(Il2CppSequencePoint *seqPoint)
|
||||
{
|
||||
return unity_sequence_point_active_exit(seqPoint);
|
||||
}
|
||||
|
||||
static bool IsPausePointActive();
|
||||
static const MethodInfo* GetSequencePointMethod(const Il2CppImage* image, Il2CppSequencePoint *seqPoint);
|
||||
static const MethodInfo* GetCatchPointMethod(const Il2CppImage* image, Il2CppCatchPoint *catchPoint);
|
||||
|
||||
static inline void CheckSequencePoint(Il2CppSequencePointExecutionContext* executionContext, Il2CppSequencePoint* seqPoint)
|
||||
{
|
||||
if (IsSequencePointActive(seqPoint))
|
||||
{
|
||||
executionContext->currentSequencePoint = seqPoint;
|
||||
OnBreakPointHit(seqPoint);
|
||||
}
|
||||
}
|
||||
|
||||
static inline void CheckSequencePointEntry(Il2CppSequencePointExecutionContext* executionContext, Il2CppSequencePoint* seqPoint)
|
||||
{
|
||||
if (IsSequencePointActiveEntry(seqPoint))
|
||||
{
|
||||
executionContext->currentSequencePoint = seqPoint;
|
||||
OnBreakPointHit(seqPoint);
|
||||
}
|
||||
}
|
||||
|
||||
static inline void CheckSequencePointExit(Il2CppSequencePointExecutionContext* executionContext, Il2CppSequencePoint* seqPoint)
|
||||
{
|
||||
if (IsSequencePointActiveExit(seqPoint))
|
||||
{
|
||||
executionContext->currentSequencePoint = seqPoint;
|
||||
OnBreakPointHit(seqPoint);
|
||||
}
|
||||
}
|
||||
|
||||
static void CheckPausePoint();
|
||||
|
||||
static const char* GetLocalName(const MethodInfo* method, int32_t index);
|
||||
static const Il2CppMethodScope* GetLocalScope(const MethodInfo* method, int32_t index);
|
||||
|
||||
static void GetMethodExecutionContextInfo(const MethodInfo* method, uint32_t* executionContextInfoCount, const Il2CppMethodExecutionContextInfo **executionContextInfo, const Il2CppMethodHeaderInfo **headerInfo, const Il2CppMethodScope **scopes);
|
||||
|
||||
// The context parameter here is really il2cpp::vm::StackFrames*. We don't want to include vm/StackTrace.h in this file,
|
||||
// as this one is included in generated code.
|
||||
static void GetStackFrames(void* context);
|
||||
|
||||
static void AcquireLoaderLock();
|
||||
static void ReleaseLoaderLock();
|
||||
static bool LoaderLockIsOwnedByThisThread();
|
||||
|
||||
static Il2CppMonoInterpCallbacks* GetInterpCallbacks();
|
||||
|
||||
private:
|
||||
static os::ThreadLocalValue s_IsGlobalBreakpointActive;
|
||||
static void InitializeMethodToSequencePointMap();
|
||||
static void InitializeTypeSourceFileMap();
|
||||
static void InitializeMethodToCatchPointMap();
|
||||
static void GrowFrameCapacity(Il2CppThreadUnwindState* unwindState);
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
inline Il2CppSequencePointExecutionContext::Il2CppSequencePointExecutionContext(const MethodInfo* method, void** thisArg, void** params, void** locals)
|
||||
: method(method),
|
||||
thisArg(thisArg),
|
||||
params(params),
|
||||
locals(locals),
|
||||
currentSequencePoint(NULL),
|
||||
tryId(-1)
|
||||
{
|
||||
il2cpp::utils::Debugger::PushExecutionContext(this);
|
||||
}
|
||||
|
||||
inline Il2CppSequencePointExecutionContext::~Il2CppSequencePointExecutionContext()
|
||||
{
|
||||
il2cpp::utils::Debugger::PopExecutionContext();
|
||||
// il2cpp_save_current_thread_context_func_exit();
|
||||
}
|
||||
|
||||
#endif //__cplusplus
|
||||
75
Libraries/libil2cpp/include/vm-utils/Finally.h
Normal file
75
Libraries/libil2cpp/include/vm-utils/Finally.h
Normal file
@@ -0,0 +1,75 @@
|
||||
#pragma once
|
||||
|
||||
struct Il2CppException;
|
||||
namespace il2cpp
|
||||
{
|
||||
namespace utils
|
||||
{
|
||||
NORETURN void RethrowException(Il2CppException* exception);
|
||||
|
||||
template<typename FinallyBlock, bool isFault>
|
||||
struct FinallyHelper
|
||||
{
|
||||
public:
|
||||
inline FinallyHelper(FinallyBlock&& finallyBlock) :
|
||||
m_Exception(nullptr),
|
||||
// static cast to rvalue reference simulates std::move, as we don't want to include <utility> for all generated code
|
||||
m_FinallyBlock(static_cast<FinallyBlock &&>(finallyBlock))
|
||||
{
|
||||
}
|
||||
|
||||
FinallyHelper(const FinallyHelper<FinallyBlock, isFault>&) = delete;
|
||||
FinallyHelper& operator=(const FinallyHelper<FinallyBlock, isFault>&) = delete;
|
||||
|
||||
inline FinallyHelper(FinallyHelper<FinallyBlock, isFault>&& other) :
|
||||
m_FinallyBlock(static_cast<FinallyBlock &&>(other.m_FinallyBlock))
|
||||
{
|
||||
}
|
||||
|
||||
inline FinallyHelper& operator=(FinallyHelper<FinallyBlock, isFault>&& other)
|
||||
{
|
||||
m_FinallyBlock = static_cast<FinallyBlock &&>(other.m_FinallyBlock);
|
||||
return *this;
|
||||
}
|
||||
|
||||
inline ~FinallyHelper() noexcept(false)
|
||||
{
|
||||
if (isFault)
|
||||
{
|
||||
if (m_Exception != nullptr)
|
||||
{
|
||||
m_FinallyBlock();
|
||||
RethrowException(m_Exception);
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
m_FinallyBlock();
|
||||
if (m_Exception != nullptr)
|
||||
RethrowException(m_Exception);
|
||||
}
|
||||
}
|
||||
|
||||
inline void StoreException(Il2CppException* exception)
|
||||
{
|
||||
m_Exception = exception;
|
||||
}
|
||||
|
||||
private:
|
||||
Il2CppException* m_Exception;
|
||||
FinallyBlock m_FinallyBlock;
|
||||
};
|
||||
|
||||
template<typename FinallyBlock>
|
||||
inline FinallyHelper<FinallyBlock, false> Finally(FinallyBlock&& finallyBlock)
|
||||
{
|
||||
return FinallyHelper<FinallyBlock, false>(static_cast<FinallyBlock &&>(finallyBlock));
|
||||
}
|
||||
|
||||
template<typename FinallyBlock>
|
||||
inline FinallyHelper<FinallyBlock, true> Fault(FinallyBlock&& finallyBlock)
|
||||
{
|
||||
return FinallyHelper<FinallyBlock, true>(static_cast<FinallyBlock &&>(finallyBlock));
|
||||
}
|
||||
}
|
||||
}
|
||||
16
Libraries/libil2cpp/include/vm-utils/MethodDefinitionKey.h
Normal file
16
Libraries/libil2cpp/include/vm-utils/MethodDefinitionKey.h
Normal file
@@ -0,0 +1,16 @@
|
||||
#pragma once
|
||||
|
||||
#include "il2cpp-api-types.h"
|
||||
#include "il2cpp-metadata.h"
|
||||
|
||||
#if IL2CPP_ENABLE_NATIVE_STACKTRACES
|
||||
struct MethodDefinitionKey
|
||||
{
|
||||
Il2CppMethodPointer method;
|
||||
#if IL2CPP_TINY_DEBUG_METADATA && !IL2CPP_TINY_DEBUGGER
|
||||
int32_t methodIndex;
|
||||
#else
|
||||
Il2CppMetadataMethodDefinitionHandle methodHandle;
|
||||
#endif
|
||||
};
|
||||
#endif
|
||||
28
Libraries/libil2cpp/include/vm-utils/NativeSymbol.h
Normal file
28
Libraries/libil2cpp/include/vm-utils/NativeSymbol.h
Normal file
@@ -0,0 +1,28 @@
|
||||
#pragma once
|
||||
|
||||
#if !RUINTIME_TINY
|
||||
#include "vm/MetadataCache.h"
|
||||
#endif
|
||||
|
||||
#include "vm/StackTrace.h"
|
||||
#include "vm-utils/MethodDefinitionKey.h"
|
||||
#include "vm-utils/VmMethod.h"
|
||||
|
||||
#include <stdint.h>
|
||||
#include <vector>
|
||||
|
||||
namespace il2cpp
|
||||
{
|
||||
namespace utils
|
||||
{
|
||||
class NativeSymbol
|
||||
{
|
||||
public:
|
||||
#if (IL2CPP_ENABLE_NATIVE_STACKTRACES && (!RUNTIME_TINY || IL2CPP_TINY_DEBUG_METADATA))
|
||||
static void RegisterMethods(const std::vector<MethodDefinitionKey>& managedMethods);
|
||||
static const VmMethod* GetMethodFromNativeSymbol(Il2CppMethodPointer nativeMethod);
|
||||
static bool GetMethodDebugInfo(const MethodInfo* method, Il2CppMethodDebugInfo* methodDebugInfo);
|
||||
#endif
|
||||
};
|
||||
} /* namespace vm */
|
||||
} /* namespace mono */
|
||||
9
Libraries/libil2cpp/include/vm-utils/VmMethod.h
Normal file
9
Libraries/libil2cpp/include/vm-utils/VmMethod.h
Normal file
@@ -0,0 +1,9 @@
|
||||
#pragma once
|
||||
|
||||
#include "il2cpp-config.h"
|
||||
|
||||
#if RUNTIME_TINY
|
||||
typedef TinyMethod VmMethod;
|
||||
#else // Assume the libil2cpp runtime
|
||||
typedef MethodInfo VmMethod;
|
||||
#endif
|
||||
36
Libraries/libil2cpp/include/vm-utils/VmStringUtils.h
Normal file
36
Libraries/libil2cpp/include/vm-utils/VmStringUtils.h
Normal file
@@ -0,0 +1,36 @@
|
||||
#pragma once
|
||||
|
||||
#include "il2cpp-config.h"
|
||||
#include <string>
|
||||
|
||||
namespace il2cpp
|
||||
{
|
||||
namespace utils
|
||||
{
|
||||
class LIBIL2CPP_CODEGEN_API VmStringUtils
|
||||
{
|
||||
public:
|
||||
static Il2CppChar Utf16ToLower(Il2CppChar c);
|
||||
static bool CaseSensitiveEquals(Il2CppString* left, const char* right);
|
||||
static bool CaseSensitiveEquals(const char* left, const char* right);
|
||||
static bool CaseInsensitiveEquals(Il2CppString* left, const char* right);
|
||||
static bool CaseInsensitiveEquals(const char* left, const char* right);
|
||||
|
||||
struct CaseSensitiveComparer
|
||||
{
|
||||
bool operator()(const std::string& left, const std::string& right) const;
|
||||
bool operator()(const std::string& left, const char* right) const;
|
||||
bool operator()(const char* left, const std::string& right) const;
|
||||
bool operator()(const char* left, const char* right) const;
|
||||
};
|
||||
|
||||
struct CaseInsensitiveComparer
|
||||
{
|
||||
bool operator()(const std::string& left, const std::string& right) const;
|
||||
bool operator()(const std::string& left, const char* right) const;
|
||||
bool operator()(const char* left, const std::string& right) const;
|
||||
bool operator()(const char* left, const char* right) const;
|
||||
};
|
||||
};
|
||||
} // namespace utils
|
||||
} // namespace il2cpp
|
||||
25
Libraries/libil2cpp/include/vm-utils/VmThreadUtils.h
Normal file
25
Libraries/libil2cpp/include/vm-utils/VmThreadUtils.h
Normal file
@@ -0,0 +1,25 @@
|
||||
#pragma once
|
||||
|
||||
#include "il2cpp-config.h"
|
||||
|
||||
enum Il2CppStackPointerResult
|
||||
{
|
||||
Il2CppStackPointerNotSupported = -1,
|
||||
Il2CppStackPointerIsNotOnStack = 0,
|
||||
Il2CppStackPointerIsOnStack = 1,
|
||||
};
|
||||
|
||||
|
||||
namespace il2cpp
|
||||
{
|
||||
namespace utils
|
||||
{
|
||||
class LIBIL2CPP_CODEGEN_API VmThreadUtils
|
||||
{
|
||||
public:
|
||||
static Il2CppStackPointerResult PointerIsOnCurrentThreadStack(void* ptr);
|
||||
};
|
||||
} // namespace utils
|
||||
} // namespace il2cpp
|
||||
|
||||
#define IL2CPP_ASSERT_STACK_PTR(ptr) IL2CPP_ASSERT(ptr != NULL && il2cpp::utils::VmThreadUtils::PointerIsOnCurrentThreadStack(ptr) != Il2CppStackPointerIsNotOnStack)
|
||||
@@ -0,0 +1,52 @@
|
||||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include "il2cpp-config.h"
|
||||
#include "il2cpp-object-internals.h"
|
||||
|
||||
#if RUNTIME_TINY
|
||||
namespace tiny
|
||||
#else
|
||||
namespace il2cpp
|
||||
#endif
|
||||
{
|
||||
namespace icalls
|
||||
{
|
||||
namespace mscorlib
|
||||
{
|
||||
namespace System
|
||||
{
|
||||
namespace Threading
|
||||
{
|
||||
class LIBIL2CPP_CODEGEN_API Interlocked
|
||||
{
|
||||
public:
|
||||
static int32_t Add(int32_t* location1, int32_t value);
|
||||
static int64_t Add64(int64_t* location1, int64_t value);
|
||||
static int32_t CompareExchange(int32_t* location, int32_t value, int32_t comparand);
|
||||
static int64_t CompareExchange64(int64_t* location1, int64_t value, int64_t comparand);
|
||||
static double CompareExchangeDouble(double* location1, double value, double comparand);
|
||||
static intptr_t CompareExchangeIntPtr(intptr_t* location, intptr_t value, intptr_t comparand);
|
||||
static float CompareExchangeSingle(float* location1, float value, float comparand);
|
||||
static void* CompareExchange_T(void** location, void* value, void* comparand);
|
||||
static void CompareExchangeObject(void** location, void** value, void** comparand, void** res);
|
||||
static int32_t Decrement(int32_t* location);
|
||||
static int64_t Decrement64(int64_t* location);
|
||||
static intptr_t ExchangeIntPtr(intptr_t* location, intptr_t value);
|
||||
static int32_t Exchange(int32_t* location1, int32_t value);
|
||||
static int64_t Exchange64(int64_t* location1, int64_t value);
|
||||
static double ExchangeDouble(double* location1, double value);
|
||||
static void* ExchangePointer(void** location1, void* value);
|
||||
static void ExchangeObject(void** location1, void** value, void** res);
|
||||
static float ExchangeSingle(float* location1, float value);
|
||||
static int32_t Increment(int32_t* value);
|
||||
static int64_t Increment64(int64_t* location);
|
||||
static int64_t Read(int64_t* location);
|
||||
static int32_t CompareExchange(int32_t* location1, int32_t value, int32_t comparand, bool* succeeded);
|
||||
static void MemoryBarrierProcessWide();
|
||||
};
|
||||
} /* namespace Threading */
|
||||
} /* namespace System */
|
||||
} /* namespace mscorlib */
|
||||
} /* namespace icalls */
|
||||
} /* namespace tiny */
|
||||
@@ -0,0 +1,54 @@
|
||||
#pragma once
|
||||
#include "il2cpp-config.h"
|
||||
|
||||
#if RUNTIME_TINY
|
||||
namespace tiny
|
||||
#else
|
||||
namespace il2cpp
|
||||
#endif
|
||||
{
|
||||
namespace icalls
|
||||
{
|
||||
namespace mscorlib
|
||||
{
|
||||
namespace System
|
||||
{
|
||||
class LIBIL2CPP_CODEGEN_API Math
|
||||
{
|
||||
public:
|
||||
static double Abs(double value);
|
||||
static double Acos(double d);
|
||||
static double Acosh(double d);
|
||||
static double Asin(double d);
|
||||
static double Asinh(double d);
|
||||
static double Atan(double d);
|
||||
static double Atan2(double y, double x);
|
||||
static double Atanh(double d);
|
||||
static double Cbrt(double d);
|
||||
static double Ceiling(double a);
|
||||
static double Cos(double d);
|
||||
static double Cosh(double value);
|
||||
static double Exp(double d);
|
||||
static double Floor(double d);
|
||||
static double FMod(double x, double y);
|
||||
static double Log(double d);
|
||||
static double Log10(double d);
|
||||
static double ModF(double x, double* intptr);
|
||||
static double Pow(double val, double exp);
|
||||
static double Round(double x);
|
||||
static double RoundDigits(double x, int32_t digits);
|
||||
static double RoundMidpoint(double value, int32_t digits, bool away_from_zero);
|
||||
static double Sin(double a);
|
||||
static double Sinh(double value);
|
||||
static double Sqrt(double d);
|
||||
static double Tan(double a);
|
||||
static double Tanh(double value);
|
||||
static float Abs(float value);
|
||||
#if IL2CPP_TINY
|
||||
static double SplitFractionDouble(double* value);
|
||||
#endif
|
||||
};
|
||||
} /* namespace System */
|
||||
} /* namespace mscorlib */
|
||||
} /* namespace icalls */
|
||||
} /* namespace tiny */
|
||||
@@ -0,0 +1,41 @@
|
||||
#pragma once
|
||||
|
||||
namespace il2cpp
|
||||
{
|
||||
namespace icalls
|
||||
{
|
||||
namespace mscorlib
|
||||
{
|
||||
namespace System
|
||||
{
|
||||
class LIBIL2CPP_CODEGEN_API MathF
|
||||
{
|
||||
public:
|
||||
static float Acos(float x);
|
||||
static float Acosh(float x);
|
||||
static float Asin(float x);
|
||||
static float Asinh(float x);
|
||||
static float Atan(float x);
|
||||
static float Atan2(float y, float x);
|
||||
static float Atanh(float x);
|
||||
static float Cbrt(float x);
|
||||
static float Ceiling(float x);
|
||||
static float Cos(float x);
|
||||
static float Cosh(float x);
|
||||
static float Exp(float x);
|
||||
static float Floor(float x);
|
||||
static float FMod(float x, float y);
|
||||
static float Log(float x);
|
||||
static float Log10(float x);
|
||||
static float ModF(float x, float* intptr);
|
||||
static float Pow(float x, float y);
|
||||
static float Sin(float x);
|
||||
static float Sinh(float x);
|
||||
static float Sqrt(float x);
|
||||
static float Tan(float x);
|
||||
static float Tanh(float x);
|
||||
};
|
||||
} // namespace System
|
||||
} // namespace mscorlib
|
||||
} // namespace icalls
|
||||
} // namespace il2cpp
|
||||
Reference in New Issue
Block a user