pike.git / src / code / sparc.c

version» Context lines:

pike.git/src/code/sparc.c:470:    SET_REG(SPARC_REG_I1, x);    reg = SPARC_REG_I1;    }    if (sizeof(INT_TYPE) == 4) {    SPARC_STW(reg, SPARC_REG_PIKE_SP,    sparc_pike_sp_bias + OFFSETOF(svalue, u.integer), 1);    } else {    SPARC_STX(reg, SPARC_REG_PIKE_SP,    sparc_pike_sp_bias + OFFSETOF(svalue, u.integer), 1);    } -  if (x != type_word) { +  if (!type_word) { +  reg = SPARC_REG_G0; +  } else if (x != type_word) {    SET_REG(SPARC_REG_I1, type_word); -  +  reg = SPARC_REG_I1;    } -  /* This is safe since type_word is never zero. */ -  /* stw %i1, [ %pike_sp ] */ -  SPARC_STW(SPARC_REG_I1, SPARC_REG_PIKE_SP, sparc_pike_sp_bias, 1); +  /* stw %reg, [ %pike_sp ] */ +  SPARC_STW(reg, SPARC_REG_PIKE_SP, sparc_pike_sp_bias, 1);    sparc_pike_sp_bias += sizeof(struct svalue);    sparc_codegen_state |= SPARC_CODEGEN_SP_NEEDS_STORE;   }      static void sparc_clear_string_subtype(void)   {    LOAD_PIKE_SP();    /* lduh [ %pike_sp, %g0 ], %i0 */    SPARC_LDUH(SPARC_REG_I0, SPARC_REG_PIKE_SP,    sparc_pike_sp_bias + OFFSETOF(svalue, type), 1);