VM Maker: VMMaker.oscog-eem.2442.mcz

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

VM Maker: VMMaker.oscog-eem.2442.mcz

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