[llvm-commits] CVS: llvm-java/lib/Compiler/Compiler.cpp
Alkis Evlogimenos
alkis at cs.uiuc.edu
Mon Mar 21 12:01:14 PST 2005
Changes in directory llvm-java/lib/Compiler:
Compiler.cpp updated: 1.238 -> 1.239
---
Log message:
Add more classes so that we can compile java.lang.String.
---
Diffs of the changes: (+32 -26)
Compiler.cpp | 58 ++++++++++++++++++++++++++++++++--------------------------
1 files changed, 32 insertions(+), 26 deletions(-)
Index: llvm-java/lib/Compiler/Compiler.cpp
diff -u llvm-java/lib/Compiler/Compiler.cpp:1.238 llvm-java/lib/Compiler/Compiler.cpp:1.239
--- llvm-java/lib/Compiler/Compiler.cpp:1.238 Mon Mar 21 04:03:52 2005
+++ llvm-java/lib/Compiler/Compiler.cpp Mon Mar 21 14:01:03 2005
@@ -1355,26 +1355,32 @@
assert (!method->isAbstract() && "Trying to compile an abstract method!");
// HACK: skip most of the class libraries.
- if (classMethodDesc.find("java/") == 0 &&
- classMethodDesc.find("java/lang/Object") != 0 &&
- (classMethodDesc.find("java/lang/Throwable") != 0 ||
- classMethodDesc.find("java/lang/Throwable$StaticData/<cl") == 0) &&
- classMethodDesc.find("java/lang/Exception") != 0 &&
- classMethodDesc.find("java/lang/IllegalArgumentException") != 0 &&
- classMethodDesc.find("java/lang/IllegalStateException") != 0 &&
- classMethodDesc.find("java/lang/IndexOutOfBoundsException") != 0 &&
- classMethodDesc.find("java/lang/RuntimeException") != 0 &&
- classMethodDesc.find("java/lang/Math") != 0 &&
- classMethodDesc.find("java/lang/Number") != 0 &&
- classMethodDesc.find("java/lang/Byte") != 0 &&
- classMethodDesc.find("java/lang/Float") != 0 &&
- classMethodDesc.find("java/lang/Integer") != 0 &&
- classMethodDesc.find("java/lang/Long") != 0 &&
- classMethodDesc.find("java/lang/Short") != 0 &&
- classMethodDesc.find("java/lang/StringBuffer") != 0 &&
- classMethodDesc.find("java/lang/System") != 0 &&
- classMethodDesc.find("java/lang/VMSystem") != 0 &&
- classMethodDesc.find("java/util/") != 0) {
+ if ((classMethodDesc.find("java/") == 0 &&
+ classMethodDesc.find("java/lang/Object") != 0 &&
+ (classMethodDesc.find("java/lang/Throwable") != 0 ||
+ classMethodDesc.find("java/lang/Throwable$StaticData/<cl") == 0) &&
+ classMethodDesc.find("java/lang/Exception") != 0 &&
+ classMethodDesc.find("java/lang/IllegalArgumentException") != 0 &&
+ classMethodDesc.find("java/lang/IllegalStateException") != 0 &&
+ classMethodDesc.find("java/lang/IndexOutOfBoundsException") != 0 &&
+ classMethodDesc.find("java/lang/RuntimeException") != 0 &&
+ classMethodDesc.find("java/lang/Math") != 0 &&
+ classMethodDesc.find("java/lang/Number") != 0 &&
+ classMethodDesc.find("java/lang/Byte") != 0 &&
+ classMethodDesc.find("java/lang/Float") != 0 &&
+ classMethodDesc.find("java/lang/Integer") != 0 &&
+ classMethodDesc.find("java/lang/Long") != 0 &&
+ classMethodDesc.find("java/lang/Short") != 0 &&
+ (classMethodDesc.find("java/lang/String") != 0 ||
+ classMethodDesc.find("java/lang/String/<cl") == 0) &&
+ classMethodDesc.find("java/lang/StringBuffer") != 0 &&
+ classMethodDesc.find("java/lang/System") != 0 &&
+ classMethodDesc.find("java/lang/VMSystem") != 0 &&
+ (classMethodDesc.find("java/util/") != 0 ||
+ classMethodDesc.find("java/util/Locale/<cl") == 0 ||
+ classMethodDesc.find("java/util/ResourceBundle/<cl") == 0 ||
+ classMethodDesc.find("java/util/Calendar/<cl") == 0)) ||
+ (classMethodDesc.find("gnu/") == 0)) {
DEBUG(std::cerr << "Skipping compilation of method: "
<< classMethodDesc << '\n');
return function;
@@ -2345,14 +2351,14 @@
void do_anewarray(unsigned index) {
Value* count = pop(Type::UIntTy);
- ConstantClass* classRef = cf_->getConstantClass(index);
- const ClassFile* cf = ClassFile::get(classRef->getName()->str());
const ClassInfo& ci = getObjectArrayInfo();
- const ClassInfo& ei = getClassInfo(cf);
- const VTableInfo& vi = getObjectArrayVTableInfo(cf);
+ // FIXME: Need to do handle different element types. This now
+ // assumes that all arrays of references are arrays of
+ // java/lang/Object's.
+ const VTableInfo& vi =
+ getObjectArrayVTableInfo(ClassFile::get("java/lang/Object"));
- const Type* elementTy = PointerType::get(ei.getType());
- push(allocateArray(ci, elementTy, vi, count, currentBB_));
+ push(allocateArray(ci, ObjectBaseRefTy, vi, count, currentBB_));
}
void do_arraylength() {
More information about the llvm-commits
mailing list