The Trunk: Kernel-ul.1060.mcz

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

The Trunk: Kernel-ul.1060.mcz

commits-2
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!