[vmkit-commits] [vmkit] r198237 - Don't fill the body of the Java llvm types anymore.

Gael Thomas gael.thomas at lip6.fr
Mon Dec 30 11:02:53 PST 2013


Author: gthomas
Date: Mon Dec 30 13:02:53 2013
New Revision: 198237

URL: http://llvm.org/viewvc/llvm-project?rev=198237&view=rev
Log:
Don't fill the body of the Java llvm types anymore.

Modified:
    vmkit/branches/mcjit/include/j3/j3class.h
    vmkit/branches/mcjit/lib/j3/vm/j3class.cc

Modified: vmkit/branches/mcjit/include/j3/j3class.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/include/j3/j3class.h?rev=198237&r1=198236&r2=198237&view=diff
==============================================================================
--- vmkit/branches/mcjit/include/j3/j3class.h (original)
+++ vmkit/branches/mcjit/include/j3/j3class.h Mon Dec 30 13:02:53 2013
@@ -243,11 +243,11 @@ namespace j3 {
 		J3ObjectHandle*    _staticInstance;
 
 		J3Attributes* readAttributes(J3Reader* reader);
-		void          readClassBytes(std::vector<llvm::Type*>* virtualBody, J3Field* hiddenFields, uint32_t nbHiddenFields);
+		void          readClassBytes(J3Field* hiddenFields, uint32_t nbHiddenFields);
 
 		void          check(uint16_t idx, uint32_t id=-1);
 
-		void          fillFields(std::vector<llvm::Type*>* staticBody, std::vector<llvm::Type*>* virtualBody, J3Field** fields, size_t n);
+		void          fillFields(J3Field** fields, size_t n);
 
 		void          createLLVMTypes();
 		void          doNativeName();

Modified: vmkit/branches/mcjit/lib/j3/vm/j3class.cc
URL: http://llvm.org/viewvc/llvm-project/vmkit/branches/mcjit/lib/j3/vm/j3class.cc?rev=198237&r1=198236&r2=198237&view=diff
==============================================================================
--- vmkit/branches/mcjit/lib/j3/vm/j3class.cc (original)
+++ vmkit/branches/mcjit/lib/j3/vm/j3class.cc Mon Dec 30 13:02:53 2013
@@ -390,9 +390,8 @@ void J3Class::doInitialise() {
 			interfaces()[i]->initialise();
 
 		J3ObjectHandle* prev = J3Thread::get()->tell();
-		J3ObjectHandle* stacked = J3ObjectHandle::allocate(staticLayout.vt(),
-																											 loader()->vm()->dataLayout()->getTypeAllocSize(staticLayout.llvmType()
-																																																			->getContainedType(0)));
+		J3ObjectHandle* stacked = J3ObjectHandle::allocate(staticLayout.vt(), staticLayout.structSize());
+
 		_staticInstance = loader()->globalReferences()->add(stacked);
 		J3Thread::get()->restore(prev);
 
@@ -436,18 +435,9 @@ void J3Class::doResolve(J3Field* hiddenF
 		if(loader()->vm()->options()->debugResolve)
 			fprintf(stderr, "Resolving: %ls\n", name()->cStr());
 
-		std::vector<llvm::Type*> virtualBody;
 		status = RESOLVED;
-		readClassBytes(&virtualBody, hiddenFields, nbHiddenFields);
+		readClassBytes(hiddenFields, nbHiddenFields);
 		
-		if(super() == this) {
-			virtualBody[0] = loader()->vm()->typeJ3Object;
-		} else {
-			virtualBody[0] = super()->llvmType()->getContainedType(0);
-		}
-
-		llvm::cast<llvm::StructType>(llvmType()->getContainedType(0))->setBody(virtualBody);
-
 		staticLayout._vt = J3VirtualTable::create(&staticLayout);
 
 		_vt = J3VirtualTable::create(this);
@@ -462,7 +452,7 @@ void J3Class::doResolve(J3Field* hiddenF
 	unlock();
 }
 
-void J3Class::readClassBytes(std::vector<llvm::Type*>* virtualBody, J3Field* hiddenFields, uint32_t nbHiddenFields) {
+void J3Class::readClassBytes(J3Field* hiddenFields, uint32_t nbHiddenFields) {
 	J3Reader reader(_bytes);
 
 	uint32_t magic = reader.readU4();
@@ -580,11 +570,6 @@ void J3Class::readClassBytes(std::vector
 	staticLayout.fields = new(loader()->allocator()) J3Field[nbStaticFields];
 	fields = new(loader()->allocator()) J3Field[nbVirtualFields];
 
-	std::vector<llvm::Type*> staticBody;
-
-	staticBody.push_back(loader()->vm()->typeJ3Object);
-	virtualBody->push_back(0);
-
 	if(super() == this)
 		_structSize = sizeof(J3Object);
 	else {
@@ -594,15 +579,13 @@ void J3Class::readClassBytes(std::vector
 
 	_structSize = ((_structSize - 1) & -sizeof(uintptr_t)) + sizeof(uintptr_t);
 
-	fillFields(&staticBody, virtualBody, pFields3, i3);
-	fillFields(&staticBody, virtualBody, pFields2, i2);
-	fillFields(&staticBody, virtualBody, pFields1, i1);
-	fillFields(&staticBody, virtualBody, pFields0, i0);
+	fillFields(pFields3, i3);
+	fillFields(pFields2, i2);
+	fillFields(pFields1, i1);
+	fillFields(pFields0, i0);
 
 	staticLLVMType()->getContainedType(0);
 
-	llvm::cast<llvm::StructType>(staticLLVMType()->getContainedType(0))->setBody(staticBody);
-
 	//fprintf(stderr, "static part of %ls: ", name()->cStr());
 	//staticLayout.llvmType()->getContainedType(0)->dump();
 	//fprintf(stderr, "\n");
@@ -644,7 +627,7 @@ void J3Class::readClassBytes(std::vector
 	_attributes = readAttributes(&reader);
 }
 
-void J3Class::fillFields(std::vector<llvm::Type*>* staticBody, std::vector<llvm::Type*>* virtualBody, J3Field** fields, size_t n) {
+void J3Class::fillFields(J3Field** fields, size_t n) {
 	for(size_t i=0; i<n; i++) {
 		J3Field*  cur = fields[i];
 		J3Layout* layout;
@@ -652,10 +635,8 @@ void J3Class::fillFields(std::vector<llv
 		if(J3Cst::isStatic(fields[i]->access())) {
 			//fprintf(stderr, "   adding static field: %ls %ls::%ls\n", cur->type()->name()->cStr(), name()->cStr(), cur->name()->cStr());
 			layout = &staticLayout;
-			staticBody->push_back(cur->type()->llvmType());
 		} else {
 			layout = this;
-			virtualBody->push_back(cur->type()->llvmType());
 		}
 		cur->_offset = layout->structSize();
 		layout->_structSize += 1 << fields[i]->type()->logSize();





More information about the vmkit-commits mailing list