Levente Uzonyi uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-ul.1060.mcz ==================== Summary ==================== Name: Kernel-ul.1060 Author: ul Time: 27 February 2017, 2:16:28.275956 am UUID: e510449a-9899-41a3-9bc9-a41290fdc64e Ancestors: Kernel-tonyg.1059, Kernel-ul.1059 - omit ifAbsent from #index* sends when the default value, 0 would used - merged Kernel-ul.1059 =============== Diff against Kernel-tonyg.1059 =============== Item was changed: ----- Method: ClassDescription>>instVarIndexFor:ifAbsent: (in category 'instance variables') ----- instVarIndexFor: instVarName ifAbsent: aBlock "Answer the index of the named instance variable." | index | + index := instanceVariables + ifNil: [ 0 ] + ifNotNil: [ instanceVariables indexOf: instVarName ]. + index = 0 ifTrue: [ + ^superclass + ifNil: [ aBlock value ] + ifNotNil: [ superclass instVarIndexFor: instVarName ifAbsent: aBlock ] ]. + ^superclass + ifNil: [ index ] + ifNotNil: [ index + superclass instSize ]! - index := instanceVariables == nil - ifTrue: [0] - ifFalse: [instanceVariables indexOf: instVarName ifAbsent: [0]]. - index = 0 ifTrue: - [^superclass == nil - ifTrue: [aBlock value] - ifFalse: [superclass instVarIndexFor: instVarName ifAbsent: aBlock]]. - ^superclass == nil - ifTrue: [index] - ifFalse: [index + superclass instSize]! Item was changed: ----- Method: CompiledMethod>>getPreambleFrom:at: (in category 'source code management') ----- getPreambleFrom: aFileStream at: endPosition "This method is an ugly hack. This method assumes that source files have ASCII-compatible encoding and that preambles contain no non-ASCII characters." | chunkSize chunk | chunkSize := 160 min: endPosition. [ | index | chunk := aFileStream position: (endPosition - chunkSize + 1 max: 0); basicNext: chunkSize. + (index := chunk lastIndexOf: $!! startingAt: chunk size) ~= 0 ifTrue: [ - (index := chunk lastIndexOf: $!! startingAt: chunk size ifAbsent: 0) ~= 0 ifTrue: [ ^chunk copyFrom: index + 1 to: chunk size ]. chunkSize := chunkSize * 2. chunkSize <= endPosition ] whileTrue. ^chunk! Item was changed: ----- Method: CompiledMethodTrailer>>qCompress: (in category 'private') ----- qCompress: string "A very simple text compression routine designed for method temp names. Most common 11 chars get values 1-11 packed in one 4-bit nibble; the next most common get values 12-15 (2 bits) * 16 plus next nibble; unusual ones get three nibbles, the first being the escape nibble 0. Answer the write stream with compressed data inside" | utf8str stream oddNibble | string isEmpty ifTrue: [^self qCompress: ' ']. utf8str := string convertToEncoding: 'utf8'. stream := WriteStream on: (ByteArray new: utf8str size). oddNibble := nil. utf8str do: [:char | | ix | ix := 'ear tonsilcmbdfghjkpquvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ012345[]()' + indexOf: char. - indexOf: char ifAbsent: 0. (ix = 0 ifTrue: [{ 0. char asInteger // 16. char asInteger \\ 16 }] ifFalse: [ix <= 11 ifTrue: [{ ix }] ifFalse: [{ ix//16+12. ix\\16 }]]) do: [:nibble | oddNibble ifNotNil: [stream nextPut: oddNibble*16 + nibble. oddNibble := nil] ifNil: [oddNibble := nibble]]]. oddNibble ifNotNil: "4 = 'ear tonsil' indexOf: Character space" [stream nextPut: oddNibble * 16 + 4]. ^ stream ! Item was changed: ----- Method: False>>& (in category 'logical operations') ----- & aBoolean + "Evaluating conjunction -- answer false since receiver is false, but let the VM quickly check the type of the argument first." - "Evaluating conjunction -- answer false since receiver is false." + aBoolean ifFalse: [ ^false ]. + ^false! - ^self! Item was changed: ----- Method: False>>| (in category 'logical operations') ----- | aBoolean + "Evaluating disjunction (OR) -- could answer aBoolean since receiver is false, but let the VM quickly check the type of the argument instead." - "Evaluating disjunction (OR) -- answer with the argument, aBoolean." + aBoolean ifTrue: [ ^true ]. + ^false! - ^aBoolean! Item was changed: ----- Method: True>>& (in category 'logical operations') ----- & aBoolean + "Evaluating conjunction -- could answer aBoolean since receiver is true, but let the VM quickly check the type of the argument instead." - "Evaluating conjunction -- answer aBoolean since receiver is true." + aBoolean ifFalse: [ ^false ]. + ^true! - ^aBoolean! Item was changed: ----- Method: True>>| (in category 'logical operations') ----- | aBoolean + "Evaluating disjunction (OR) -- answer true since the receiver is true, but let the VM quickly check the type of the argument first." - "Evaluating disjunction (OR) -- answer true since the receiver is true." + aBoolean ifTrue: [ ^true ]. + ^true! - ^self! |
Free forum by Nabble | Edit this page |