< prev index next >

src/share/vm/ci/ciValueKlass.hpp

Print this page

        

*** 24,36 **** --- 24,38 ---- #ifndef SHARE_VM_CI_CIVALUEKLASS_HPP #define SHARE_VM_CI_CIVALUEKLASS_HPP #include "ci/ciConstantPoolCache.hpp" + #include "ci/ciEnv.hpp" #include "ci/ciFlags.hpp" #include "ci/ciInstanceKlass.hpp" #include "ci/ciSymbol.hpp" + #include "oops/valueKlass.hpp" // ciValueKlass // // Specialized ciInstanceKlass for value types. class ciValueKlass : public ciInstanceKlass {
*** 50,59 **** --- 52,65 ---- }; const char* type_string() { return "ciValueKlass"; } int compute_field_index_map(); + ValueKlass* get_valueKlass() const { + return ValueKlass::cast(get_Klass()); + } + public: bool is_valuetype() const { return true; } bool flatten_array() const; bool contains_oops() const;
*** 67,74 **** --- 73,86 ---- int field_offset_by_index(int index); ciType* field_type_by_index(int index); int first_field_offset() const; int value_arg_slots(); + + // Can a value type instance of this type be returned as multiple + // returned values? + bool can_be_returned_as_fields() const { + return this != ciEnv::current()->___Value_klass() && get_valueKlass()->return_regs() != NULL; + } }; #endif // SHARE_VM_CI_CIVALUEKLASS_HPP
< prev index next >