Marcel Taeumel uploaded a new version of Kernel to project The Trunk:
http://source.squeak.org/trunk/Kernel-mt.1245.mcz ==================== Summary ==================== Name: Kernel-mt.1245 Author: mt Time: 12 July 2019, 10:02:20.401568 am UUID: 2ce0ef20-a760-4d4a-b6bd-c4383a6efd4d Ancestors: Kernel-mt.1244 Refactoring of #literalsDo: - Step 3 of 3. For more information, see http://forum.world.st/Please-Review-Refactoring-for-literalsDo-etc-tp5099756p5100896.html. =============== Diff against Kernel-mt.1244 =============== Item was removed: - ----- Method: AdditionalMethodState>>hasLiteralThorough: (in category 'testing') ----- - hasLiteralThorough: literal - "Answer true if any literal in these properties is literal, - even if embedded in array structure." - 1 to: self basicSize do: [:i | - | propertyOrPragma "<Association|Pragma>" | - propertyOrPragma := self basicAt: i. - (propertyOrPragma isVariableBinding - ifTrue: [propertyOrPragma key == literal - or: [propertyOrPragma value == literal - or: [propertyOrPragma value isArray - and: [propertyOrPragma value hasLiteral: literal]]]] - ifFalse: [propertyOrPragma hasLiteral: literal]) ifTrue: - [^true]]. - ^false! Item was changed: ----- Method: Behavior>>whichSelectorsReferTo: (in category 'testing method dictionary') ----- whichSelectorsReferTo: literal "Answer a Set of selectors whose methods access the argument as a literal." + | who | + who := IdentitySet new. + self selectorsAndMethodsDo: [:selector :method | + (method hasLiteral: literal) + ifTrue: [who add: selector]]. + ^ who - ^self whichSelectorsReferTo: literal thorough: false "Rectangle whichSelectorsReferTo: #+."! Item was removed: - ----- Method: Behavior>>whichSelectorsReferTo:thorough: (in category 'testing method dictionary') ----- - whichSelectorsReferTo: aLiteral thorough: thorough - "Answer a set of selectors whose methods access the argument as a literal. - If thorough is true, then dives into the compact literal notation, and pragmas, - etc, making it slow but thorough " - - | who | - who := IdentitySet new. - CompiledCode - scanBlocksForLiteral: aLiteral - do: [:primaryScanner :secondaryScanner | - self selectorsAndMethodsDo: - [ :selector :method | - (method - refersTo: aLiteral - primaryBytecodeScanner: primaryScanner - secondaryBytecodeScanner: secondaryScanner - thorough: thorough) ifTrue: - [who add: selector]]]. - ^who! Item was removed: - ----- Method: CompiledMethod>>refersTo:bytecodeScanner:thorough: (in category 'scanning') ----- - refersTo: literal bytecodeScanner: scanBlockOrNil thorough: thorough - "Override to check method properties" - | maybeProperties | - (super refersTo: literal bytecodeScanner: scanBlockOrNil thorough: thorough) ifTrue: - [^true]. - ^thorough - and: [(maybeProperties := self penultimateLiteral) isSymbol not - and: [(maybeProperties hasLiteralThorough: literal) - or: [literal isVariableBinding - and: [literal key isSymbol - and: [maybeProperties hasLiteralThorough: literal key]]]]]! |
Free forum by Nabble | Edit this page |