bool is_object_array(void) const { #if ENABLE_COMPILER_TYPE_INFO return must_be_nonnull() && raw_location()->is_exact_type() && raw_location()->class_id() == Universe::object_array_class()->class_id(); #else return check_flags(Value::F_IS_OBJECT_ARRAY); #endif }
bool is_string(void) const { #if ENABLE_COMPILER_TYPE_INFO return must_be_nonnull() && raw_location()->class_id() == Universe::string_class()->class_id(); #else return check_flags(Value::F_IS_STRING); #endif }
bool is_string_array(void) const { #if ENABLE_COMPILER_TYPE_INFO return must_be_nonnull() && raw_location()->class_id() == JavaClass::Raw(Universe::string_class()->array_class())().class_id(); #else return check_flags(Value::F_IS_STRING_ARRAY); #endif }
// The BasicType of the current index BasicType type( void ) const { return raw_location()->type(); }
// Modify a location which had been in Register src to instead be in // in Register dst. All flags remain the same. void change_register(Assembler::Register dst, Assembler::Register src) const { raw_location()->change_register(dst, src); }
jint length(void) const { return raw_location()->length(); }
void mark_as_changed(void) const { raw_location()->mark_as_changed(); }
bool check_flags(const jubyte mask) const { return (raw_location()->flags() & mask) != 0; }
bool is_cached(void) const { return raw_location()->is_cached(); }
void mark_as_flushed(void) const { raw_location()->mark_as_flushed(); }
bool is_immediate(void) const { return raw_location()->where() == Value::T_IMMEDIATE; }
// flush cached or changed values into memory void flush(void) const { raw_location()->flush(index()); }
void write_value (const Value& value) const { raw_location()->write_value(value); }
void read_value(Value& value) const { raw_location()->read_value(value, index()); }
// The BasicType of the current index BasicType type() { return raw_location()->type(); }