31 #include "ci/ciSymbol.hpp"
32
33 // ciValueKlass
34 //
35 // Specialized ciInstanceKlass for value types.
36 class ciValueKlass : public ciInstanceKlass {
37 CI_PACKAGE_ACCESS
38
39 protected:
40 ciValueKlass(KlassHandle h_k) : ciInstanceKlass(h_k) {
41 assert(is_final(), "ValueKlass must be final");
42 };
43
44 public:
45 bool is_valuetype() const { return true; }
46
47 // Value type factory parameters
48 int param_count() const;
49 int param_size();
50
51 // Value type fields ('index' refers to the value factory parameter index)
52 int get_field_count() { return nof_nonstatic_fields(); }
53 int get_field_index_by_offset(int offset);
54 int get_field_offset_by_index(int index) const;
55 ciType* get_field_type_by_index(int index);
56 int get_first_field_offset() const;
57 };
58
59 #endif // SHARE_VM_CI_CIVALUEKLASS_HPP
|
31 #include "ci/ciSymbol.hpp"
32
33 // ciValueKlass
34 //
35 // Specialized ciInstanceKlass for value types.
36 class ciValueKlass : public ciInstanceKlass {
37 CI_PACKAGE_ACCESS
38
39 protected:
40 ciValueKlass(KlassHandle h_k) : ciInstanceKlass(h_k) {
41 assert(is_final(), "ValueKlass must be final");
42 };
43
44 public:
45 bool is_valuetype() const { return true; }
46
47 // Value type factory parameters
48 int param_count() const;
49 int param_size();
50
51 // Value type fields
52 //
53 // The term index refers to the index in the VM's constant pool
54 // (i.e., to the value returned by fieldDescriptor::index()).
55 // Argument index refers to a field's index in the value factory
56 // parameter mapping.
57 int field_index_for_argument(int arg_index);
58 int get_field_count() { return nof_nonstatic_fields(); }
59 int get_field_index_by_offset(int offset);
60 int get_field_offset_by_index(int index) const;
61 ciType* get_field_type_by_index(int index);
62 int get_first_field_offset() const;
63 };
64
65 #endif // SHARE_VM_CI_CIVALUEKLASS_HPP
|