[vmkit-commits] [vmkit] r83714 - in /vmkit/trunk/lib/N3/VMCore: CLIRuntimeJIT.cpp N3Initialise.cpp VMCache.cpp VMCache.h VirtualTables.cpp

Gael Thomas gael.thomas at lip6.fr
Sat Oct 10 05:46:27 PDT 2009


Author: gthomas
Date: Sat Oct 10 07:46:27 2009
New Revision: 83714

URL: http://llvm.org/viewvc/llvm-project?rev=83714&view=rev
Log:
Caches are allocated in the assembly


Modified:
    vmkit/trunk/lib/N3/VMCore/CLIRuntimeJIT.cpp
    vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp
    vmkit/trunk/lib/N3/VMCore/VMCache.cpp
    vmkit/trunk/lib/N3/VMCore/VMCache.h
    vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp

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

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/CLIRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/CLIRuntimeJIT.cpp Sat Oct 10 07:46:27 2009
@@ -27,6 +27,7 @@
 #include "VMClass.h"
 #include "VMObject.h"
 #include "VMThread.h"
+#include "Assembly.h"
 
 #include <cstdarg>
 
@@ -154,7 +155,7 @@
     }
     
     if (cache->methPtr) {
-      rcache = CacheNode::allocate();
+      rcache = CacheNode::allocate(orig->classDef->assembly->allocator);
       rcache->enveloppe = enveloppe;
     } else {
       rcache = cache;

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

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/N3Initialise.cpp Sat Oct 10 07:46:27 2009
@@ -190,8 +190,6 @@
   INIT(VMObject);
   INIT(ThreadSystem);
   INIT(CLIString);
-  INIT(CacheNode);
-  INIT(Enveloppe);
   INIT(Opinfo);
   INIT(Exception);
 

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

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VMCache.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/VMCache.cpp Sat Oct 10 07:46:27 2009
@@ -47,17 +47,17 @@
   buf->write("Enveloppe<>");
 }
 
-CacheNode* CacheNode::allocate() {
-  CacheNode* cache = gc_new(CacheNode)();
+CacheNode* CacheNode::allocate(mvm::BumpPtrAllocator &allocator) {
+  CacheNode* cache = new(allocator, "CacheNode") CacheNode();
   cache->lastCible = 0;
   cache->methPtr = 0;
   cache->next = 0;
   return cache;
 }
 
-Enveloppe* Enveloppe::allocate(VMMethod* meth) {
-  Enveloppe* enveloppe = gc_new(Enveloppe)();
-  enveloppe->firstCache = CacheNode::allocate();
+Enveloppe* Enveloppe::allocate(mvm::BumpPtrAllocator &allocator, VMMethod* meth) {
+  Enveloppe* enveloppe = new(allocator, "Enveloppe") Enveloppe();
+  enveloppe->firstCache = CacheNode::allocate(allocator);
   enveloppe->firstCache->enveloppe = enveloppe;
   enveloppe->cacheLock = new mvm::LockNormal();
   enveloppe->originalMethod = meth;
@@ -82,7 +82,7 @@
   JITVerifyNull(argObj);
 
   // ok now the cache
-  Enveloppe* enveloppe = Enveloppe::allocate(origMeth);
+  Enveloppe* enveloppe = Enveloppe::allocate(origMeth->classDef->assembly->allocator, origMeth);
   compilingMethod->caches.push_back(enveloppe);
   
   Value* zero = module->constantZero;

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

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VMCache.h (original)
+++ vmkit/trunk/lib/N3/VMCore/VMCache.h Sat Oct 10 07:46:27 2009
@@ -24,9 +24,8 @@
 class Enveloppe;
 class VMClass;
 
-class CacheNode : public mvm::Object {
+class CacheNode : public mvm::PermanentObject {
 public:
-  static VirtualTable* VT;
   virtual void print(mvm::PrintBuffer* buf) const;
   virtual void TRACER;
 
@@ -38,13 +37,11 @@
   
   static const llvm::Type* llvmType;
 
-  static CacheNode* allocate();
-
+  static CacheNode* allocate(mvm::BumpPtrAllocator &allocator);
 };
 
-class Enveloppe : public mvm::Object {
+class Enveloppe : public mvm::PermanentObject {
 public:
-  static VirtualTable* VT;
   virtual void TRACER;
   virtual void print(mvm::PrintBuffer* buf) const;
   
@@ -54,7 +51,7 @@
 
   static const llvm::Type* llvmType;
 
-  static Enveloppe* allocate(VMMethod* orig);
+  static Enveloppe* allocate(mvm::BumpPtrAllocator &allocator, VMMethod* orig);
 
 };
 

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

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp Sat Oct 10 07:46:27 2009
@@ -42,8 +42,6 @@
   INIT(ThreadSystem);
   INIT(CLIString);
   INIT(Property);
-  INIT(CacheNode);
-  INIT(Enveloppe);
   INIT(Opinfo);
   INIT(Exception);
   
@@ -69,12 +67,12 @@
 void CacheNode::TRACER {
   ((mvm::Object*)methPtr)->MARK_AND_TRACE;
   lastCible->CALL_TRACER;
-  next->MARK_AND_TRACE;
-  enveloppe->MARK_AND_TRACE;
+  next->CALL_TRACER;
+  enveloppe->CALL_TRACER;
 }
 
 void Enveloppe::TRACER {
-  firstCache->MARK_AND_TRACE;
+  firstCache->CALL_TRACER;
   //cacheLock->MARK_AND_TRACE;
   originalMethod->CALL_TRACER;
 }
@@ -168,7 +166,7 @@
   //signature->MARK_AND_TRACE;
   classDef->CALL_TRACER;
   CALL_TRACER_VECTOR(Param*, params, gc_allocator);
-  TRACE_VECTOR(Enveloppe*, caches, gc_allocator);
+  CALL_TRACER_VECTOR(Enveloppe*, caches, gc_allocator);
 }
 
 void VMGenericMethod::TRACER {





More information about the vmkit-commits mailing list