[vmkit-commits] [vmkit] r83774 - in /vmkit/trunk/lib/N3: PNetLib/PNetLib.cpp VMCore/Assembly.cpp VMCore/CLIJit.cpp VMCore/CLIRuntimeJIT.cpp VMCore/Opcodes.cpp VMCore/VMClass.cpp VMCore/VirtualTables.cpp

Gael Thomas gael.thomas at lip6.fr
Sun Oct 11 08:15:16 PDT 2009


Author: gthomas
Date: Sun Oct 11 10:15:16 2009
New Revision: 83774

URL: http://llvm.org/viewvc/llvm-project?rev=83774&view=rev
Log:
Fix a bug in PNetLib.cpp::...Copy5.
Add a N3Debug file


Modified:
    vmkit/trunk/lib/N3/PNetLib/PNetLib.cpp
    vmkit/trunk/lib/N3/VMCore/Assembly.cpp
    vmkit/trunk/lib/N3/VMCore/CLIJit.cpp
    vmkit/trunk/lib/N3/VMCore/CLIRuntimeJIT.cpp
    vmkit/trunk/lib/N3/VMCore/Opcodes.cpp
    vmkit/trunk/lib/N3/VMCore/VMClass.cpp
    vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp

Modified: vmkit/trunk/lib/N3/PNetLib/PNetLib.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/N3/PNetLib/PNetLib.cpp?rev=83774&r1=83773&r2=83774&view=diff

==============================================================================
--- vmkit/trunk/lib/N3/PNetLib/PNetLib.cpp (original)
+++ vmkit/trunk/lib/N3/PNetLib/PNetLib.cpp Sun Oct 11 10:15:16 2009
@@ -283,50 +283,39 @@
                                      sint32 length) {
 	const ArrayUInt16 *arraySrc = src->value;
 
+	//	printf("Copy %p %p %d %d %d (%p %d)\n", (void *)dest, (void *)src, destPos, srcPos, length, (void *)dest->value, dest->length);
+
 	if(destPos == 0 && srcPos == 0 && length == src->length) {
 		dest->value = arraySrc;
 		dest->length = length;
 	} else {
-		sint32 newLength = destPos + length;
+		sint32 top       = destPos + length;
+		uint16 *buf      = (uint16*)alloca((top < dest->length ? dest->length : top) * sizeof(uint16));
 
-		if(newLength <= dest->length) {
-			memcpy((uint16*)dest->value->elements + destPos, (uint16*)src->value->elements + srcPos, length<<1);
-		} else {
-			uint16 *buf = (uint16*)alloca(newLength<<1);
-			memcpy(buf,           (uint16*)dest->value->elements, destPos<<1);
-			memcpy(buf + destPos, (uint16*)src->value->elements + srcPos, length<<1);
-			dest->length = newLength;
-			dest->value  = VMThread::get()->vm->bufToArray(buf, newLength);
-		}
+		if(destPos)
+			memcpy(buf, dest->value->elements, destPos * sizeof(uint16));
+
+		memcpy(buf + destPos, src->value->elements + srcPos, length * sizeof(uint16));
+
+		if(top <= dest->length)
+			memcpy(buf + top, dest->value->elements + top, (dest->length - top) * sizeof(uint16));
+		else
+			dest->length = top;
+
+		dest->value  = VMThread::get()->vm->bufToArray(buf, dest->length);
 	}
+	//		printf("---> %s\n", mvm::PrintBuffer(VMThread::get()->vm->arrayToUTF8(dest->value)).cString());
 }
-//   const UTF8* utf8Src = src->value->extract(VMThread::get()->vm, srcPos, 
-//                                             srcPos + length);
-//   if (destPos == 0) {
-//     dest->value = utf8Src;
-//     dest->length = dest->value->size;
-//   } else {
-//     const UTF8* utf8Dest = dest->value->extract(VMThread::get()->vm, 0, 
-//                                                 destPos);
-//     sint32 len1 = utf8Dest->size;
-//     sint32 len2 = utf8Src->size;
-//     uint16* buf = (uint16*)alloca((len1 + len2) * sizeof(uint16));
-
-//     memcpy(buf, utf8Dest->elements, len1 * sizeof(uint16));
-//     memcpy(buf + len1, utf8Dest->elements, len2 * sizeof(uint16));
-
-//     const UTF8* utf8 = VMThread::get()->vm->bufToUTF8(buf, 
-//                                                                 len1 + len2);
-//     dest->value = utf8;
-//     dest->length = dest->value->size;
-//   }
 
 extern "C" void System_Threading_Monitor_Enter(VMObject* obj) {
+	//	printf("Take lock on: %p\n", (void *)obj);
   obj->aquire();
 }
 
 extern "C" void System_Threading_Monitor_Exit(VMObject* obj) {
+	//	printf("Release lock on: %p\n", (void *)obj);
   obj->unlock();
+	//	printf("Release lock on: %p done\n", (void *)obj);
 }
 
 

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

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/Assembly.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/Assembly.cpp Sun Oct 11 10:15:16 2009
@@ -9,7 +9,7 @@
 
 #include <vector>
 
-#include "debug.h"
+#include "N3Debug.h"
 #include "types.h"
 
 #include "Assembly.h"
