[Vm-dev] VM Maker: FileAttributesPlugin.oscog-eem.55.mcz

commits at source.squeak.org commits at source.squeak.org
Wed Apr 1 23:44:34 UTC 2020


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

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

Name: FileAttributesPlugin.oscog-eem.55
Author: eem
Time: 1 April 2020, 4:44:32.832779 pm
UUID: 21ffb1fc-12ba-4363-ab53-4f2168cb7450
Ancestors: FileAttributesPlugin.oscog-eem.54

Make primitiveFileMasks compile under MSVC and streamline the implementation by using a word array (new InterpreterProxy protocol).

=============== Diff against FileAttributesPlugin.oscog-eem.54 ===============

Item was changed:
  ----- Method: FileAttributesPlugin>>primitiveFileMasks (in category 'file primitives') -----
  primitiveFileMasks
  	"Answer an array of well known file masks"
  
+ 	| masksObj masks  |
- 	| masks |
  	<export: true>
+ 	masksObj := interpreterProxy instantiateClass: interpreterProxy classWordArray indexableSize: 8.
+ 	masksObj ifNil: [^interpreterProxy primitiveFailFor: PrimErrNoMemory].
+ 	masks := self cCoerceSimple: (interpreterProxy firstIndexableField: masksObj) to: #'int *'.
+ 	masks at: 0 put: (self cCode: [#S_IFMT] inSmalltalk: [16rF000]).
+ 
+ 	self cppIf: #S_IFSOCK defined ifTrue:
+ 	[masks at: 1 put: (self cCode: [#S_IFSOCK] inSmalltalk: [16rC000])].
+ 
+ 	self cppIf: #S_IFLNK defined ifTrue:
+ 	[masks at: 2 put: (self cCode: [#S_IFLNK] inSmalltalk: [16rA000])].
+ 
+ 	masks at: 3 put: (self cCode: [#S_IFREG] inSmalltalk: [16r8000]).
+ 
+ 	self cppIf: #S_IFBLK defined ifTrue:
+ 	[masks at: 4 put: (self cCode: [#S_IFBLK] inSmalltalk: [16r6000])].
+ 
+ 	masks at: 5 put: (self cCode: [#S_IFDIR] inSmalltalk: [16r4000]).
+ 
+ 	masks at: 6 put: (self cCode: [#S_IFCHR] inSmalltalk: [16r2000]).
+ 
+ 	self cppIf: #S_IFIFO defined ifTrue:
+ 	[masks at: 7 put: (self cCode: [#S_IFIFO] inSmalltalk: [16r1000])].
+ 
+ 	interpreterProxy methodReturnValue: masksObj!
- 	masks := interpreterProxy instantiateClass: (interpreterProxy classArray) indexableSize: 8.
- 	masks ifNil: [^interpreterProxy primitiveFailFor: PrimErrNoMemory].
- 	interpreterProxy
- 		storePointer: 0
- 		ofObject: masks
- 		withValue: (interpreterProxy positive32BitIntegerFor: (self cCode: [#S_IFMT] inSmalltalk: [16rF000])).
- 	self cppIf: #_WIN32 defined not
- 		ifTrue: [
- 			interpreterProxy
- 				storePointer: 1
- 				ofObject: masks
- 				withValue: (interpreterProxy positive32BitIntegerFor: (self cCode: [#S_IFSOCK] inSmalltalk: [16rC000])).
- 			interpreterProxy
- 				storePointer: 2
- 				ofObject: masks
- 				withValue: (interpreterProxy positive32BitIntegerFor: (self cCode: [#S_IFLNK] inSmalltalk: [16rA000]))].
- 	interpreterProxy
- 		storePointer: 3
- 		ofObject: masks
- 		withValue: (interpreterProxy positive32BitIntegerFor: (self cCode: [#S_IFREG] inSmalltalk: [16r8000])).
- 	interpreterProxy
- 		storePointer: 4
- 		ofObject: masks
- 		withValue: (interpreterProxy positive32BitIntegerFor: (self cCode: [#S_IFBLK] inSmalltalk: [16r6000])).
- 	interpreterProxy
- 		storePointer: 5
- 		ofObject: masks
- 		withValue: (interpreterProxy positive32BitIntegerFor: (self cCode: [#S_IFDIR] inSmalltalk: [16r4000])).
- 	interpreterProxy
- 		storePointer: 6
- 		ofObject: masks
- 		withValue: (interpreterProxy positive32BitIntegerFor: (self cCode: [#S_IFCHR] inSmalltalk: [16r2000])).
- 	interpreterProxy
- 		storePointer: 7
- 		ofObject: masks
- 		withValue: (interpreterProxy positive32BitIntegerFor: (self cCode: [#S_IFIFO] inSmalltalk: [16r1000])).
- 	interpreterProxy pop: 1 thenPush: masks!



More information about the Vm-dev mailing list