Example #1
0
void Value::set_obj(Oop* value) {
  // due to garbage collection considerations object immediates
  // are always put in a register
  GUARANTEE(type() == T_OBJECT || type() == T_ARRAY, "check type");
  // assign a register to this value
  if (value->is_null()) {
    set_where(T_IMMEDIATE);
    set_must_be_null();
    set_not_on_heap();
    _low = 0;
  } else {
    assign_register();
    // move the immediate object into the register
    Compiler::code_generator()->move(*this, value);
    if (!ObjectHeap::contains_moveable(value->obj())) {
      set_not_on_heap();
    }
#if ENABLE_COMPILER_TYPE_INFO
    FarClass::Raw value_class = value->blueprint();
    GUARANTEE(value_class.not_null(), "Sanity");
    if (value_class.is_java_class()) {
      JavaClass::Raw java_class = value_class.obj();
      set_class_id(java_class().class_id());
      set_is_exact_type();
    }
#else
    if (value->is_string()) {
      set_is_string();
    }
#endif
    set_must_be_nonnull();
  }
}
Example #2
0
void ExtendedValue::set_obj(Oop* value) {
  if (value->is_null()) {
    is_value(T_OBJECT);
    this->value().set_obj(value);
  } else {
    // IMPL_NOTE:  Can we merge the code below with Value::set_value() ??
    set_oop(value);
    if (!ObjectHeap::contains_moveable(value->obj())) {
      _value.set_not_on_heap();
    }
#if ENABLE_COMPILER_TYPE_INFO
    FarClass::Raw value_class = value->blueprint();
    GUARANTEE(value_class.not_null(), "Sanity");
    if (value_class.is_java_class()) {
      JavaClass::Raw java_class = value_class.obj();
      _value.set_class_id(java_class().class_id());
      _value.set_is_exact_type();
    }
#else
    if (value->is_string()) {
      _value.set_is_string();
    }
#endif
    _value.set_must_be_nonnull();
  }
}
Example #3
0
void JavaClassObj::print_value_on(Stream* st) {
  st->print("Mirror for ");
  JavaClass c = java_class();
  c.print_value_on(st);
}