I'm was copying a FloatArray and it seems not to be using the primitive to move the data over to the copy. Float>>replaceFrom:to:with:startingAt: says it uses a primitive, but it seem to fallback to the code in SequenceableCollection. How can I see the priitive code to see what the issue may be? This is what it says it does:
replaceFrom: start to: stop with: replacement startingAt: repStart "Primitive. This destructively replaces elements from start to stop in the receiver starting at index, repStart, in the collection, replacement. Answer the receiver. Range checks are performed in the primitive only. Optional. See Object documentation whatIsAPrimitive." <primitive: 105> super replaceFrom: start to: stop with: replacement startingAt: repStart
This is what I did to see if the prim failed:
replaceFrom: start to: stop with: replacement startingAt: repStart "Primitive. This destructively replaces elements from start to stop in the receiver starting at index, repStart, in the collection, replacement. Answer the receiver. Range checks are performed in the primitive only. Optional. See Object documentation whatIsAPrimitive." <primitive: 105> WOOPS ifNil: [ WOOPS _ #WOOPS. self halt ]. super replaceFrom: start to: stop with: replacement startingAt: repStart
And it did fail and I'm puzzled as to why:
Halt: 10 January 2017 7:46:09.382669 am
VM: Mac OS - Smalltalk Image: Squeak5.1 [latest update: #16548]
SecurityManager state: Restricted: false FileAccess: true SocketAccess: true Working Dir /Users/bob/squeak/Squeak5.1-16548-64bit-All-in-One/Squeak5.1-16548-64bit-All-in-One.app/Contents/Resources Trusted Dir /Users/bob/Library/Application Support/Squeak/ Untrusted Dir /Users/bob/Documents/Squeak/
FloatArray(Object)>>halt Receiver: a FloatArray(0.0 0.0 0.0) Arguments and temporary variables:
Receiver's instance variables: a FloatArray(0.0 0.0 0.0) FloatArray>>replaceFrom:to:with:startingAt: Receiver: a FloatArray(0.0 0.0 0.0) Arguments and temporary variables: start: 1 stop: 3 replacement: a FloatArray(1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1...etc... repStart: 1 Receiver's instance variables: a FloatArray(0.0 0.0 0.0) FloatArray(SequenceableCollection)>>copyFrom:to: Receiver: a FloatArray(1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1...etc... Arguments and temporary variables: start: 1 stop: 3 newSize: 3 Receiver's instance variables: a FloatArray(1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1...etc... ConvolutionalLayer>>forward:isTraining: