Eliot Miranda uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-eem.1495.mcz
==================== Summary ====================
Name: Kernel-eem.1495
Author: eem
Time: 3 January 2023, 2:50:20.023806 pm
UUID: 0f67a835-2719-4d8b-87a7-3a387f44349a
Ancestors: Kernel-pre.1494
Print the inst var name after the index in symbolic (bytecode) method printing/exploring. If folks don't like this being the default the code is set up to be easy to turn into a preference. Just let me know.
=============== Diff against Kernel-pre.1494 ===============
Item was changed:
----- Method: InstructionPrinter>>popIntoReceiverVariable: (in category 'instruction decoding') -----
popIntoReceiverVariable: offset
+ "Print the Remove Top Of Stack And Store Into Instance Variable bytecode."
- "Print the Remove Top Of Stack And Store Into Instance Variable
- bytecode."
+ self print: 'popIntoRcvr: ' , (self stringForReceiverVariableOffset: offset)!
- self print: 'popIntoRcvr: ' , offset printString!
Item was changed:
----- Method: InstructionPrinter>>pushReceiverVariable: (in category 'instruction decoding') -----
pushReceiverVariable: offset
"Print the Push Contents Of the Receiver's Instance Variable Whose Index
is the argument, offset, On Top Of Stack bytecode."
+ self print: 'pushRcvr: ' , (self stringForReceiverVariableOffset: offset)!
- self print: 'pushRcvr: ' , offset printString!
Item was changed:
----- Method: InstructionPrinter>>storeIntoReceiverVariable: (in category 'instruction decoding') -----
storeIntoReceiverVariable: offset
"Print the Store Top Of Stack Into Instance Variable Of Method bytecode."
+ self print: 'storeIntoRcvr: ' , (self stringForReceiverVariableOffset: offset)!
- self print: 'storeIntoRcvr: ' , offset printString!
Item was added:
+ ----- Method: InstructionPrinter>>stringForReceiverVariableOffset: (in category 'printing') -----
+ stringForReceiverVariableOffset: offset
+ | tmpStream |
+ tmpStream := WriteStream on: (String new: 16).
+ offset printOn: tmpStream.
+ method methodClass ifNotNil:
+ [:class|
+ class isBehavior ifTrue:
+ [(class instVarNameForIndex: offset + 1) ifNotNil:
+ [:instVarName|
+ tmpStream nextPutAll: ' "'; nextPutAll: instVarName; nextPut: $"]]].
+ ^tmpStream contents!
tim Rowledge uploaded a new version of Sound to project The Trunk:
http://source.squeak.org/trunk/Sound-tpr.93.mcz
==================== Summary ====================
Name: Sound-tpr.93
Author: tpr
Time: 2 January 2023, 4:38:20.207407 pm
UUID: 5583f070-14de-4807-b445-c125ad072e9d
Ancestors: Sound-eem.92
When writing a sound out to a file we need to divide the 'remaining' value by //2 to make the file size correct - otherwise it gets padded out by a lot of 0s
=============== Diff against Sound-eem.92 ===============
Item was changed:
----- Method: AbstractSound>>storeSampleCount:bigEndian:on: (in category 'file i/o') -----
storeSampleCount: samplesToStore bigEndian: bigEndianFlag on: aBinaryStream
"Store my samples on the given stream at the current SoundPlayer sampling rate. If bigFlag is true, then each 16-bit sample is stored most-significant byte first (AIFF files), otherwise it is stored least-significant byte first (WAV files). If self isStereo is true, both channels are stored, creating a stereo file. Otherwise, only the left channel is stored, creating a mono file."
| bufSize stereoBuffer reverseBytes streamDirect |
self reset.
bufSize := (2 * self samplingRate rounded) min: samplesToStore. "two second buffer"
stereoBuffer := SoundBuffer newStereoSampleCount: bufSize.
streamDirect := aBinaryStream isKindOf: StandardFileStream.
reverseBytes := (bigEndianFlag xor: Smalltalk isBigEndian) xor: streamDirect not.
'Storing audio...'
displayProgressFrom: 0 to: samplesToStore during: [:bar | | remaining out |
remaining := samplesToStore.
[remaining > 0] whileTrue: [
bar value: samplesToStore - remaining.
stereoBuffer primFill: 0. "clear the buffer"
self playSampleCount: (bufSize min: remaining) into: stereoBuffer startingAt: 1.
out := self isStereo
ifTrue: [stereoBuffer]
ifFalse: [stereoBuffer extractLeftChannel].
reverseBytes ifTrue: [out reverseEndianness].
streamDirect
ifTrue: "optimization for files: write sound buffer directly to file"
+ [aBinaryStream next: (out size // 2 min: remaining// 2) putAll: out startingAt: 1] "size in words"
- [aBinaryStream next: (out size // 2 min: remaining) putAll: out startingAt: 1] "size in words"
ifFalse: "for non-file streams:"
[1 to: (out monoSampleCount min: remaining) do: [:i | aBinaryStream int16: (out at: i)]].
remaining := remaining - bufSize]].!