But if I'm not mistaken, the source code looks like this: primDigitCompare: secondInteger | firstVal secondVal firstInteger | self debugCode: [self msg: 'primDigitCompare: secondInteger']. firstInteger := self primitive: 'primDigitCompare' parameters: #(#Integer ) receiver: #Integer. "shortcut: aSmallInteger has to be smaller in Magnitude as aLargeInteger" (interpreterProxy isIntegerObject: firstInteger) ifTrue: ["first" (interpreterProxy isIntegerObject: secondInteger) ifTrue: ["second" (firstVal := interpreterProxy integerValueOf: firstInteger) > (secondVal := interpreterProxy integerValueOf: secondInteger) ifTrue: [^ 1 asOop: SmallInteger"first > second"] ifFalse: [firstVal < secondVal ifTrue: [^ -1 asOop: SmallInteger"first < second"] ifFalse: [^ 0 asOop: SmallInteger"first = second"]]] ifFalse: ["SECOND" ^ -1 asOop: SmallInteger"first < SECOND"]] ifFalse: ["FIRST" (interpreterProxy isIntegerObject: secondInteger) ifTrue: ["second" ^ 1 asOop: SmallInteger"FIRST > second"] ifFalse: ["SECOND" ^ self digitCompareLarge: firstInteger with: secondInteger]]
This is compiled into this C code: EXPORT(sqInt) primDigitCompare(void) { sqInt firstVal; sqInt firstInteger; sqInt secondVal; sqInt secondInteger; sqInt _return_value; interpreterProxy->success(interpreterProxy->isKindOf(interpreterProxy->stackValue(0), "Integer")); secondInteger = interpreterProxy->stackValue(0); /* missing DebugCode */; interpreterProxy->success(interpreterProxy->isKindOf(interpreterProxy->stackValue(1), "Integer")); firstInteger = interpreterProxy->stackValue(1); if (interpreterProxy->failed()) { return null; } if ((firstInteger & 1)) { if ((secondInteger & 1)) { if ((firstVal = (firstInteger >> 1)) > (secondVal = (secondInteger >> 1))) { _return_value = interpreterProxy->integerObjectOf(1); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(2, _return_value); return null; } else { if (firstVal < secondVal) { _return_value = interpreterProxy->integerObjectOf(-1); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(2, _return_value); return null; } else { _return_value = interpreterProxy->integerObjectOf(0); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(2, _return_value); return null; } } } else { _return_value = interpreterProxy->integerObjectOf(-1); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(2, _return_value); return null; } } else { if ((secondInteger & 1)) { _return_value = interpreterProxy->integerObjectOf(1); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(2, _return_value); return null; } else { _return_value = digitCompareLargewith(firstInteger, secondInteger); if (interpreterProxy->failed()) { return null; } interpreterProxy->popthenPush(2, _return_value); return null; } } } So the C code in the package is not the original source code. At the very least, you should replace CRs with LFs in those files, so that diffs are easier to generate. -- To UNSUBSCRIBE, email to [EMAIL PROTECTED] with a subject of "unsubscribe". Trouble? Contact [EMAIL PROTECTED]