comparison src/share/vm/oops/constantPoolOop.hpp @ 3461:81d815b05abb

7056328: JSR 292 invocation sometimes fails in adapters for types not on boot class path Reviewed-by: never
author jrose
date Thu, 23 Jun 2011 17:14:06 -0700
parents ed69575596ac
children 96c40b338c1a d2a62e0f25eb
comparison
equal deleted inserted replaced
3460:e9b51b4bdcc7 3461:81d815b05abb
101 101
102 void set_operands(typeArrayOop operands) { oop_store_without_check((oop*)&_operands, operands); } 102 void set_operands(typeArrayOop operands) { oop_store_without_check((oop*)&_operands, operands); }
103 103
104 enum FlagBit { 104 enum FlagBit {
105 FB_has_invokedynamic = 1, 105 FB_has_invokedynamic = 1,
106 FB_has_pseudo_string = 2 106 FB_has_pseudo_string = 2,
107 FB_has_preresolution = 3
107 }; 108 };
108 109
109 int flags() const { return _flags; } 110 int flags() const { return _flags; }
110 void set_flags(int f) { _flags = f; } 111 void set_flags(int f) { _flags = f; }
111 bool flag_at(FlagBit fb) const { return (_flags & (1 << (int)fb)) != 0; } 112 bool flag_at(FlagBit fb) const { return (_flags & (1 << (int)fb)) != 0; }
177 typeArrayOop tags() const { return _tags; } 178 typeArrayOop tags() const { return _tags; }
178 typeArrayOop operands() const { return _operands; } 179 typeArrayOop operands() const { return _operands; }
179 180
180 bool has_pseudo_string() const { return flag_at(FB_has_pseudo_string); } 181 bool has_pseudo_string() const { return flag_at(FB_has_pseudo_string); }
181 bool has_invokedynamic() const { return flag_at(FB_has_invokedynamic); } 182 bool has_invokedynamic() const { return flag_at(FB_has_invokedynamic); }
183 bool has_preresolution() const { return flag_at(FB_has_preresolution); }
182 void set_pseudo_string() { set_flag_at(FB_has_pseudo_string); } 184 void set_pseudo_string() { set_flag_at(FB_has_pseudo_string); }
183 void set_invokedynamic() { set_flag_at(FB_has_invokedynamic); } 185 void set_invokedynamic() { set_flag_at(FB_has_invokedynamic); }
186 void set_preresolution() { set_flag_at(FB_has_preresolution); }
184 187
185 // Klass holding pool 188 // Klass holding pool
186 klassOop pool_holder() const { return _pool_holder; } 189 klassOop pool_holder() const { return _pool_holder; }
187 void set_pool_holder(klassOop k) { oop_store_without_check((oop*)&_pool_holder, (oop) k); } 190 void set_pool_holder(klassOop k) { oop_store_without_check((oop*)&_pool_holder, (oop) k); }
188 oop* pool_holder_addr() { return (oop*)&_pool_holder; } 191 oop* pool_holder_addr() { return (oop*)&_pool_holder; }
661 friend class constantPoolKlass; 664 friend class constantPoolKlass;
662 friend class ClassFileParser; 665 friend class ClassFileParser;
663 friend class SystemDictionary; 666 friend class SystemDictionary;
664 667
665 // Used by compiler to prevent classloading. 668 // Used by compiler to prevent classloading.
669 static methodOop method_at_if_loaded (constantPoolHandle this_oop, int which,
670 Bytecodes::Code bc = Bytecodes::_illegal);
666 static klassOop klass_at_if_loaded (constantPoolHandle this_oop, int which); 671 static klassOop klass_at_if_loaded (constantPoolHandle this_oop, int which);
667 static klassOop klass_ref_at_if_loaded (constantPoolHandle this_oop, int which); 672 static klassOop klass_ref_at_if_loaded (constantPoolHandle this_oop, int which);
668 // Same as above - but does LinkResolving. 673 // Same as above - but does LinkResolving.
669 static klassOop klass_ref_at_if_loaded_check(constantPoolHandle this_oop, int which, TRAPS); 674 static klassOop klass_ref_at_if_loaded_check(constantPoolHandle this_oop, int which, TRAPS);
670 675