Request for reviews (XXL): 6893268: additional dynamic language related optimizations in C2

Christian Thalinger Christian.Thalinger at Sun.COM
Fri Dec 4 05:26:11 PST 2009


On Thu, 2009-12-03 at 10:18 -0800, Tom Rodriguez wrote:
> ciKlass.cpp:  is_in_package isn't really safe since it's not checking
> for the trailing dot after the package name so it would return true if
> only the prefix matches.  It works fine for your case but it should be
> correct for all cases.  

Fixed.  Well... (see below).

> Any reason you're using external_name instead of the symbolOop itself?
> external_name requires allocation and conversion.

I think I used external_name() because it returns the name with / to .
converted and probably because I didn't see that symbolOop has an
equals() method.

But I just noticed that symbolOopDesc::equals(const char* str, int len)
also checks that the length is the same, which I didn't expect (given
there is a len argument).

So I added three methods to symbolOopDesc:

+  bool equals(const char* str) const { return equals(str, (int) strlen(str)); }
+
+  // Tests if the symbol starts with the given prefix.
+  bool starts_with(const char* prefix, int len) const;
+  bool starts_with(const char* prefix) const {
+    return starts_with(prefix, (int) strlen(prefix));
+  }

and used the first one in places where it's appropriate.  Here is a
webrev of the changes:

http://cr.openjdk.java.net/~twisti/starts_with/webrev.01/

Could I roll that into this change?

-- Christian



More information about the hotspot-compiler-dev mailing list