[prev in list] [next in list] [prev in thread] [next in thread]
List: squeak-vm-dev
Subject: [Vm-dev] VM Maker: VMMaker.oscog-VB.2370.mcz
From: commits () source ! squeak ! org
Date: 2018-04-24 1:43:11
Message-ID: E1fAn0C-0003dP-9o () andreas
[Download RAW message or body]
VincentBlondeau uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker.oscog-VB.2370.mcz
==================== Summary ====================
Name: VMMaker.oscog-VB.2370
Author: VB
Time: 23 April 2018, 6:42:34.685234 pm
UUID: b61408e0-effc-5144-bd81-993254392346
Ancestors: VMMaker.oscog-VB.2369
primitiveStdioDescriptorIsATTY will return a bool instead of an int
=============== Diff against VMMaker.oscog-VB.2369 ===============
Item was changed:
----- Method: FilePlugin>>primitiveFileStdioHandles (in category 'file primitives') \
----- primitiveFileStdioHandles
"Answer an Array of file handles for standard in, standard out and standard error,
with nil in entries that are unvailable, e.g. because the platform does not \
provide standard error, etc. Fail if there are no standard i/o facilities on the \
platform or if the security plugin denies access or if memory runs out."
| fileRecords result validMask |
<export: true>
<var: 'fileRecords' declareC: 'SQFile fileRecords[3]'>
sHFAfn ~= 0 ifTrue:
[(self cCode: ' ((sqInt (*)(void))sHFAfn)()' inSmalltalk: [true]) ifFalse:
[^interpreterProxy primitiveFailFor: PrimErrUnsupported]].
self cCode: '' inSmalltalk: [fileRecords := Array new: 3].
validMask := self sqFileStdioHandlesInto: fileRecords.
validMask = 0 ifTrue:
[^interpreterProxy primitiveFailFor: PrimErrUnsupported].
result := interpreterProxy instantiateClass: interpreterProxy classArray \
indexableSize: 3. result = nil ifTrue:
[^interpreterProxy primitiveFailFor: PrimErrNoMemory].
interpreterProxy pushRemappableOop: result.
0 to: 2 do:
[:index|
(validMask bitAnd: (1 << index)) ~= 0 ifTrue:
[result := interpreterProxy instantiateClass: interpreterProxy classByteArray \
indexableSize: self fileRecordSize. result = nil ifTrue:
[interpreterProxy popRemappableOop.
^interpreterProxy primitiveFailFor: PrimErrNoMemory].
interpreterProxy storePointer: index ofObject: interpreterProxy \
topRemappableOop withValue: result. self
cCode:
[self mem: (interpreterProxy firstIndexableField: result)
cp: (self addressOf: (fileRecords at: index))
y: self fileRecordSize]
inSmalltalk:
[(interpreterProxy firstIndexableField: result)
unitSize: interpreterProxy wordSize;
at: 0 put: (fileRecords at: index + 1)]]].
"In the non-Spur threaded VM ensure the handles are old, so that sqFileReadIntoAt \
is unaffected
by incremental GCs. See \
platforms/Cross/plugins/FilePlugin/sqFilePluginBasicPrims.c. The Spur VM uses \
pinning, so it doesn't need the GC." self cppIf: COGMTVM
ifTrue: [self cppIf: SPURVM
ifTrue: []
ifFalse: [interpreterProxy fullGC]].
result := interpreterProxy popRemappableOop.
interpreterProxy pop: 1 thenPush: result!
Item was changed:
----- Method: FilePlugin>>primitiveStdioDescriptorIsATTY (in category 'file \
primitives') ----- primitiveStdioDescriptorIsATTY
| isStdoutRedirected |
<export: true>
isStdoutRedirected := self
cCode: 'sqStdioDescriptorIsATTY() '
inSmalltalk: [true].
interpreterProxy pop: 1.
+ interpreterProxy pushBool: isStdoutRedirected!
- interpreterProxy pushInteger: isStdoutRedirected!
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic