[llvm-commits] CVS: llvm-java/lib/Compiler/VMClass.cpp Resolver.h Resolver.cpp

Alkis Evlogimenos alkis at cs.uiuc.edu
Mon Mar 28 15:14:51 PST 2005



Changes in directory llvm-java/lib/Compiler:

VMClass.cpp updated: 1.14 -> 1.15
Resolver.h updated: 1.8 -> 1.9
Resolver.cpp updated: 1.6 -> 1.7
---
Log message:

Lazily create primitive classes.


---
Diffs of the changes:  (+23 -17)

 Resolver.cpp |   33 ++++++++++++++++++++-------------
 Resolver.h   |    3 ---
 VMClass.cpp  |    4 +++-
 3 files changed, 23 insertions(+), 17 deletions(-)


Index: llvm-java/lib/Compiler/VMClass.cpp
diff -u llvm-java/lib/Compiler/VMClass.cpp:1.14 llvm-java/lib/Compiler/VMClass.cpp:1.15
--- llvm-java/lib/Compiler/VMClass.cpp:1.14	Mon Mar 28 13:53:24 2005
+++ llvm-java/lib/Compiler/VMClass.cpp	Mon Mar 28 17:14:41 2005
@@ -91,7 +91,9 @@
 
 void VMClass::link()
 {
-  assert(!isPrimitive() && "Should not link primitive classes!");
+  // Primitive classes require no linking.
+  if (isPrimitive())
+    return;
 
   if (isArray()) {
     superClasses_.reserve(1);


Index: llvm-java/lib/Compiler/Resolver.h
diff -u llvm-java/lib/Compiler/Resolver.h:1.8 llvm-java/lib/Compiler/Resolver.h:1.9
--- llvm-java/lib/Compiler/Resolver.h:1.8	Mon Mar 28 13:53:24 2005
+++ llvm-java/lib/Compiler/Resolver.h	Mon Mar 28 17:14:41 2005
@@ -39,9 +39,6 @@
                               unsigned& i,
                               bool memberMethod = false) const;
 
-    std::pair<ClassMap::iterator, bool> insertClass(const VMClass& clazz) {
-      return classMap_.insert(std::make_pair(clazz.getName(), clazz));
-    }
     ClassMap::iterator insertClass(ClassMap::iterator i, const VMClass& clazz) {
       return classMap_.insert(i, std::make_pair(clazz.getName(), clazz));
     }


Index: llvm-java/lib/Compiler/Resolver.cpp
diff -u llvm-java/lib/Compiler/Resolver.cpp:1.6 llvm-java/lib/Compiler/Resolver.cpp:1.7
--- llvm-java/lib/Compiler/Resolver.cpp:1.6	Mon Mar 28 13:53:24 2005
+++ llvm-java/lib/Compiler/Resolver.cpp	Mon Mar 28 17:14:41 2005
@@ -27,16 +27,6 @@
     objectBaseType_(OpaqueType::get()),
     objectBaseRefType_(PointerType::get(objectBaseType_))
 {
-  insertClass(VMClass(this, Type::SByteTy));
-  insertClass(VMClass(this, Type::UShortTy));
-  insertClass(VMClass(this, Type::DoubleTy));
-  insertClass(VMClass(this, Type::FloatTy));
-  insertClass(VMClass(this, Type::IntTy));
-  insertClass(VMClass(this, Type::LongTy));
-  insertClass(VMClass(this, Type::ShortTy));
-  insertClass(VMClass(this, Type::BoolTy));
-  insertClass(VMClass(this, Type::VoidTy));
-
   module_->addTypeName("struct.llvm_java_object_base", objectBaseType_);
 }
 
@@ -95,16 +85,32 @@
     DEBUG(std::cerr << "Loading class: " << descriptor << '\n');
     switch (descriptor[0]) {
     case 'B':
+      it = insertClass(it, VMClass(this, Type::SByteTy));
+      break;
     case 'C':
+      it = insertClass(it, VMClass(this, Type::UShortTy));
+      break;
     case 'D':
+      it = insertClass(it, VMClass(this, Type::DoubleTy));
+      break;
     case 'F':
+      it = insertClass(it, VMClass(this, Type::FloatTy));
+      break;
     case 'I':
+      it = insertClass(it, VMClass(this, Type::IntTy));
+      break;
     case 'J':
+      it = insertClass(it, VMClass(this, Type::LongTy));
+      break;
     case 'S':
+      it = insertClass(it, VMClass(this, Type::ShortTy));
+      break;
     case 'Z':
+      it = insertClass(it, VMClass(this, Type::BoolTy));
+      break;
     case 'V':
-      assert(0 && "Primitive classes should already be in the map!");
-      abort();
+      it = insertClass(it, VMClass(this, Type::VoidTy));
+      break;
     case 'L': {
       unsigned pos = descriptor.find(';', 1);
       const std::string& className = descriptor.substr(1, pos - 1);
@@ -121,7 +127,8 @@
       abort();
     }
     it->second.link();
-    module_->addTypeName(descriptor, it->second.getStructType());
+    if (!it->second.isPrimitive())
+      module_->addTypeName(descriptor, it->second.getStructType());
     DEBUG(std::cerr << "Loaded class: " << descriptor << '\n');
   }
 






More information about the llvm-commits mailing list