[vmkit-commits] [vmkit] r71551 - in /vmkit/trunk/lib/JnJVM/VMCore: JavaArray.h JavaClass.cpp JavaClass.h JavaObject.cpp
Nicolas Geoffray
nicolas.geoffray at lip6.fr
Tue May 12 05:49:15 PDT 2009
Author: geoffray
Date: Tue May 12 07:49:06 2009
New Revision: 71551
URL: http://llvm.org/viewvc/llvm-project?rev=71551&view=rev
Log:
Don't create UTF8s when comparing type names.
Modified:
vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h?rev=71551&r1=71550&r2=71551&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaArray.h Tue May 12 07:49:06 2009
@@ -157,12 +157,18 @@
return UTF8ToAsciiz();
}
- /// equals - Are the two UTF8s equals?
+ /// equals - Are the two UTF8s equal?
bool equals(const UTF8* other) const {
if (other == this) return true;
else if (size != other->size) return false;
else return !memcmp(elements, other->elements, size * sizeof(uint16));
}
+
+ /// equals - Does the UTF8 equal to the buffer?
+ bool equals(const uint16* buf, sint32 len) const {
+ if (size != len) return false;
+ else return !memcmp(elements, buf, size * sizeof(uint16));
+ }
/// lessThan - strcmp-like function for UTF8s, used by hash tables.
bool lessThan(const UTF8* other) const {
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp?rev=71551&r1=71550&r2=71551&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.cpp Tue May 12 07:49:06 2009
@@ -525,23 +525,23 @@
return res;
}
-bool UserCommonClass::inheritName(const UTF8* Tname) {
- if (getName()->equals(Tname)) {
+bool UserCommonClass::inheritName(const uint16* buf, uint32 len) {
+ if (getName()->equals(buf, len)) {
return true;
} else if (isPrimitive()) {
return false;
} else if (super) {
- if (getSuper()->inheritName(Tname)) return true;
+ if (getSuper()->inheritName(buf, len)) return true;
}
for (uint32 i = 0; i < nbInterfaces; ++i) {
- if (interfaces[i]->inheritName(Tname)) return true;
+ if (interfaces[i]->inheritName(buf, len)) return true;
}
return false;
}
-bool UserCommonClass::isOfTypeName(Jnjvm* vm, const UTF8* Tname) {
- if (inheritName(Tname)) {
+bool UserCommonClass::isOfTypeName(const UTF8* Tname) {
+ if (inheritName(Tname->elements, Tname->size)) {
return true;
} else if (isArray()) {
UserCommonClass* curS = this;
@@ -558,7 +558,7 @@
}
return (Tname->elements[prof] == I_REF) &&
- (res && curS->inheritName(Tname->extract(vm, prof + 1, len - 1)));
+ (res && curS->inheritName(&(Tname->elements[prof + 1]), len - 1));
} else {
return false;
}
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h?rev=71551&r1=71550&r2=71551&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaClass.h Tue May 12 07:49:06 2009
@@ -440,12 +440,12 @@
/// the given name? Equality is on the name. This function does not take
/// into account array classes.
///
- bool inheritName(const UTF8* Tname);
+ bool inheritName(const uint16* buf, uint32 len);
/// isOfTypeName - Does this class inherits the given name? Equality is on
/// the name. This function takes into account array classes.
///
- bool isOfTypeName(Jnjvm* vm, const UTF8* Tname);
+ bool isOfTypeName(const UTF8* Tname);
/// isAssignableFrom - Is this class assignable from the given class? The
/// classes may be of any type.
Modified: vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp
URL: http://llvm.org/viewvc/llvm-project/vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp?rev=71551&r1=71550&r2=71551&view=diff
==============================================================================
--- vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp (original)
+++ vmkit/trunk/lib/JnJVM/VMCore/JavaObject.cpp Tue May 12 07:49:06 2009
@@ -158,7 +158,7 @@
JavaObject* obj = this;
if (!signature->isPrimitive()) {
- if (obj && !(obj->getClass()->isOfTypeName(vm, signature->getName()))) {
+ if (obj && !(obj->getClass()->isOfTypeName(signature->getName()))) {
vm->illegalArgumentException("wrong type argument");
}
((JavaObject**)buf)[0] = obj;
More information about the vmkit-commits
mailing list