[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