Ejemplo n.º 1
0
bool LocalMapping::is_cache_reg(LIR_Opr opr) const {
  if (opr->is_register()) {
    return is_cache_reg(opr->rinfo());
  } else {
    return false;
  }
}
// Handle fanout of fpu registers: return false if no fanout;
// If fanout than, we copy the value of float register into a new one,
// so that the new FPU register has ref-count 1
bool LIRGenerator::fpu_fanout_handled() {
  if (result()->is_register() && (value()->type()->is_float_kind())) {
    // The item is float or double register with a use_count > 1
    LIR_Opr reg = rlock(value());
    emit()->copy_fpu_item(reg->rinfo(), result());

    set_result(value(), reg);
    return true;
  } else {
    return false;
  }
}
Ejemplo n.º 3
0
bool LocalMapping::is_local_name_cached_in_reg(int local_name, LIR_Opr opr) {
  return _mapping->at(local_name).is_same(opr->rinfo());
}