LargeInteger.st
changeset 12878 7aa4debd20eb
parent 12877 be732e8f6914
child 13011 398b7b7440e7
equal deleted inserted replaced
12877:be732e8f6914 12878:7aa4debd20eb
  2557      d1   "{ Class: SmallInteger }"
  2557      d1   "{ Class: SmallInteger }"
  2558      d2   "{ Class: SmallInteger }"
  2558      d2   "{ Class: SmallInteger }"
  2559      otherDigitByteArray |
  2559      otherDigitByteArray |
  2560 
  2560 
  2561 %{  /* NOCONTEXT */
  2561 %{  /* NOCONTEXT */
  2562     OBJ _digitByteArray = __INST(digitByteArray);
       
  2563 
       
  2564     if (__isLargeInteger(aLargeInteger)) {
  2562     if (__isLargeInteger(aLargeInteger)) {
       
  2563     	OBJ _digitByteArray = __INST(digitByteArray);
  2565 	OBJ _otherDigitByteArray = __LargeIntegerInstPtr(aLargeInteger)->l_digits;
  2564 	OBJ _otherDigitByteArray = __LargeIntegerInstPtr(aLargeInteger)->l_digits;
  2566 
  2565 
  2567 	if (__isByteArray(_digitByteArray)
  2566 	if (__isByteArray(_digitByteArray)
  2568 	 && __isByteArray(_otherDigitByteArray)) {
  2567 	 && __isByteArray(_otherDigitByteArray)) {
  2569 	    INT _myLen = __byteArraySize(_digitByteArray);
  2568 	    INT _myLen = __byteArraySize(_digitByteArray);
  2573 	    unsigned char *_myDigits = __ByteArrayInstPtr(_digitByteArray)->ba_element;
  2572 	    unsigned char *_myDigits = __ByteArrayInstPtr(_digitByteArray)->ba_element;
  2574 
  2573 
  2575 	    if (_myLen == _otherLen) {
  2574 	    if (_myLen == _otherLen) {
  2576 tryAgain:
  2575 tryAgain:
  2577 		while (_myLen >= (sizeof(INT)*4)) {
  2576 		while (_myLen >= (sizeof(INT)*4)) {
  2578 		    if ( (unsigned INT *)_myDigits[0] != (unsigned INT *)_otherDigits[0]) {
  2577 		    if ( ((unsigned INT *)_myDigits)[0] != ((unsigned INT *)_otherDigits)[0]) {
  2579 			RETURN(false);
  2578 			RETURN(false);
  2580 		    }
  2579 		    }
  2581 		    if ( (unsigned INT *)_myDigits[1] != (unsigned INT *)_otherDigits[1]) {
  2580 		    if ( ((unsigned INT *)_myDigits)[1] != ((unsigned INT *)_otherDigits)[1]) {
  2582 			RETURN(false);
  2581 			RETURN(false);
  2583 		    }
  2582 		    }
  2584 		    if ( (unsigned INT *)_myDigits[2] != (unsigned INT *)_otherDigits[2]) {
  2583 		    if ( ((unsigned INT *)_myDigits)[2] != ((unsigned INT *)_otherDigits)[2]) {
  2585 			RETURN(false);
  2584 			RETURN(false);
  2586 		    }
  2585 		    }
  2587 		    if ( (unsigned INT *)_myDigits[3] != (unsigned INT *)_otherDigits[3]) {
  2586 		    if ( ((unsigned INT *)_myDigits)[3] != ((unsigned INT *)_otherDigits)[3]) {
  2588 			RETURN(false);
  2587 			RETURN(false);
  2589 		    }
  2588 		    }
  2590 		    _myDigits += sizeof(INT)*4;
  2589 		    _myDigits += sizeof(INT)*4;
  2591 		    _otherDigits += sizeof(INT)*4;
  2590 		    _otherDigits += sizeof(INT)*4;
  2592 		    _myLen -= sizeof(INT)*4;
  2591 		    _myLen -= sizeof(INT)*4;
  5138 ! !
  5137 ! !
  5139 
  5138 
  5140 !LargeInteger class methodsFor:'documentation'!
  5139 !LargeInteger class methodsFor:'documentation'!
  5141 
  5140 
  5142 version
  5141 version
  5143     ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.200 2010-04-13 18:58:43 cg Exp $'
  5142     ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.201 2010-04-14 08:00:14 stefan Exp $'
  5144 !
  5143 !
  5145 
  5144 
  5146 version_CVS
  5145 version_CVS
  5147     ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.200 2010-04-13 18:58:43 cg Exp $'
  5146     ^ '$Header: /cvs/stx/stx/libbasic/LargeInteger.st,v 1.201 2010-04-14 08:00:14 stefan Exp $'
  5148 ! !
  5147 ! !