Nicolas Cellier uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-nice.1760.mcz
==================== Summary ====================
Name: VMMaker.oscog-nice.1760 Author: nice Time: 3 April 2016, 10:53:08.924 pm UUID: ae64abbe-8a10-4814-95a5-d54c91e62463 Ancestors: VMMaker.oscog-nice.1759
Before updating LargeIntegersPlugin to 32bits limbs, get rid of obsolete primitives burden.
=============== Diff against VMMaker.oscog-nice.1759 ===============
Item was removed: - ----- Method: LargeIntegersPlugin>>primAsLargeInteger: (in category 'control & support primitives') ----- - primAsLargeInteger: anInteger - "Converts a SmallInteger into a - non normalized!! - LargeInteger; - aLargeInteger will be returned unchanged." - "Do not check for forced fail, because we need this conversion to test the - plugin in ST during forced fail, too." - self debugCode: [self msg: 'primAsLargeInteger: anInteger']. - self - primitive: 'primAsLargeInteger' - parameters: #(Integer ) - receiver: #Oop. - (interpreterProxy isIntegerObject: anInteger) - ifTrue: [^ self createLargeFromSmallInteger: anInteger] - ifFalse: [^ anInteger]!
Item was removed: - ----- Method: LargeIntegersPlugin>>primCheckIfCModuleExists (in category 'obsolete') ----- - primCheckIfCModuleExists - "If calling this primitive fails, then C module does not exist. Do not check for forced fail, because we want to know if module exists during forced fail, too." - self - primitive: 'primCheckIfCModuleExists' - parameters: #() - receiver: #Oop. - ^ true asOop: Boolean!
Item was removed: - ----- Method: LargeIntegersPlugin>>primDigit:bitShift: (in category 'development primitives') ----- - primDigit: anInteger bitShift: shiftCount - | rShift aLarge | - self debugCode: [self msg: 'primDigit: anInteger bitShift: shiftCount']. - self - primitive: '_primDigitBitShift' - parameters: #(Integer SmallInteger ) - receiver: #Oop. - (interpreterProxy isIntegerObject: anInteger) - ifTrue: ["convert it to a not normalized LargeInteger" - aLarge := self createLargeFromSmallInteger: anInteger] - ifFalse: [aLarge := anInteger]. - shiftCount >= 0 - ifTrue: [^ self digit: aLarge Lshift: shiftCount] - ifFalse: - [rShift := 0 - shiftCount. - ^ self normalize: (self - digit: aLarge - Rshift: rShift - lookfirst: (self digitSizeOfLargeInt: aLarge))]!
Item was removed: - ----- Method: LargeIntegersPlugin>>primDigitAdd:with: (in category 'development primitives') ----- - primDigitAdd: firstInteger with: secondInteger - | firstLarge secondLarge | - self debugCode: [self msg: 'primDigitAdd: firstInteger with: secondInteger']. - self - primitive: 'primDigitAddWith' - parameters: #(Integer Integer ) - receiver: #Oop. - (interpreterProxy isIntegerObject: firstInteger) - ifTrue: ["convert it to a not normalized LargeInteger" - self remapOop: secondInteger in: [firstLarge := self createLargeFromSmallInteger: firstInteger]] - ifFalse: [firstLarge := firstInteger]. - (interpreterProxy isIntegerObject: secondInteger) - ifTrue: ["convert it to a not normalized LargeInteger" - self remapOop: firstLarge in: [secondLarge := self createLargeFromSmallInteger: secondInteger]] - ifFalse: [secondLarge := secondInteger]. - ^ self digitAddLarge: firstLarge with: secondLarge!
Item was removed: - ----- Method: LargeIntegersPlugin>>primDigitBitLogic:with:op: (in category 'development primitives') ----- - primDigitBitLogic: firstInteger with: secondInteger op: opIndex - "Bit logic here is only implemented for positive integers or Zero; if any arg is negative, it fails." - self debugCode: [self msg: 'primDigitBitLogic: firstInteger with: secondInteger op: opIndex']. - self - primitive: 'primDigitBitLogicWithOp' - parameters: #(Integer Integer SmallInteger ) - receiver: #Oop. - ^ self - digitBitLogic: firstInteger - with: secondInteger - opIndex: opIndex!
Item was removed: - ----- Method: LargeIntegersPlugin>>primDigitBitShift: (in category 'obsolete') ----- - primDigitBitShift: shiftCount - | rShift aLarge anInteger | - self debugCode: [self msg: 'primDigitBitShift: shiftCount']. - anInteger := self - primitive: 'primDigitBitShift' - parameters: #(SmallInteger ) - receiver: #Integer. - (interpreterProxy isIntegerObject: anInteger) - ifTrue: ["convert it to a not normalized LargeInteger" - aLarge := self createLargeFromSmallInteger: anInteger] - ifFalse: [aLarge := anInteger]. - shiftCount >= 0 - ifTrue: [^ self digit: aLarge Lshift: shiftCount] - ifFalse: - [rShift := 0 - shiftCount. - ^ self normalize: (self - digit: aLarge - Rshift: rShift - lookfirst: (self digitSizeOfLargeInt: aLarge))]!
Item was removed: - ----- Method: LargeIntegersPlugin>>primDigitCompare:with: (in category 'development primitives') ----- - primDigitCompare: firstInteger with: secondInteger - | firstVal secondVal | - self debugCode: [self msg: 'primDigitCompare: firstInteger with: secondInteger']. - self - primitive: 'primDigitCompareWith' - parameters: #(Integer Integer ) - receiver: #Oop. - "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]]!
Item was removed: - ----- Method: LargeIntegersPlugin>>primDigitDiv:with:negative: (in category 'development primitives') ----- - primDigitDiv: firstInteger with: secondInteger negative: neg - "Answer the result of dividing firstInteger by secondInteger. - Fail if parameters are not integers or secondInteger is zero." - | firstAsLargeInteger secondAsLargeInteger | - self debugCode: [self msg: 'primDigitDiv: firstInteger with: secondInteger negative: neg']. - self - primitive: 'primDigitDivWithNegative' - parameters: #(Integer Integer Boolean ) - receiver: #Oop. - "Coerce SmallIntegers to corresponding (not normalized) large integers - and check for zerodivide." - (interpreterProxy isIntegerObject: firstInteger) - ifTrue: ["convert to LargeInteger" - self remapOop: secondInteger in: [firstAsLargeInteger := self createLargeFromSmallInteger: firstInteger]] - ifFalse: [firstAsLargeInteger := firstInteger]. - (interpreterProxy isIntegerObject: secondInteger) - ifTrue: - ["check for zerodivide and convert to LargeInteger" - (interpreterProxy integerValueOf: secondInteger) - = 0 ifTrue: [^ interpreterProxy primitiveFail]. - self remapOop: firstAsLargeInteger in: [secondAsLargeInteger := self createLargeFromSmallInteger: secondInteger]] - ifFalse: [secondAsLargeInteger := secondInteger]. - ^ self - digitDivLarge: firstAsLargeInteger - with: secondAsLargeInteger - negative: neg!
Item was removed: - ----- Method: LargeIntegersPlugin>>primDigitMultiply:with:negative: (in category 'development primitives') ----- - primDigitMultiply: firstInteger with: secondInteger negative: neg - | firstLarge secondLarge | - self debugCode: [self msg: 'primDigitMultiply: firstInteger with: secondInteger negative: neg']. - self - primitive: 'primDigitMultiplyWithNegative' - parameters: #(Integer Integer Boolean ) - receiver: #Oop. - (interpreterProxy isIntegerObject: firstInteger) - ifTrue: ["convert it to a not normalized LargeInteger" - self remapOop: secondInteger in: [firstLarge := self createLargeFromSmallInteger: firstInteger]] - ifFalse: [firstLarge := firstInteger]. - (interpreterProxy isIntegerObject: secondInteger) - ifTrue: ["convert it to a not normalized LargeInteger" - self remapOop: firstLarge in: [secondLarge := self createLargeFromSmallInteger: secondInteger]] - ifFalse: [secondLarge := secondInteger]. - ^ self - digitMultiplyLarge: firstLarge - with: secondLarge - negative: neg!
Item was removed: - ----- Method: LargeIntegersPlugin>>primDigitSubtract:with: (in category 'development primitives') ----- - primDigitSubtract: firstInteger with: secondInteger - | firstLarge secondLarge | - self debugCode: [self msg: 'primDigitSubtract: firstInteger with: secondInteger']. - self - primitive: 'primDigitSubtractWith' - parameters: #(Integer Integer ) - receiver: #Oop. - (interpreterProxy isIntegerObject: firstInteger) - ifTrue: ["convert it to a not normalized LargeInteger" - self remapOop: secondInteger in: [firstLarge := self createLargeFromSmallInteger: firstInteger]] - ifFalse: [firstLarge := firstInteger]. - (interpreterProxy isIntegerObject: secondInteger) - ifTrue: ["convert it to a not normalized LargeInteger" - self remapOop: firstLarge in: [secondLarge := self createLargeFromSmallInteger: secondInteger]] - ifFalse: [secondLarge := secondInteger]. - ^ self digitSubLarge: firstLarge with: secondLarge!
Item was removed: - ----- Method: LargeIntegersPlugin>>primNormalize: (in category 'development primitives') ----- - primNormalize: anInteger - "Parameter specification #(Integer) doesn't convert!!" - self debugCode: [self msg: 'primNormalize: anInteger']. - self - primitive: 'primNormalize' - parameters: #(Integer ) - receiver: #Oop. - (interpreterProxy isIntegerObject: anInteger) - ifTrue: [^ anInteger]. - ^ self normalize: anInteger!
vm-dev@lists.squeakfoundation.org