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_object_array(void) const { GUARANTEE(type() == T_OBJECT || type() == T_ARRAY, "object type"); #if ENABLE_COMPILER_TYPE_INFO return must_be_nonnull() && is_exact_type() && class_id() == Universe::object_array_class()->class_id(); #else return (_flags & F_IS_OBJECT_ARRAY) != 0; #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 }
bool is_string(void) const { GUARANTEE(type() == T_OBJECT || type() == T_ARRAY, "object type"); #if ENABLE_COMPILER_TYPE_INFO GUARANTEE(Universe::string_class()->is_final_type(), "Assuming String is final"); return must_be_nonnull() && class_id() == Universe::string_class()->class_id(); #else return (_flags & F_IS_STRING) != 0; #endif }
void set_must_be_null(void) { GUARANTEE(type() == T_OBJECT || type() == T_ARRAY, "object type"); GUARANTEE(!must_be_nonnull(), "Can't be both null and nonnull"); _flags = (jubyte) (_flags | F_MUST_BE_NULL); }