[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