Eliot Miranda uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-eem.2442.mcz ==================== Summary ==================== Name: VMMaker.oscog-eem.2442 Author: eem Time: 19 September 2018, 9:22:37.266528 am UUID: f7e49724-6cf7-484b-a024-25d028888354 Ancestors: VMMaker.oscog-eem.2441 Final piece of Pharo compatibility to allow e.g. the REPL startreader images to run in Pharo 6.1. Split the input dialog for FakeStdinStream so it works both on Pharo and Squeak. =============== Diff against VMMaker.oscog-eem.2441 =============== Item was added: + ----- Method: FakeStdinStream>>isFakeStdinStream (in category 'testing') ----- + isFakeStdinStream + ^true! Item was changed: ----- Method: FakeStdinStream>>next (in category 'accessing') ----- next "Answer the next object in the Stream represented by the receiver. If there are no more elements in the stream fill up the buffer by prompting for input" | sem threadIndex inputLine next | position >= readLimit ifTrue: [simulator isThreadedVM ifTrue: ["(simulator cogit singleStep not and: [UIManager confirm: 'Single step?']) ifTrue: [simulator cogit singleStep: true]." threadIndex := simulator disownVM: DisownVMLockOutFullGC. simulator forceInterruptCheckFromHeartbeat. sem := Semaphore new. WorldState addDeferredUIMessage: [inputLine := UIManager default request: 'Input please!!'. sem signal]. sem wait] ifFalse: "simulate line-oriented input" + [inputLine := ((Smalltalk classNamed: #FillInTheBlankMorph) + ifNotNil: "Squeak" + [:fITBM| + fITBM + request: 'Input please!!' + initialAnswer: '' + centerAt: ActiveHand cursorPoint + inWorld: ActiveWorld + onCancelReturn: nil + acceptOnCR: true] + ifNil: "Pharo; onCancelReturn: nil is the default here" + [UIManager default + request: 'Input please!!' + initialAnswer: '']). - [inputLine := FillInTheBlankMorph - request: 'Input please!!' - initialAnswer: '' - centerAt: ActiveHand cursorPoint - inWorld: ActiveWorld - onCancelReturn: nil - acceptOnCR: true. inputLine ifNil: [self atEnd: true. ^nil]]. collection size <= inputLine size ifTrue: [collection := collection species new: inputLine size + 1]. collection replaceFrom: 1 to: inputLine size with: inputLine startingAt: 1; at: (readLimit := inputLine size + 1) put: Character lf. position := 0. simulator isThreadedVM ifTrue: [simulator ownVM: threadIndex]]. next := collection at: (position := position + 1). "This is set temporarily to allow (FilePluginSimulator>>#sqFile:Read:Into:At: to brwak out of its loop. sqFile:Read:Into:At: resets it on the way out." atEnd := position >= readLimit. ^next " This does it with workspaces: | ws r s | s := Semaphore new. ws := Workspace new contents: ''. ws acceptAction: [:t| r := t asString. s signal]. [ws openLabel: 'Yo!!'; shouldStyle: false. (ws dependents detect: [:dep | dep isKindOf: PluggableTextMorph] ifNone: [nil]) ifNotNil: [:textMorph| textMorph acceptOnCR: true; hasUnacceptedEdits: true]] fork. Processor activeProcess == Project uiProcess ifTrue: [[r isNil] whileTrue: [World doOneCycle]] ifFalse: [s wait]. ws topView delete. s wait. s signal. r"! Item was added: + ----- Method: Stream>>isFakeStdinStream (in category '*VMMaker-JITSimulation-testing') ----- + isFakeStdinStream + ^false! |
Free forum by Nabble | Edit this page |