@@ -833,7 +833,7 @@
 		lockVar->lock();
 		if(!isRead) {
 			Reader* reader = newReader(bytes);
-			PRINT_DEBUG(DEBUG_LOAD, 1, LIGHT_GREEN, "Reading %s::%s", mvm::PrintBuffer(vm).cString(),
+			PRINT_DEBUG(N3_LOAD, 1, LIGHT_GREEN, "Reading %s::%s", mvm::PrintBuffer(vm).cString(),
 									mvm::PrintBuffer(this).cString());
 
 			textSection =  new(allocator, "Section") Section();

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

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/CLIJit.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/CLIJit.cpp Sun Oct 11 10:15:16 2009
@@ -7,14 +7,6 @@
 //
 //===----------------------------------------------------------------------===//
 
-#define DEBUG 0
-#define N3_COMPILE 0
-#define N3_EXECUTE 0
-
-
-
-
-
 #include "mvm/JIT.h"
 
 #include "Assembly.h"
@@ -42,7 +34,8 @@
 #include <llvm/Support/CFG.h>
 #include <llvm/Support/MutexGuard.h>
 
-#include "debug.h"
+#include "N3Debug.h"
+
 #include "types.h"
 
 using namespace llvm;
@@ -927,7 +920,7 @@
 
 Function* CLIJit::compileNative(VMGenericMethod* genMethod) {
   PRINT_DEBUG(N3_COMPILE, 1, COLOR_NORMAL, "native compile %s\n",
-              mvm::PrintBuffer(compilingMethod));
+              mvm::PrintBuffer(compilingMethod).cString());
     
   const FunctionType *funcType = compilingMethod->getSignature(genMethod);
   
@@ -1125,22 +1118,24 @@
 
 #if N3_EXECUTE > 1
 static void printArgs(std::vector<llvm::Value*> args, BasicBlock* insertAt) {
+	N3 *vm = VMThread::get()->vm;
+
   for (std::vector<llvm::Value*>::iterator i = args.begin(),
        e = args.end(); i!= e; ++i) {
     llvm::Value* arg = *i;
     const llvm::Type* type = arg->getType();
     if (type == Type::getInt8Ty(getGlobalContext()) || type == Type::getInt16Ty(getGlobalContext()) || type == Type::getInt1Ty(getGlobalContext())) {
-      CallInst::Create(module->printIntLLVM, new ZExtInst(arg, Type::getInt32Ty(getGlobalContext()), "", insertAt), "", insertAt);
+      CallInst::Create(vm->module->printIntLLVM, new ZExtInst(arg, Type::getInt32Ty(getGlobalContext()), "", insertAt), "", insertAt);
     } else if (type == Type::getInt32Ty(getGlobalContext())) {
-      CallInst::Create(module->printIntLLVM, arg, "", insertAt);
+      CallInst::Create(vm->module->printIntLLVM, arg, "", insertAt);
     } else if (type == Type::getInt64Ty(getGlobalContext())) {
-      CallInst::Create(module->printLongLLVM, arg, "", insertAt);
+      CallInst::Create(vm->module->printLongLLVM, arg, "", insertAt);
     } else if (type == Type::getFloatTy(getGlobalContext())) {
-      CallInst::Create(module->printFloatLLVM, arg, "", insertAt);
+      CallInst::Create(vm->module->printFloatLLVM, arg, "", insertAt);
     } else if (type == Type::getDoubleTy(getGlobalContext())) {
-      CallInst::Create(module->printDoubleLLVM, arg, "", insertAt);
+      CallInst::Create(vm->module->printDoubleLLVM, arg, "", insertAt);
     } else {
-      CallInst::Create(module->printIntLLVM, new PtrToIntInst(arg, Type::getInt32Ty(getGlobalContext()), "", insertAt), "", insertAt);
+      CallInst::Create(vm->module->printIntLLVM, new PtrToIntInst(arg, Type::getInt32Ty(getGlobalContext()), "", insertAt), "", insertAt);
     }
   }
 
@@ -1463,6 +1458,7 @@
   }
 
 	delete jit;
+	//	printf("Compiling: %s\n", mvm::PrintBuffer(meth).cString());
   return func;
 }
 

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

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/CLIRuntimeJIT.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/CLIRuntimeJIT.cpp Sun Oct 11 10:15:16 2009
@@ -118,7 +118,7 @@
   Enveloppe* enveloppe = cache->enveloppe;
   VMCommonClass* ocl = obj->classOf;
   VMMethod* orig = enveloppe->originalMethod;
-  
+
   CacheNode* rcache = 0;
   CacheNode* tmp = enveloppe->firstCache;
   CacheNode* last = tmp;

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

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/Opcodes.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/Opcodes.cpp Sun Oct 11 10:15:16 2009
@@ -7,9 +7,7 @@
 //
 //===----------------------------------------------------------------------===//
 
-#define DEBUG 0
-#define N3_COMPILE 0
-#define N3_EXECUTE 0
+#include "N3Debug.h"
 
 #include <cstring>
 
@@ -28,8 +26,6 @@
 
 #include "mvm/JIT.h"
 
-#include "debug.h"
-
 #include "Assembly.h"
 #include "CLIJit.h"
 #include "CLIString.h"

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

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VMClass.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/VMClass.cpp Sun Oct 11 10:15:16 2009
@@ -13,7 +13,7 @@
 #include "llvm/DerivedTypes.h"
 #include "llvm/Module.h"
 
-#include "debug.h"
+#include "N3Debug.h"
 #include "types.h"
 #include "mvm/JIT.h"
 #include "mvm/PrintBuffer.h"

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

==============================================================================
--- vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp (original)
+++ vmkit/trunk/lib/N3/VMCore/VirtualTables.cpp Sun Oct 11 10:15:16 2009
@@ -150,7 +150,6 @@
   baseClass->CALL_TRACER;
 }
 
-
 void VMMethod::TRACER {
   delegatee->MARK_AND_TRACE;
   //signature->MARK_AND_TRACE;





More information about the vmkit-commits mailing list