summary |
shortlog |
log |
commit | commitdiff |
tree
raw |
patch |
inline | side by side (from parent 1:
685c0e4)
- gcdIntzh_fast, cmpIntegerIntzh_fast, cmpIntegerzh_fast,
integer2Intzh_fast, and integer2Wordzh_fast all used the
unboxed tuple return convention, which isn't quite right
since they're just returning unboxed values. Fixed.
- similarly for forkzh_fast, it was using an unboxed value
return convention, ought to be doing an unboxed tuple
return.
Both of these broke the unregisterised build -- it still not
sane, more debugging to be done.
/* -----------------------------------------------------------------------------
/* -----------------------------------------------------------------------------
- * $Id: PrimOps.hc,v 1.91 2002/01/29 16:24:08 simonmar Exp $
+ * $Id: PrimOps.hc,v 1.92 2002/02/28 08:53:58 sof Exp $
*
* (c) The GHC Team, 1998-2000
*
*
* (c) The GHC Team, 1998-2000
*
{
/* R1 = the first Int#; R2 = the second Int# */
mp_limb_t aa;
{
/* R1 = the first Int#; R2 = the second Int# */
mp_limb_t aa;
FB_
aa = (mp_limb_t)(R1.i);
r = RET_STGCALL3(StgInt, mpn_gcd_1, (mp_limb_t *)(&aa), 1, (mp_limb_t)(R2.i));
FB_
aa = (mp_limb_t)(R1.i);
r = RET_STGCALL3(StgInt, mpn_gcd_1, (mp_limb_t *)(&aa), 1, (mp_limb_t)(R2.i));
+
+ R1.i = r;
+ /* Result parked in R1, return via info-pointer at TOS */
+ JMP_(ENTRY_CODE(Sp[0]));
/* R1 = s1; R2 = d1; R3 = the int */
I_ r;
FB_
/* R1 = s1; R2 = d1; R3 = the int */
I_ r;
FB_
- r = RET_STGCALL3(I_,mpn_gcd_1,(mp_limb_t *)(BYTE_ARR_CTS(R2.p)), R1.i, R3.i);
+ r = RET_STGCALL3(StgInt,mpn_gcd_1,(mp_limb_t *)(BYTE_ARR_CTS(R2.p)), R1.i, R3.i);
+ R1.i = usize - vsize; JMP_(ENTRY_CODE(Sp[0]));
+ R1.i = 0; JMP_(ENTRY_CODE(Sp[0]));
}
u_digit = *(mp_limb_t *)(BYTE_ARR_CTS(R2.p));
if (u_digit == (mp_limb_t) (unsigned long) v_digit) {
}
u_digit = *(mp_limb_t *)(BYTE_ARR_CTS(R2.p));
if (u_digit == (mp_limb_t) (unsigned long) v_digit) {
+ R1.i = 0; JMP_(ENTRY_CODE(Sp[0]));
}
if (u_digit > (mp_limb_t) (unsigned long) v_digit) {
}
if (u_digit > (mp_limb_t) (unsigned long) v_digit) {
+
+ JMP_(ENTRY_CODE(Sp[0]));
vsize = R3.i;
if (usize != vsize) {
vsize = R3.i;
if (usize != vsize) {
+ R1.i = usize - vsize; JMP_(ENTRY_CODE(Sp[0]));
+ R1.i = 0; JMP_(ENTRY_CODE(Sp[0]));
cmp = RET_STGCALL3(I_, mpn_cmp, (mp_limb_t *)up, (mp_limb_t *)vp, size);
if (cmp == 0) {
cmp = RET_STGCALL3(I_, mpn_cmp, (mp_limb_t *)up, (mp_limb_t *)vp, size);
if (cmp == 0) {
+ R1.i = 0; JMP_(ENTRY_CODE(Sp[0]));
}
if ((cmp < 0) == (usize < 0)) {
}
if ((cmp < 0) == (usize < 0)) {
+ /* Result parked in R1, return via info-pointer at TOS */
+ JMP_(ENTRY_CODE(Sp[0]));
r = ((mp_limb_t *) (BYTE_ARR_CTS(R2.p)))[0];
if (s < 0) r = -r;
}
r = ((mp_limb_t *) (BYTE_ARR_CTS(R2.p)))[0];
if (s < 0) r = -r;
}
+ /* Result parked in R1, return via info-pointer at TOS */
+ R1.i = r;
+ JMP_(ENTRY_CODE(Sp[0]));
r = ((mp_limb_t *) (BYTE_ARR_CTS(R2.p)))[0];
if (s < 0) r = -r;
}
r = ((mp_limb_t *) (BYTE_ARR_CTS(R2.p)))[0];
if (s < 0) r = -r;
}
+ /* Result parked in R1, return via info-pointer at TOS */
+ R1.w = r;
+ JMP_(ENTRY_CODE(Sp[0]));
/* create it right now, return ThreadID in R1 */
R1.t = RET_STGCALL2(StgTSO *, createIOThread,
/* create it right now, return ThreadID in R1 */
R1.t = RET_STGCALL2(StgTSO *, createIOThread,
- RtsFlags.GcFlags.initialStkSize, R1.cl);
+ RtsFlags.GcFlags.initialStkSize, R1.cl);
STGCALL1(scheduleThread, R1.t);
/* switch at the earliest opportunity */
context_switch = 1;
STGCALL1(scheduleThread, R1.t);
/* switch at the earliest opportunity */
context_switch = 1;
- JMP_(ENTRY_CODE(Sp[0]));