Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.1535.mcz ==================== Summary ==================== Name: VMMaker.oscog-eem.1535 Author: eem Time: 30 November 2015, 3:57:15.946 pm UUID: eceebca6-4bc3-4640-b1eb-18e0ea917247 Ancestors: VMMaker.oscog-rmacnak.1534 Fix maybeInlinePositive32BitIntegerFor: and hence positive64BitIntegerFor: for values that look like 32-bit negative SmallIntegers. Nuke broken and obsoleted by Tim's new CPIC the DumpJump*: Cogit assembler ops. =============== Diff against VMMaker.oscog-rmacnak.1534 =============== Item was removed: - ----- Method: Cogit>>DumpJumpLong: (in category 'abstract instructions') ----- - DumpJumpLong: jumpTarget - "Convenience conflation of JumpLong: & dumpLiterals for PIC generation. - Literals must be dumped early and often to keep each PIC case the same size." - <inline: true> - <returnTypeC: #'AbstractInstruction *'> - | inst | - <var: 'inst' type: #'AbstractInstruction *'> - inst := self gen: JumpLong operand: jumpTarget asInteger. - literalsManager dumpLiterals: false. - ^inst! Item was removed: - ----- Method: Cogit>>DumpJumpLongZero: (in category 'abstract instructions') ----- - DumpJumpLongZero: jumpTarget - "Convenience conflation of JumpLongZero: & dumpLiterals for PIC generation. - Literals must be dumped early and often to keep each PIC case the same size." - <inline: true> - <returnTypeC: #'AbstractInstruction *'> - | inst | - <var: 'inst' type: #'AbstractInstruction *'> - inst := self gen: JumpLongZero operand: jumpTarget asInteger. - literalsManager dumpLiterals: false. - ^inst! Item was changed: ----- Method: StackInterpreter>>maybeInlinePositive32BitIntegerFor: (in category 'primitive support') ----- maybeInlinePositive32BitIntegerFor: integerValue "N.B. will *not* cause a GC. integerValue is interpreted as POSITIVE, e.g. as the result of Bitmap>at:." <notOption: #Spur64BitMemoryManager> | newLargeInteger | self deny: objectMemory hasSixtyFourBitImmediates. + (integerValue asInteger >= 0 - (integerValue >= 0 and: [objectMemory isIntegerValue: integerValue]) ifTrue: [^objectMemory integerObjectOf: integerValue]. newLargeInteger := objectMemory eeInstantiateSmallClassIndex: ClassLargePositiveIntegerCompactIndex format: (objectMemory byteFormatForNumBytes: 4) numSlots: 1. self cppIf: VMBIGENDIAN ifTrue: [objectMemory storeByte: 3 ofObject: newLargeInteger withValue: (integerValue >> 24 bitAnd: 16rFF); storeByte: 2 ofObject: newLargeInteger withValue: (integerValue >> 16 bitAnd: 16rFF); storeByte: 1 ofObject: newLargeInteger withValue: (integerValue >> 8 bitAnd: 16rFF); storeByte: 0 ofObject: newLargeInteger withValue: (integerValue ">> 0" bitAnd: 16rFF)] ifFalse: [objectMemory storeLong32: 0 ofObject: newLargeInteger withValue: integerValue]. ^newLargeInteger! |
Free forum by Nabble | Edit this page |