[vmkit-commits] [vmkit] r84084 - in /vmkit/trunk: include/mvm/Object.h lib/Mvm/Runtime/Object.cpp lib/N3/VMCore/N3Initialise.cpp lib/N3/VMCore/VMArray.h lib/N3/VMCore/VMObject.cpp lib/N3/VMCore/VMObject.h lib/N3/VMCore/VirtualTables.cpp

Gael Thomas gael.thomas at lip6.fr
Wed Oct 14 04:25:29 PDT 2009


Author: gthomas
Date: Wed Oct 14 06:25:28 2009
New Revision: 84084

URL: http://llvm.org/viewvc/llvm-project?rev=84084&view=rev
Log:
Remove vt from arrays. Define default functions for the vt in Object.h.


Modified:
    vmkit/trunk/include/mvm/Object.h
    vmkit/trunk/lib/Mvm/Runtime/Object.cpp
    vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp
    vmkit/trunk/lib/N3/VMCore/VMArray.h
    vmkit/trunk/lib/N3/VMCore/VMObject.cpp
    vmkit/trunk/lib/N3/VMCore/VMObject.h
    vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp

Modified: vmkit/trunk/include/mvm/Object.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/include/mvm/Object.h?rev=84084&r1=84083&r2=84084&view=diff

==============================================================================
--- vmkit/trunk/include/mvm/Object.h (original)
+++ vmkit/trunk/include/mvm/Object.h Wed Oct 14 06:25:28 2009
@@ -32,18 +32,22 @@
 ///
 class Object : public gc {
 public:
+	static void     default_tracer(gc *o)                    {}
+	static intptr_t default_hashcode(gc *o)                  { return (intptr_t)o; }
+	static void     default_print(const gc *o, PrintBuffer *buf);
+
   /// tracer - Default implementation of tracer. Does nothing.
   ///
-  virtual void tracer() {}
+  virtual void tracer() { default_tracer(this); }
 
   /// print - Default implementation of print.
   ///
-  virtual void      print(PrintBuffer *buf) const;
+  virtual void      print(PrintBuffer *buf) const { default_print(this, buf); }
 
   /// hashCode - Default implementation of hashCode. Returns the address
   /// of this object.
   ///
-  virtual intptr_t  hashCode(){ return (intptr_t)this;}
+  virtual intptr_t  hashCode(){ return default_hashcode(this);}
   
 };
 

Modified: vmkit/trunk/lib/Mvm/Runtime/Object.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/Mvm/Runtime/Object.cpp?rev=84084&r1=84083&r2=84084&view=diff

==============================================================================
--- vmkit/trunk/lib/Mvm/Runtime/Object.cpp (original)
+++ vmkit/trunk/lib/Mvm/Runtime/Object.cpp Wed Oct 14 06:25:28 2009
@@ -48,9 +48,10 @@
   buf->write(a);
 }
 
-void Object::print(PrintBuffer *buf) const {
+void Object::default_print(const gc *o, PrintBuffer *buf) {
+	llvm_gcroot(o, 0);
   buf->write("<Object@");
-  buf->writePtr((void*)this);
+  buf->writePtr((void*)o);
   buf->write(">");
 }
 

Modified: vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp?rev=84084&r1=84083&r2=84084&view=diff

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp Wed Oct 14 06:25:28 2009
@@ -172,10 +172,6 @@
   INIT(VMObject);
   INIT(CLIString);
 
-#define INIT_ARRAY(name, elmt, nbb, printer, pre, sep, post)	INIT(Array##name)
-	ON_ARRAY_CLASSES(INIT_ARRAY);
-#undef INIT_ARRAY
-
 #undef INIT
 
 }

Modified: vmkit/trunk/lib/N3/VMCore/VMArray.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/VMArray.h?rev=84084&r1=84083&r2=84084&view=diff

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VMArray.h (original)
+++ vmkit/trunk/lib/N3/VMCore/VMArray.h Wed Oct 14 06:25:28 2009
@@ -64,7 +64,6 @@
 	class Array##name : public VMObject {																	\
 		void *operator new(size_t n) { return VMObject::operator new(n, 0); } \
 	public:																																\
-  	static N3VirtualTable* VT;                                            \
 		static const llvm::Type* llvmType;                                  \
 		sint32 size;                                                        \
 		elmt elements[1];                                                   \

Modified: vmkit/trunk/lib/N3/VMCore/VMObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/VMObject.cpp?rev=84084&r1=84083&r2=84084&view=diff

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VMObject.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/VMObject.cpp Wed Oct 14 06:25:28 2009
@@ -18,6 +18,8 @@
 
 using namespace n3;
 
+N3VirtualTable LockObj::_VT(LockObj::_destroy, 0, mvm::no_tracer, LockObj::_print, )
+
 void *N3VirtualTable::operator new(size_t size, size_t totalVtSize) {
 	//printf("Allocate N3VirtualTable with %d elements\n", totalVtSize);
 	return malloc(totalVtSize * sizeof(uintptr_t));

Modified: vmkit/trunk/lib/N3/VMCore/VMObject.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/VMObject.h?rev=84084&r1=84083&r2=84084&view=diff

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VMObject.h (original)
+++ vmkit/trunk/lib/N3/VMCore/VMObject.h Wed Oct 14 06:25:28 2009
@@ -45,6 +45,7 @@
 
 class LockObj : public mvm::Object {
 public:
+	static N3VirtualTable  _VT;
   static N3VirtualTable* VT;
   mvm::LockRecursive     lock;
   std::vector<VMThread*> threads;
@@ -53,6 +54,9 @@
 
   virtual void print(mvm::PrintBuffer* buf) const;
   virtual void TRACER;
+
+	static void _destroy(LockObj *);
+	static void _print(LockObj *);
   
   void notify();
   void notifyAll();

Modified: vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp?rev=84084&r1=84083&r2=84084&view=diff

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp Wed Oct 14 06:25:28 2009
@@ -29,10 +29,6 @@
 INIT(VMObject);
 INIT(CLIString);
 
-#define INIT_ARRAY(name, elmt, size, printer, pre, sep, post)	INIT(Array##name);
-ON_ARRAY_CLASSES(INIT_ARRAY)
-#undef INIT_ARRAY
-  
 #undef INIT
 
 #ifdef MULTIPLE_GC





More information about the vmkit-commits mailing list