- /* take arguments out of register or stack frame */
-
- for (p = 0, l = 0; p < mparamcount; p++) {
- t = mparamtypes[p];
- var = &(locals[l][t]);
- l++;
- if (IS_2_WORD_TYPE(t)) /* increment local counter for 2 word types */
- l++;
- if (var->type < 0)
- continue;
- r = var->regoff;
- if (IS_INT_LNG_TYPE(t)) { /* integer args */
- if (p < INT_ARG_CNT) { /* register arguments */
- if (!(var->flags & INMEMORY)) /* reg arg -> register */
- {M_INTMOVE (argintregs[p], r);}
- else /* reg arg -> spilled */
- M_LST (argintregs[p], REG_SP, 8 * r);
- }
- else { /* stack arguments */
- pa = p - INT_ARG_CNT;
- if (!(var->flags & INMEMORY)) /* stack arg -> register */
- M_LLD (r, REG_SP, 8 * (parentargs_base + pa));
- else { /* stack arg -> spilled */
- M_LLD (REG_ITMP1, REG_SP, 8 * (parentargs_base + pa));
- M_LST (REG_ITMP1, REG_SP, 8 * r);
- }
- }
- }
- else { /* floating args */
- if (p < FLT_ARG_CNT) { /* register arguments */
- if (!(var->flags & INMEMORY)) /* reg arg -> register */
- {M_FLTMOVE (argfltregs[p], r);}
- else /* reg arg -> spilled */
- M_DST (argfltregs[p], REG_SP, 8 * r);
- }
- else { /* stack arguments */
- pa = p - FLT_ARG_CNT;
- if (!(var->flags & INMEMORY)) /* stack-arg -> register */
- M_DLD (r, REG_SP, 8 * (parentargs_base + pa) );
- else { /* stack-arg -> spilled */
- M_DLD (REG_FTMP1, REG_SP, 8 * (parentargs_base + pa));
- M_DST (REG_FTMP1, REG_SP, 8 * r);
- }
- }
- }
- } /* end for */
-
- /* call trace function */
-
-#if 0
- if (runverbose && !isleafmethod) {
- M_LDA (REG_SP, REG_SP, -8);
- p = dseg_addaddress (method);
- M_ALD(REG_ITMP1, REG_PV, p);
- M_AST(REG_ITMP1, REG_SP, 0);
- p = dseg_addaddress ((void*) (builtin_trace_args));
- M_ALD(REG_PV, REG_PV, p);
- M_JSR(REG_RA, REG_PV);
- M_LDA(REG_PV, REG_RA, -(int)((u1*) mcodeptr - mcodebase));
- M_LDA(REG_SP, REG_SP, 8);
- }
-#endif
-
- /* call monitorenter function */
-
-#ifdef USE_THREADS
- if (checksync && (method->flags & ACC_SYNCHRONIZED)) {
- int disp;
- p = dseg_addaddress ((void*) (builtin_monitorenter));
- M_ALD(REG_PV, REG_PV, p);
- M_ALD(argintregs[0], REG_SP, 8 * maxmemuse);
- M_JSR(REG_RA, REG_PV);
- disp = -(int)((u1*) mcodeptr - mcodebase);
- M_LDA(REG_PV, REG_RA, disp);
- }
-#endif