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

Tom Rodriguez Thomas.Rodriguez at Sun.COM
Wed Dec 2 15:19:42 PST 2009


doCall.cpp:

+       if (n->is_Con()) {
+         assert(n->Opcode() == Op_ConP, "sanity");
+         ConPNode* con = (ConPNode*) n;  // XXX Is there another way?
+         const Type* t = con->type();
+         const TypeOopPtr* oop_ptr = t->isa_oopptr();

You could also write this as:

if (n->Opcode() == Op_ConP) {
  const TypeOopPtr* oop_ptr = n->bottom_type()->is_oopptr();

is_Con() would return true for top if that somehow managed to sneak in there.

what this about?

+         // XXX The returned direct call to target_method is not a MH
+         // invoke and does not work.
+         //if (hit_cg != NULL)
+         if (hit_cg != NULL && hit_cg->is_inline())
+           return hit_cg;

could the commented piece simply be deleted or is there some lingering question here?

otherwise this looks good.

tom

On Dec 2, 2009, at 4:18 AM, Christian Thalinger wrote:

> On Tue, 2009-12-01 at 14:51 -0800, Vladimir Kozlov wrote:
>> src/share/vm/ci/ciExceptionHandler.cpp
>> I think you need to add assert since you removed
>> assert(accessor->get_instanceKlass()->is_linked()) in ciEnv.cpp
> 
> Done.
> 
>> 
>> src/share/vm/runtime/frame.hpp
>> rename is_static to has_receiver in oops_compiled_arguments_do()
> 
> Thanks, I missed that one.
> 
>> 
>> src/share/vm/prims/methodHandleWalk.hpp
>> remove commented lines
>> ! //     union {
>> !       jvalue _value;
>> !       Handle _handle;
>> ! //     } _value;
> 
> Right.  Actually I wanted to have some kind of union here, but it does
> not work.
> 
> Updated webrev here:
> 
> http://cr.openjdk.java.net/~twisti/6893268/webrev.02/
> 
> -- Christian
> 



More information about the hotspot-compiler-dev mailing list