ScopedPtrHolder& operator= (ScopedPtrHolder const& ref) { must_be_null (*this); must_be_null (ref); return *this; }
friend void transfer_control (ScopedPtrHolder& from, ScopedPtrHolder& to) { if (!from) return; TRACE (test, "transfer_control<ScopedPtrHolder>... from=%p to=%p",&from, &to); must_be_null (to); to.swap(from); }
void Value::materialize() { GUARANTEE(is_immediate(), "value must be immediate"); GUARANTEE(type() != T_OBJECT || must_be_null(), "object immediate is already materialized"); Value result(type()); result.assign_register(); Compiler::code_generator()->move(result, *this); result.copy(*this); }
void set_has_known_min_length(int length) { GUARANTEE(!must_be_null(), "Can't be both null and nonnull"); _flags = (jubyte) (_flags | (F_MUST_BE_NONNULL | F_HAS_KNOWN_MIN_LENGTH)); _length = length; }
void set_must_be_nonnull(void) { GUARANTEE(type() == T_OBJECT || type() == T_ARRAY, "object type"); GUARANTEE(!must_be_null(), "Can't be both null and nonnull"); _flags = (jubyte) (_flags | F_MUST_BE_NONNULL); }
ScopedPtrHolder (ScopedPtrHolder const& ref) : _Parent(must_be_null (ref)) { }