comparison src/share/vm/ci/ciMethod.hpp @ 2044:06f017f7daa7

Merge.
author Thomas Wuerthinger <wuerthinger@ssw.jku.at>
date Fri, 07 Jan 2011 18:18:08 +0100
parents 5ddfcf4b079e
children 8012aa3ccede
comparison
equal deleted inserted replaced
1942:00bc9eaf0e24 2044:06f017f7daa7
19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
20 * or visit www.oracle.com if you need additional information or have any 20 * or visit www.oracle.com if you need additional information or have any
21 * questions. 21 * questions.
22 * 22 *
23 */ 23 */
24
25 #ifndef SHARE_VM_CI_CIMETHOD_HPP
26 #define SHARE_VM_CI_CIMETHOD_HPP
27
28 #include "ci/ciFlags.hpp"
29 #include "ci/ciInstanceKlass.hpp"
30 #include "ci/ciObject.hpp"
31 #include "ci/ciSignature.hpp"
32 #include "compiler/methodLiveness.hpp"
33 #include "prims/methodHandles.hpp"
34 #include "utilities/bitMap.hpp"
24 35
25 class ciMethodBlocks; 36 class ciMethodBlocks;
26 class MethodLiveness; 37 class MethodLiveness;
27 class BitMap; 38 class BitMap;
28 class Arena; 39 class Arena;
93 104
94 void load_code(); 105 void load_code();
95 106
96 void check_is_loaded() const { assert(is_loaded(), "not loaded"); } 107 void check_is_loaded() const { assert(is_loaded(), "not loaded"); }
97 108
98 void build_method_data(methodHandle h_m); 109 bool ensure_method_data(methodHandle h_m);
99 110
100 void code_at_put(int bci, Bytecodes::Code code) { 111 void code_at_put(int bci, Bytecodes::Code code) {
101 Bytecodes::check(code); 112 Bytecodes::check(code);
102 assert(0 <= bci && bci < code_size(), "valid bci"); 113 assert(0 <= bci && bci < code_size(), "valid bci");
103 address bcp = _code + bci; 114 address bcp = _code + bci;
108 // Basic method information. 119 // Basic method information.
109 ciFlags flags() const { check_is_loaded(); return _flags; } 120 ciFlags flags() const { check_is_loaded(); return _flags; }
110 ciSymbol* name() const { return _name; } 121 ciSymbol* name() const { return _name; }
111 ciInstanceKlass* holder() const { return _holder; } 122 ciInstanceKlass* holder() const { return _holder; }
112 ciMethodData* method_data(); 123 ciMethodData* method_data();
124 ciMethodData* method_data_or_null();
113 125
114 // Signature information. 126 // Signature information.
115 ciSignature* signature() const { return _signature; } 127 ciSignature* signature() const { return _signature; }
116 ciType* return_type() const { return _signature->return_type(); } 128 ciType* return_type() const { return _signature->return_type(); }
117 int arg_size_no_receiver() const { return _signature->size(); } 129 int arg_size_no_receiver() const { return _signature->size(); }
217 bool is_not_reached(int bci); 229 bool is_not_reached(int bci);
218 bool was_executed_more_than(int times); 230 bool was_executed_more_than(int times);
219 bool has_unloaded_classes_in_signature(); 231 bool has_unloaded_classes_in_signature();
220 bool is_klass_loaded(int refinfo_index, bool must_be_resolved) const; 232 bool is_klass_loaded(int refinfo_index, bool must_be_resolved) const;
221 bool check_call(int refinfo_index, bool is_static) const; 233 bool check_call(int refinfo_index, bool is_static) const;
222 void build_method_data(); // make sure it exists in the VM also 234 bool ensure_method_data(); // make sure it exists in the VM also
223 int scale_count(int count, float prof_factor = 1.); // make MDO count commensurate with IIC 235 int scale_count(int count, float prof_factor = 1.); // make MDO count commensurate with IIC
224 236
225 // JSR 292 support 237 // JSR 292 support
226 bool is_method_handle_invoke() const; 238 bool is_method_handle_invoke() const;
227 bool is_method_handle_adapter() const; 239 bool is_method_handle_adapter() const;
267 klassOop receiver_limit_oop = NULL; 279 klassOop receiver_limit_oop = NULL;
268 int flags = 0; 280 int flags = 0;
269 return MethodHandles::decode_method(get_oop(), receiver_limit_oop, flags); 281 return MethodHandles::decode_method(get_oop(), receiver_limit_oop, flags);
270 } 282 }
271 }; 283 };
284
285 #endif // SHARE_VM_CI_CIMETHOD_HPP