[Vm-dev] VM Maker: FileAttributesPlugin.oscog-akg.43.mcz

commits at source.squeak.org commits at source.squeak.org
Fri Nov 29 20:20:36 UTC 2019


Eliot Miranda uploaded a new version of FileAttributesPlugin to project VM Maker:
http://source.squeak.org/VMMaker/FileAttributesPlugin.oscog-akg.43.mcz

==================== Summary ====================

Name: FileAttributesPlugin.oscog-akg.43
Author: akg
Time: 24 October 2018, 7:58:57.494882 am
UUID: 858c0600-cb54-485c-a61f-0f504638709f
Ancestors: FileAttributesPlugin.oscog-akg.42

FileAttributesPlugin 2.0.5

More VM simulator fixes:

- #faCloseDirectory: handles invalid parameters better
- signal errors back to the simulated image rather than raising an error in the simulator

=============== Diff against FileAttributesPlugin.oscog-akg.42 ===============

Item was changed:
  ----- Method: FileAttributesPlugin>>versionString (in category 'version string') -----
  versionString
  	"Answer a string containing the version string for this plugin."
  	<inline: #always>
+ 	^'2.0.5'!
- 	^'2.0.4'!

Item was added:
+ ----- Method: FileAttributesPluginSimulator>>byteStringFromOop: (in category 'simulation support') -----
+ byteStringFromOop: anOop
+ 	"Answer a copy of the supplied ByteString Oop"
+ 
+ 	| sz array ptr |
+ 
+ 	sz := interpreterProxy stSizeOf: anOop.
+ 	ptr := interpreterProxy arrayValueOf: anOop.
+ 	array := ByteString new: sz.
+ 	self strncpy: array _: ptr _: sz.
+ 	^array!

Item was changed:
  ----- Method: FileAttributesPluginSimulator>>classOf: (in category 'simulation support') -----
  classOf: anOop
  
  	| clsOop |
  	
  	anOop = interpreterProxy nilObject ifTrue: [^UndefinedObject].
  	clsOop := interpreterProxy fetchClassOf: anOop.
  	clsOop = interpreterProxy classArray ifTrue: [^Array].
  	clsOop = interpreterProxy classByteArray ifTrue: [^ByteArray].
+ 	clsOop = interpreterProxy classString ifTrue: [^ByteString].
  	self error: 'unknown class'!

Item was changed:
  ----- Method: FileAttributesPluginSimulator>>faCloseDirectory: (in category 'simulation') -----
  faCloseDirectory: faPath
  	"Simulate the the call by actually calling the primitive and discarding the stat information (which will be retrieved again later in the simulation)."
  
  	| result status |
  
  	result := self primClosedir: (self faPathPtr: faPath).
+ 	result isNumber ifFalse:
+ 		[faPath at: 3 put: nil.
- 	result ifNotNil: [
- 		faPath at: 3 put: nil.
  		status := 0 ]
+ 	ifTrue: 
+ 		[status := result < 0 
+ 			ifTrue: [result]
+ 			ifFalse: [self unableToCloseDir]].
- 	ifNil: [status := self unexpectedError].
  	^status
  !

Item was changed:
  ----- Method: FileAttributesPluginSimulator>>fromOop: (in category 'simulation support') -----
  fromOop: anOop
  
  	| cls |
  
  	cls := self classOf: anOop.
  	cls = UndefinedObject ifTrue: [^nil].
  	cls = Array ifTrue: [^self arrayFromOop: anOop].
  	cls = ByteArray ifTrue: [^self byteArrayFromOop: anOop].
+ 	cls = ByteString ifTrue: [^self byteStringFromOop: anOop].
  	self error: 'Unknown class'.!

Item was changed:
  ----- Method: FileAttributesPluginSimulator>>signalError:for: (in category 'primitives') -----
  signalError: error for: aByteArray
  	"In the simulation, just return the error code"
  
+ 	error ifNil: [ ^interpreterProxy primitiveFail ].
+ 	error isSymbol ifTrue: [ ^interpreterProxy primitiveFailFor: 
+ 		((SmalltalkImage current specialObjectsArray at: 52) indexOf: error) ].
- 	error ifNil: [ ^self primitiveFailed ].
- 	error isSymbol ifTrue: [ ^self primitiveFailed: error ].
  	error isPrimitiveError ifFalse: [ 
  		"We shouldn't ever get here"
  		^self primitiveFailed. ].
  
  	^error errorCode.
  !



More information about the Vm-dev mailing list