Index: js/src/prmjtime.c =================================================================== RCS file: /cvsroot/mozilla/js/src/prmjtime.c,v retrieving revision 3.55 diff -u -p -d -8 -r3.55 prmjtime.c --- js/src/prmjtime.c 13 Nov 2006 21:33:06 -0000 3.55 +++ js/src/prmjtime.c 17 Nov 2006 21:30:44 -0000 @@ -341,44 +341,47 @@ PRMJ_basetime(JSInt64 tsecs, PRMJTime *p JSInt32 yday = 0; JSInt32 mday = 0; JSInt32 wday = 6; /* start on a Sunday */ JSInt32 days = 0; JSInt32 seconds = 0; JSInt32 minutes = 0; JSInt32 hours = 0; JSInt32 isleap = 0; + + /* Temporaries used for various computations */ JSInt64 result; JSInt64 result1; JSInt64 result2; + JSInt64 base; /* Some variables for intermediate result storage to make computing isleap easier/faster */ JSInt32 fourCenturyBlocks; JSInt32 centuriesLeft; JSInt32 fourYearBlocksLeft; JSInt32 yearsLeft; /* Since leap years work by 400/100/4 year intervals, precompute the length of those in seconds if they start at the beginning of year 1. */ JSInt64 fourYears; JSInt64 century; JSInt64 fourCenturies; + JSLL_UI2L(result, PRMJ_DAY_SECONDS); + JSLL_I2L(fourYears, PRMJ_FOUR_YEARS_DAYS); - JSLL_MUL(fourYears, fourYears, PRMJ_DAY_SECONDS); + JSLL_MUL(fourYears, fourYears, result); JSLL_I2L(century, PRMJ_CENTURY_DAYS); - JSLL_MUL(century, century, PRMJ_DAY_SECONDS); + JSLL_MUL(century, century, result); JSLL_I2L(fourCenturies, PRMJ_FOUR_CENTURIES_DAYS); - JSLL_MUL(fourCenturies, fourCenturies, PRMJ_DAY_SECONDS); - - JSLL_UI2L(result,0); + JSLL_MUL(fourCenturies, fourCenturies, result); /* get the base time via UTC */ base = PRMJ_ToExtendedTime(0); JSLL_UI2L(result, PRMJ_USEC_PER_SEC); JSLL_DIV(base,base,result); JSLL_ADD(tsecs,tsecs,base); /* Compute our |year|, |isleap|, and part of |days|. When this part is