VM Maker: FileAttributesPlugin.oscog-eem.55.mcz

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

VM Maker: FileAttributesPlugin.oscog-eem.55.mcz

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