Changes:
- $Id: emit.c 5401 2006-09-07 12:52:31Z twisti $
+ $Id: emit.c 5404 2006-09-07 13:29:05Z christian $
*/
*******************************************************************************/
-inline s4 emit_load(jitdata *jd, instruction *iptr, stackptr src, s4 tempreg)
+inline s4 emit_load(jitdata *jd, instruction *iptr, varinfo *src, s4 tempreg)
{
codegendata *cd;
s4 disp;
*******************************************************************************/
-inline s4 emit_load_low(jitdata *jd, instruction *iptr, stackptr src, s4 tempreg)
+inline s4 emit_load_low(jitdata *jd, instruction *iptr, varinfo *src,s4 tempreg)
{
codegendata *cd;
s4 disp;
*******************************************************************************/
-inline s4 emit_load_high(jitdata *jd, instruction *iptr, stackptr src, s4 tempreg)
+inline s4 emit_load_high(jitdata *jd, instruction *iptr,varinfo *src,s4 tempreg)
{
codegendata *cd;
s4 disp;
s4 emit_load_s1(jitdata *jd, instruction *iptr, s4 tempreg)
{
- stackptr src;
+ varinfo *src;
s4 reg;
/* get required compiler data */
- src = iptr->s1.var;
+ src = &(jd->var[iptr->s1.varindex]);
reg = emit_load(jd, iptr, src, tempreg);
s4 emit_load_s2(jitdata *jd, instruction *iptr, s4 tempreg)
{
- stackptr src;
+ varinfo *src;
s4 reg;
/* get required compiler data */
- src = iptr->sx.s23.s2.var;
+ src = &(jd->var[iptr->sx.s23.s2.varindex]);
reg = emit_load(jd, iptr, src, tempreg);
s4 emit_load_s3(jitdata *jd, instruction *iptr, s4 tempreg)
{
- stackptr src;
+ varinfo *src;
s4 reg;
/* get required compiler data */
- src = iptr->sx.s23.s3.var;
+ src = &(jd->var[iptr->sx.s23.s3.varindex]);
reg = emit_load(jd, iptr, src, tempreg);
s4 emit_load_s1_low(jitdata *jd, instruction *iptr, s4 tempreg)
{
- stackptr src;
+ varinfo *src;
s4 reg;
/* get required compiler data */
- src = iptr->s1.var;
+ src = &(jd->var[iptr->s1.varindex]);
reg = emit_load_low(jd, iptr, src, tempreg);
s4 emit_load_s2_low(jitdata *jd, instruction *iptr, s4 tempreg)
{
- stackptr src;
+ varinfo *src;
s4 reg;
/* get required compiler data */
- src = iptr->sx.s23.s2.var;
+ src = &(jd->var[iptr->sx.s23.s2.varindex]);
reg = emit_load_low(jd, iptr, src, tempreg);
s4 emit_load_s1_high(jitdata *jd, instruction *iptr, s4 tempreg)
{
- stackptr src;
+ varinfo *src;
s4 reg;
/* get required compiler data */
- src = iptr->s1.var;
+ src = &(jd->var[iptr->s1.varindex]);
reg = emit_load_high(jd, iptr, src, tempreg);
s4 emit_load_s2_high(jitdata *jd, instruction *iptr, s4 tempreg)
{
- stackptr src;
+ varinfo *src;
s4 reg;
/* get required compiler data */
- src = iptr->sx.s23.s2.var;
+ src = &(jd->var[iptr->sx.s23.s2.varindex]);
reg = emit_load_high(jd, iptr, src, tempreg);
*******************************************************************************/
-inline void emit_store(jitdata *jd, instruction *iptr, stackptr dst, s4 d)
+inline void emit_store(jitdata *jd, instruction *iptr, varinfo *dst, s4 d)
{
codegendata *cd;
*******************************************************************************/
-inline void emit_store_low(jitdata *jd, instruction *iptr, stackptr dst, s4 d)
+inline void emit_store_low(jitdata *jd, instruction *iptr, varinfo *dst, s4 d)
{
codegendata *cd;
*******************************************************************************/
-inline void emit_store_high(jitdata *jd, instruction *iptr, stackptr dst, s4 d)
+inline void emit_store_high(jitdata *jd, instruction *iptr, varinfo *dst, s4 d)
{
codegendata *cd;
void emit_store_dst(jitdata *jd, instruction *iptr, s4 d)
{
- stackptr dst;
+ varinfo *dst;
- dst = iptr->dst.var;
+ dst = &(jd->var[iptr->dst.varindex]);
emit_store(jd, iptr, dst, d);
}
*******************************************************************************/
-void emit_copy(jitdata *jd, instruction *iptr, stackptr src, stackptr dst)
+void emit_copy(jitdata *jd, instruction *iptr, varinfo *src, varinfo *dst)
{
codegendata *cd;
- registerdata *rd;
s4 s1, d;
/* get required compiler data */
cd = jd->cd;
- rd = jd->rd;
if ((src->regoff != dst->regoff) ||
((src->flags ^ dst->flags) & INMEMORY)) {
if (IS_INMEMORY(src->flags)) {
if (IS_LNG_TYPE(src->type))
- d = codegen_reg_of_var(rd, iptr->opc, dst, REG_ITMP12_PACKED);
+ d = codegen_reg_of_var(iptr->opc, dst, REG_ITMP12_PACKED);
else
- d = codegen_reg_of_var(rd, iptr->opc, dst, REG_ITMP1);
+ d = codegen_reg_of_var(iptr->opc, dst, REG_ITMP1);
s1 = emit_load(jd, iptr, src, d);
}
else
s1 = emit_load(jd, iptr, src, REG_ITMP1);
- d = codegen_reg_of_var(rd, iptr->opc, dst, s1);
+ d = codegen_reg_of_var(iptr->opc, dst, s1);
}
if (s1 != d) {