115 // The CI treats a klass as loaded if it is consistently defined in 116 // another loader, even if it hasn't yet been loaded in all loaders 117 // that could potentially see it via delegation. 118 ciKlass* get_klass_by_name(ciKlass* accessing_klass, 119 ciSymbol* klass_name, 120 bool require_local); 121 122 // Constant pool access. 123 ciKlass* get_klass_by_index(const constantPoolHandle& cpool, 124 int klass_index, 125 bool& is_accessible, 126 ciInstanceKlass* loading_klass); 127 ciConstant get_constant_by_index(const constantPoolHandle& cpool, 128 int pool_index, int cache_index, 129 ciInstanceKlass* accessor); 130 ciField* get_field_by_index(ciInstanceKlass* loading_klass, 131 int field_index); 132 ciMethod* get_method_by_index(const constantPoolHandle& cpool, 133 int method_index, Bytecodes::Code bc, 134 ciInstanceKlass* loading_klass); 135 bool get_never_null(const constantPoolHandle& cpool, 136 int klass_index); 137 138 // Implementation methods for loading and constant pool access. 139 ciKlass* get_klass_by_name_impl(ciKlass* accessing_klass, 140 const constantPoolHandle& cpool, 141 ciSymbol* klass_name, 142 bool require_local, 143 bool is_value_type = false); 144 ciKlass* get_klass_by_index_impl(const constantPoolHandle& cpool, 145 int klass_index, 146 bool& is_accessible, 147 ciInstanceKlass* loading_klass); 148 ciConstant get_constant_by_index_impl(const constantPoolHandle& cpool, 149 int pool_index, int cache_index, 150 ciInstanceKlass* loading_klass); 151 ciField* get_field_by_index_impl(ciInstanceKlass* loading_klass, 152 int field_index); 153 ciMethod* get_method_by_index_impl(const constantPoolHandle& cpool, 154 int method_index, Bytecodes::Code bc, 155 ciInstanceKlass* loading_klass); 156 bool get_never_null_impl(const constantPoolHandle& cpool, 157 int klass_index); 158 159 // Helper methods 160 bool check_klass_accessibility(ciKlass* accessing_klass, 161 Klass* resolved_klass); 162 Method* lookup_method(ciInstanceKlass* accessor, 163 ciKlass* holder, 164 Symbol* name, 165 Symbol* sig, 166 Bytecodes::Code bc, 167 constantTag tag); 168 169 // Get a ciObject from the object factory. Ensures uniqueness 170 // of ciObjects. 171 ciObject* get_object(oop o) { 172 if (o == NULL) { 173 return _null_object_instance; 174 } else { 175 return _factory->get(o); 176 } | 115 // The CI treats a klass as loaded if it is consistently defined in 116 // another loader, even if it hasn't yet been loaded in all loaders 117 // that could potentially see it via delegation. 118 ciKlass* get_klass_by_name(ciKlass* accessing_klass, 119 ciSymbol* klass_name, 120 bool require_local); 121 122 // Constant pool access. 123 ciKlass* get_klass_by_index(const constantPoolHandle& cpool, 124 int klass_index, 125 bool& is_accessible, 126 ciInstanceKlass* loading_klass); 127 ciConstant get_constant_by_index(const constantPoolHandle& cpool, 128 int pool_index, int cache_index, 129 ciInstanceKlass* accessor); 130 ciField* get_field_by_index(ciInstanceKlass* loading_klass, 131 int field_index); 132 ciMethod* get_method_by_index(const constantPoolHandle& cpool, 133 int method_index, Bytecodes::Code bc, 134 ciInstanceKlass* loading_klass); 135 bool is_klass_never_null(const constantPoolHandle& cpool, 136 int klass_index); 137 138 // Implementation methods for loading and constant pool access. 139 ciKlass* get_klass_by_name_impl(ciKlass* accessing_klass, 140 const constantPoolHandle& cpool, 141 ciSymbol* klass_name, 142 bool require_local, 143 bool is_value_type = false); 144 ciKlass* get_klass_by_index_impl(const constantPoolHandle& cpool, 145 int klass_index, 146 bool& is_accessible, 147 ciInstanceKlass* loading_klass); 148 ciConstant get_constant_by_index_impl(const constantPoolHandle& cpool, 149 int pool_index, int cache_index, 150 ciInstanceKlass* loading_klass); 151 ciField* get_field_by_index_impl(ciInstanceKlass* loading_klass, 152 int field_index); 153 ciMethod* get_method_by_index_impl(const constantPoolHandle& cpool, 154 int method_index, Bytecodes::Code bc, 155 ciInstanceKlass* loading_klass); 156 bool is_klass_never_null_impl(const constantPoolHandle& cpool, 157 int klass_index); 158 159 // Helper methods 160 bool check_klass_accessibility(ciKlass* accessing_klass, 161 Klass* resolved_klass); 162 Method* lookup_method(ciInstanceKlass* accessor, 163 ciKlass* holder, 164 Symbol* name, 165 Symbol* sig, 166 Bytecodes::Code bc, 167 constantTag tag); 168 169 // Get a ciObject from the object factory. Ensures uniqueness 170 // of ciObjects. 171 ciObject* get_object(oop o) { 172 if (o == NULL) { 173 return _null_object_instance; 174 } else { 175 return _factory->get(o); 176 } |