equal
deleted
inserted
replaced
2429 } |
2429 } |
2430 |
2430 |
2431 //------------------------------make_from_constant----------------------------- |
2431 //------------------------------make_from_constant----------------------------- |
2432 // Make a java pointer from an oop constant |
2432 // Make a java pointer from an oop constant |
2433 const TypeOopPtr* TypeOopPtr::make_from_constant(ciObject* o, bool require_constant) { |
2433 const TypeOopPtr* TypeOopPtr::make_from_constant(ciObject* o, bool require_constant) { |
2434 if (o->is_method_data() || o->is_method()) { |
2434 if (o->is_method_data() || o->is_method() || o->is_cpcache()) { |
2435 // Treat much like a typeArray of bytes, like below, but fake the type... |
2435 // Treat much like a typeArray of bytes, like below, but fake the type... |
2436 const Type* etype = (Type*)get_const_basic_type(T_BYTE); |
2436 const Type* etype = (Type*)get_const_basic_type(T_BYTE); |
2437 const TypeAry* arr0 = TypeAry::make(etype, TypeInt::POS); |
2437 const TypeAry* arr0 = TypeAry::make(etype, TypeInt::POS); |
2438 ciKlass *klass = ciTypeArrayKlass::make((BasicType) T_BYTE); |
2438 ciKlass *klass = ciTypeArrayKlass::make((BasicType) T_BYTE); |
2439 assert(o->can_be_constant(), "method data oops should be tenured"); |
2439 assert(o->can_be_constant(), "method data oops should be tenured"); |
3964 const TypeFunc *TypeFunc::make(ciMethod* method) { |
3964 const TypeFunc *TypeFunc::make(ciMethod* method) { |
3965 Compile* C = Compile::current(); |
3965 Compile* C = Compile::current(); |
3966 const TypeFunc* tf = C->last_tf(method); // check cache |
3966 const TypeFunc* tf = C->last_tf(method); // check cache |
3967 if (tf != NULL) return tf; // The hit rate here is almost 50%. |
3967 if (tf != NULL) return tf; // The hit rate here is almost 50%. |
3968 const TypeTuple *domain; |
3968 const TypeTuple *domain; |
3969 if (method->flags().is_static()) { |
3969 if (method->is_static()) { |
3970 domain = TypeTuple::make_domain(NULL, method->signature()); |
3970 domain = TypeTuple::make_domain(NULL, method->signature()); |
3971 } else { |
3971 } else { |
3972 domain = TypeTuple::make_domain(method->holder(), method->signature()); |
3972 domain = TypeTuple::make_domain(method->holder(), method->signature()); |
3973 } |
3973 } |
3974 const TypeTuple *range = TypeTuple::make_range(method->signature()); |
3974 const TypeTuple *range = TypeTuple::make_range(method->signature()); |