Eliot Miranda uploaded a new version of Compiler to project The Trunk:
http://source.squeak.org/trunk/Compiler-eem.446.mcz ==================== Summary ==================== Name: Compiler-eem.446 Author: eem Time: 9 October 2020, 11:54:51.071572 am UUID: 6f9f349c-5461-45b5-a707-6150decce9ef Ancestors: Compiler-eem.445 Have Parser pay attention to encoderClass if stored in a cue. =============== Diff against Compiler-eem.445 =============== Item was changed: + ----- Method: Parser>>encoder (in category 'private') ----- - ----- Method: Parser>>encoder (in category 'public access') ----- encoder ^encoder ifNil: [encoder := CompiledMethod preferredBytecodeSetEncoderClass new]! Item was added: + ----- Method: Parser>>encoderFromCue: (in category 'private') ----- + encoderFromCue: aCompilationCue + ^encoder ifNil: + [encoder := (aCompilationCue encoderClass ifNil: [CompiledMethod preferredBytecodeSetEncoderClass]) new]! Item was changed: ----- Method: Parser>>parseCue:noPattern:ifFail: (in category 'public access') ----- parseCue: aCue noPattern: noPattern ifFail: aBlock + "Answer a MethodNode for the argument, sourceStream, that is the root + of a parse tree. Parsing is done with respect to the CompilationCue to + resolve variables, etc. Errors in parsing are reported to the cue's requestor; - "Answer a MethodNode for the argument, sourceStream, that is the root of - a parse tree. Parsing is done with respect to the CompilationCue to - resolve variables. Errors in parsing are reported to the cue's requestor; otherwise aBlock is evaluated. The argument noPattern is a Boolean that is true if the the sourceStream does not contain a method header (i.e., for DoIts)." | methNode repeatNeeded myStream s p subSelection | myStream := aCue sourceStream. [repeatNeeded := false. p := myStream position. s := myStream upToEnd. myStream position: p. + - doitFlag := noPattern. + [(self encoderFromCue: aCue) init: aCue notifying: self. + self init: myStream cue: aCue failBlock: [^aBlock value]. + - [self encoder init: aCue notifying: self. - self init: myStream cue: aCue failBlock: [^ aBlock value]. - subSelection := self interactive and: [cue requestor selectionInterval = (p + 1 to: p + s size)]. failBlock:= aBlock. methNode := self method: noPattern context: cue context] on: ReparseAfterSourceEditing do: [ :ex | repeatNeeded := true. properties := nil. "Avoid accumulating pragmas and primitives Number" myStream := ex newSource ifNil: [subSelection ifTrue: [ReadStream on: cue requestor text string from: cue requestor selectionInterval first to: cue requestor selectionInterval last] ifFalse: [ReadStream on: cue requestor text string]] ifNotNil: [:src | myStream := src readStream]]. repeatNeeded] whileTrue: [encoder := self encoder class new]. methNode sourceText: s. + ^methNode! - ^methNode - ! |
Free forum by Nabble | Edit this page |