mirror of
https://github.com/beefytech/Beef.git
synced 2025-07-04 15:26:00 +02:00
Support for marking append-allocated objects (mHasAppendWantMark)
This commit is contained in:
parent
9ae172c43f
commit
9baf0ead21
18 changed files with 475 additions and 103 deletions
|
@ -59,6 +59,8 @@ namespace bf
|
|||
{
|
||||
namespace System
|
||||
{
|
||||
class Type_NOFLAGS;
|
||||
|
||||
struct DbgRawAllocData
|
||||
{
|
||||
Type* mType;
|
||||
|
@ -84,7 +86,7 @@ namespace bf
|
|||
void*(*Alloc)(intptr size);
|
||||
void(*Free)(void* ptr);
|
||||
void(*Object_Delete)(bf::System::Object* obj);
|
||||
void* mUnused0;
|
||||
Type_NOFLAGS*(*ClassVData_GetTypeDataPtr)(bf::System::ClassVData* classVData);
|
||||
bf::System::Type* (*Object_GetType)(bf::System::Object* obj);
|
||||
void(*Object_GCMarkMembers)(bf::System::Object* obj);
|
||||
bf::System::Object* (*Object_DynamicCastToTypeId)(bf::System::Object* obj, int typeId);
|
||||
|
@ -196,28 +198,25 @@ namespace bf
|
|||
|
||||
typedef int32 TypeId;
|
||||
|
||||
enum BfTypeFlags : uint32
|
||||
{
|
||||
BfTypeFlag_HasAppendWantMark = 0x800000
|
||||
};
|
||||
|
||||
class Type : public Object
|
||||
{
|
||||
public:
|
||||
int32 mSize;
|
||||
TypeId mTypeId;
|
||||
TypeId mBoxedId;
|
||||
uint16 mTypeFlags;
|
||||
int32 mMemberDataOffset;
|
||||
uint8 mTypeCode;
|
||||
uint8 mAlign;
|
||||
|
||||
public:
|
||||
Beefy::String GetFullName();
|
||||
Type_NOFLAGS* GetTypeData();
|
||||
};
|
||||
|
||||
class Type_NOFLAGS
|
||||
{
|
||||
public:
|
||||
intptr mClassVData;
|
||||
public:
|
||||
int32 mSize;
|
||||
TypeId mTypeId;
|
||||
TypeId mBoxedId;
|
||||
uint16 mTypeFlags;
|
||||
BfTypeFlags mTypeFlags;
|
||||
int32 mMemberDataOffset;
|
||||
uint8 mTypeCode;
|
||||
uint8 mAlign;
|
||||
|
|
|
@ -20,3 +20,11 @@ Beefy::String bf::System::Type::GetFullName()
|
|||
BFRTCALLBACKS.Object_Delete(strObj);
|
||||
return str;
|
||||
}
|
||||
|
||||
bf::System::Type_NOFLAGS* bf::System::Type::GetTypeData()
|
||||
{
|
||||
if ((BFRTFLAGS & BfRtFlags_ObjectHasDebugFlags) != 0)
|
||||
return BFRTCALLBACKS.ClassVData_GetTypeDataPtr((bf::System::ClassVData*)(mClassVData & ~0xFF));
|
||||
else
|
||||
return BFRTCALLBACKS.ClassVData_GetTypeDataPtr((bf::System::ClassVData*)(mClassVData));
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue