[vmkit-commits] [vmkit] r52870 - in /vmkit/trunk/lib/N3/VMCore: PNetLib.cpp VMArray.cpp VMArray.h
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Sat Jun 28 13:09:06 PDT 2008
Author: geoffray
Date: Sat Jun 28 15:09:01 2008
New Revision: 52870
URL: http://llvm.org/viewvc/llvm-project?rev=52870&view=rev
Log:
Make array classes inherit VMObject.
Modified:
vmkit/trunk/lib/N3/VMCore/PNetLib.cpp
vmkit/trunk/lib/N3/VMCore/VMArray.cpp
vmkit/trunk/lib/N3/VMCore/VMArray.h
Modified: vmkit/trunk/lib/N3/VMCore/PNetLib.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/PNetLib.cpp?rev=52870&r1=52869&r2=52870&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/PNetLib.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/PNetLib.cpp Sat Jun 28 15:09:01 2008
@@ -149,15 +149,15 @@
if (bs == N3::pChar) {
for (uint32 i = 0; i < size; ++i) {
- ((uint16*)(void*)(array->elements))[i] = READ_U2(bytes, offset);
+ ((ArrayUInt16*)array)->elements[i] = READ_U2(bytes, offset);
}
} else if (bs == N3::pSInt32) {
for (uint32 i = 0; i < size; ++i) {
- ((sint32*)(void*)(array->elements))[i] = READ_U4(bytes, offset);
+ ((ArraySInt32*)array)->elements[i] = READ_U4(bytes, offset);
}
} else if (bs == N3::pDouble) {
for (uint32 i = 0; i < size; ++i) {
- ((double*)(void*)(array->elements))[i] = READ_U8(bytes, offset);
+ ((ArrayDouble*)array)->elements[i] = READ_U8(bytes, offset);
}
} else {
VMThread::get()->vm->error("implement me");
Modified: vmkit/trunk/lib/N3/VMCore/VMArray.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/VMArray.cpp?rev=52870&r1=52869&r2=52870&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VMArray.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/VMArray.cpp Sat Jun 28 15:09:01 2008
@@ -27,7 +27,8 @@
else if (n > VMArray::MaxArraySize) \
VMThread::get()->vm->outOfMemoryError(n); \
name* res = (name*) \
- gc::operator new(sizeof(name) + n * size, VMObject::VT); \
+ gc::operator new(sizeof(VMObject) + sizeof(sint32) + n * size, \
+ VMObject::VT); \
res->initialise(atype, n); \
res->setVirtualTable(name::VT); \
return res; \
@@ -178,8 +179,8 @@
VMThread::get()->vm->negativeArraySizeException(n);
else if (n > VMArray::MaxArraySize)
VMThread::get()->vm->outOfMemoryError(n);
- UTF8* res = (UTF8*)gc::operator new(sizeof(UTF8) + n * sizeof(uint16),
- UTF8::VT);
+ uint32 size = sizeof(VMObject) + sizeof(sint32) + n * sizeof(uint16);
+ UTF8* res = (UTF8*)gc::operator new(size, UTF8::VT);
res->initialise(atype, n);
return res;
}
Modified: vmkit/trunk/lib/N3/VMCore/VMArray.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/VMArray.h?rev=52870&r1=52869&r2=52870&view=diff
==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VMArray.h (original)
+++ vmkit/trunk/lib/N3/VMCore/VMArray.h Sat Jun 28 15:09:01 2008
@@ -44,10 +44,11 @@
typedef VMArray* (*arrayCtor_t)(uint32 len, VMCommonClass* cl);
#define ARRAYCLASS(name, elmt) \
-class name : public VMArray { \
+class name : public VMObject { \
public: \
static VirtualTable* VT; \
static const llvm::Type* llvmType; \
+ sint32 size; \
elmt elements[1]; \
static name *acons(sint32 n, VMClassArray* cl); \
void initialise(VMCommonClass* atype, sint32 n); \
@@ -69,10 +70,11 @@
#undef ARRAYCLASS
-class ArrayObject : public VMArray {
+class ArrayObject : public VMObject {
public:
static VirtualTable* VT;
static const llvm::Type* llvmType;
+ sint32 size;
VMObject* elements[1];
static ArrayObject *acons(sint32 n, VMClassArray* cl);
void initialise(VMCommonClass* atype, sint32 n);
@@ -82,9 +84,10 @@
virtual void TRACER;
};
-class UTF8 : public VMArray {
+class UTF8 : public VMObject {
public:
static VirtualTable* VT;
+ sint32 size;
uint16 elements[1];
static const llvm::Type* llvmType;
More information about the vmkit-commits
mailing list