[minor FIX] InterpreterSimlator
ohshima at is.titech.ac.jp
ohshima at is.titech.ac.jp
Wed Aug 18 01:13:49 UTC 1999
Hi,
The following patch adds two primitives (warpBits and
primitiveDirectoryLookup) to the InterpreterSimulator. It
means nothing for most of Squeakers, but it makes the
InterpreterSimlator a bit more functional:-)
OHSHIMA Yoshiki
Dept. of Mathematical and Computing Sciences
Tokyo Institute of Technology
!InterpreterSimulator methodsFor: 'I/O primitives support' stamp: 'yo 6/3/1999 16:10'!
warpBits
^ myBitBlt warpBits! !
!InterpreterSimulator methodsFor: 'file primitives' stamp: 'yo 6/3/1999 12:03'!
makeDirEntryName: entryName size: entryNameSize
createDate: createDate modDate: modifiedDate
isDir: dirFlag fileSize: fileSize
| modDateOop createDateOop nameString results |
self var: 'entryName' declareC: 'char *entryName'.
"allocate storage for results, remapping newly allocated
oops in case GC happens during allocation"
self pushRemappableOop:
(self instantiateClass: (self splObj: ClassArray) indexableSize: 5).
self pushRemappableOop:
(self instantiateClass: (self splObj: ClassString) indexableSize: entryNameSize)..
self pushRemappableOop: (self positive32BitIntegerFor: createDate).
self pushRemappableOop: (self positive32BitIntegerFor: modifiedDate).
modDateOop _ self popRemappableOop.
createDateOop _ self popRemappableOop.
nameString _ self popRemappableOop.
results _ self popRemappableOop.
1 to: entryNameSize do: [ :i |
self storeByte: i-1 ofObject: nameString withValue: (entryName at: i) asciiValue.
].
self storePointer: 0 ofObject: results withValue: nameString.
self storePointer: 1 ofObject: results withValue: createDateOop.
self storePointer: 2 ofObject: results withValue: modDateOop.
dirFlag
ifTrue: [ self storePointer: 3 ofObject: results withValue: trueObj ]
ifFalse: [ self storePointer: 3 ofObject: results withValue: falseObj ].
self storePointer: 4 ofObject: results
withValue: (self integerObjectOf: fileSize).
^ results
! !
!InterpreterSimulator methodsFor: 'file primitives' stamp: 'yo 6/3/1999 12:07'!
primitiveDirectoryLookup
| index pathName array result |
index _ self stackIntegerValue: 0.
pathName _ (self shortPrint: (self stackValue: 1)).
pathName _ pathName copyFrom: 2 to: pathName size - 1.
successFlag ifFalse: [
^self primitiveFail.
].
array _ FileDirectory default primLookupEntryIn: pathName index: index.
array == nil ifTrue: [
self pop: 3.
self push: nilObj.
^array.
].
array == #badDirectoryPath ifTrue: [
^self primitiveFail.
].
result _ self makeDirEntryName: (array at: 1) size: (array at: 1) size
createDate: (array at: 2) modDate: (array at: 3)
isDir: (array at: 4) fileSize: (array at: 5).
self pop: 3.
self push: result.
! !
More information about the Squeak-dev
mailing list
|