List1


Status Class Method name Accessor Original Squeak 1.1 code Comment
Array elementsForwardIdentityTo:copyHash:
Behavior allInstances allInstances  "Answer a Set of all current instances of the receiver." | aCollection | aCollection _ OrderedCollection new. self allInstancesDo: [:x | x == aCollection ifFalse: [aCollection add: x]]. ^aCollection return an array
Behavior withAllSubclasses withAllSubclasses "Answer a Set of the receiver, the receiver's descendent's, and the  receiver''s descendent's subclasses." | aSet | aSet _ Set with: self. aSet addAll: self subclasses. self subclasses do: [:eachSubclass | aSet addAll: eachSubclass allSubclasses]. ^aSet can be simplified using allSubclasses message
Behavior instSize instSize "Answer the number of named instance variables (as opposed to indexed variables) of the receiver." ^ ((format bitShift: -1) bitAnd: 16r3F) – 1 different code
Behavior allSuperclasses allSuperclasses "Answer an OrderedCollection of the receiver's and the receiver's  ancestor's superclasses. The first element is the receiver's immediate  superclass, followed by its superclass; the last element is Object." | temp | superclass == nil ifTrue: [^OrderedCollection new] ifFalse: [temp _ superclass allSuperclasses. temp addFirst: superclass. ^temp] different method return position
BlockContext forkAt: forkAt: priority  "Create and schedule a Process running the code in the receiver. The  priority of the process is the argument, priority." | forkedProcess | forkedProcess _ self newProcess. forkedProcess priority: priority. forkedProcess resume different comment only
done BlockContext numArgs accessor nargs
BlockContext hideFromDebugger
ClassBuilder reservedNames reservedNames "Return a list of names that must not be used for variables" ^#('self' 'super' 'thisContext' 'true' 'false' 'nil'  self super thisContext true false nil). by ar, all array items should be ByteSymbols
Collection min
Color green green "Answer my green component, a float in the range [0.0..1.0].  Don't confuse this with the class message (Color green) that returns the color pure green. 6/13/96 tk" ^ self privateGreen asFloat / ComponentMax only simpler comment
Color privateRed privateRed "Private! Answer the internal representation of my red component." ^ (rgb bitShift: 0 - RedShift) bitAnd: ComponentMask different comment only
Color red red "Answer my red component, a float in the range [0.0..1.0].  Don't confuse this with the class message (Color red) that returns the color pure red. 6/13/96 tk" ^ self privateRed asFloat / ComponentMax different comment only
Color privateBlue privateBlue "Private! Answer the internal representation of my blue component." ^ rgb bitAnd: ComponentMask
Color blue blue "Answer my blue component, a float in the range [0.0..1.0].  Don't confuse this with the class message (Color blue) that returns the color pure blue. 6/13/96 tk" ^ self privateBlue asFloat / ComponentMax different comment only
Color privateAlpha
Color name name "Look to see if this Color has a name. Must be an exact match of color. 6/19/96 tk" ColorNames do: [:each |  (Color perform: each) = self ifTrue: [ ^ each]]. ^ nil only different format and comment
done Color privateRGB accessor rgb
Color privateGreen privateGreen "Private! Answer the internal representation of my green component." ^ (rgb >> GreenShift) bitAnd: ComponentMask bitShift:
done Color class brown accessor Brown
done Color class veryVeryDarkGray accessor VeryVeryDarkGray
done Color class orange accessor Orange
done Color class paleYellow accessor PaleYellow
done Color class veryPaleRed accessor VeryPaleRed
done Color class paleBuff accessor PaleBuff
done Color class veryVeryLightGray accessor veryVeryLightGray
done Color class paleBlue accessor PaleBlue
done Color class transparent accessor Transparent
done Color class paleGreen accessor PaleGreen
done Color class palePeach accessor PalePeach
done Color class paleOrange accessor PaleOrange
done Color class paleRed accessor PaleRed
done Color class paleMagenta accessor PaleMagenta
done Color class paleTan accessor PaleTan
Color class shutDown
CompiledMethod sendsToSuper sendsToSuper "Answer whether the receiver sends any message to super." ^ (self scanFor: 16r85) or: [self scanFor: 16r86] significant changes
CompiledMethod endPC endPC "Answer the index of the last bytecode." (self last between: 120 and: 124) ifTrue: [^self size]. ^self size – 3 different code
ContextPart cachesStack
ContextPart stackOfSize: stackOfSize: limit  "Answer an OrderedCollection of the top 'limit' contexts on the receiver's sender chain." | a stack | stack _ OrderedCollection new. stack addLast: (a _ self). [(a _ a sender) ~~ nil and: [stack size < limit]] whileTrue: [stack addLast: a]. ^ stack different code
CrLfFileStream class startUp
Cursor beCursorWithMask: beCursorWithMask: maskForm "Primitive. Tell the interpreter to use the receiver as the current cursor image with the given mask Form. Both the receiver and the mask should have extent 16@16 and a depth of one. The mask and cursor bits are combined as follow: maskcursoreffect  0 0transparent (underlying pixel shows through)  1 1opaque black  1 0opaque white  0 1invert the underlying pixel" "Essential. See Object documentation whatIsAPrimitive." <primitive: 101> self primitiveFailed by jm, free
Date printOn:format: printOn: aStream format: formatArray  "Print a description of the receiver on aStream using the format denoted  by the argument, formatArray: #(item item item sep monthfmt yearfmt twoDigits) items: 1=day 2=month 3=year will appear in the order given, separated by sep which is eaither an ascii code or character. monthFmt: 1=09 2=Sep 3=September yearFmt: 1=1996 2=96 digits: (missing or)1=9 2=09. See the examples in printOn: and mmddyy" | monthIndex element monthFormat twoDigits monthDay | twoDigits _ formatArray size > 6 and: [(formatArray at: 7) > 1]. monthIndex _ self monthIndex. 1 to: 3 do:  [:elementIndex |  element _ formatArray at: elementIndex. element = 1 ifTrue: [monthDay _ day - self firstDayOfMonth + 1. twoDigits & (monthDay < 10) ifTrue: [aStream nextPutAll: '0']. monthDay printOn: aStream]. element = 2 ifTrue:  [monthFormat _ formatArray at: 5. monthFormat = 1 ifTrue: [twoDigits & (monthIndex < 10) ifTrue: [aStream nextPutAll: '0']. monthIndex printOn: aStream]. monthFormat = 2 ifTrue: [aStream nextPutAll: ((MonthNames at: monthIndex) copyFrom: 1 to: 3)]. monthFormat = 3 ifTrue: [aStream nextPutAll: (MonthNames at: monthIndex)]]. element = 3 ifTrue:  [(formatArray at: 6) = 1 ifTrue: [year printOn: aStream] ifFalse: [twoDigits & ((year \\ 100) < 10) ifTrue: [aStream nextPutAll: '0']. (year \\ 100) printOn: aStream]]. elementIndex < 3 ifTrue:  [(formatArray at: 4) ~= 0  ifTrue: [aStream nextPut: (formatArray at: 4) asCharacter]]] some significant changes
Date dayMonthYearDo:
Date class fromSeconds:
Date class fromDays: fromDays: dayCount "Answer an instance of me which is dayCount days after January 1,  1901." ^self newDay: 1 + (dayCount asInteger rem: 1461) "There are 1461 days in a 4-year cycle.   2000 is a leap year, so no extra correction is necessary. " year: 1901 + ((dayCount asInteger quo: 1461) * 4) use julianDayNumber: with SqueakEpoch
Date class julianDayNumber:
Date class dateAndTimeNow dateAndTimeNow "Answer an Array whose first element is Date today and second element  is Time now." ^Time dateAndTimeNow
DateAndTime hour
DateAndTime midnight
DateAndTime asDateAndTime
DateAndTime second
DateAndTime hour24
done DateAndTime nanoSecond accessor nanos
DateAndTime minute
DateAndTime +
DateAndTime dayMonthYearDo:
DateAndTime -
DateAndTime =
DateAndTime class julianDayNumber:
DateAndTime class year:month:day:hour:minute:second:
DateAndTime class localTimeZone
DateAndTime class year:month:day:hour:minute:
DateAndTime class year:month:day:hour:minute:second:offset:
DateAndTime class year:month:day:hour:minute:second:nanoSecond:offset:
DateAndTime class localOffset
DateAndTime class year:month:day:
Decompiler checkForBlock: checkForBlock: receiver "We just saw a blockCopy: message. Check for a following block." | savePc jump args argPos block | receiver == constructor codeThisContext ifFalse: [^false]. savePc _ pc. (jump _ self interpretJump) notNil ifFalse: [pc _ savePc. ^nil]. "Definitely a block" jump _ jump + pc. argPos _ statements size. [self willStorePop] whileTrue: [stack addLast: ArgumentFlag. "Flag for doStore:" self interpretNextInstructionFor: self]. args _ Array new: statements size - argPos. 1 to: args size do: [:i | args at: i put: statements removeLast]. "Retrieve args" block _ self blockTo: jump. stack addLast: (constructor codeArguments: args block: block). ^true while retreiving args set scope to -1  for every argument
done Decompiler withTempNames: accessor tempVars
Decompiler blockForCaseTo:
DecompilerConstructor codeConstants codeConstants "Answer with an array of the objects representing self, true, false, nil, -1, 0, 1, 2." | i | ^(Array with: NodeSelf with: NodeTrue with: NodeFalse with: NodeNil) , ((-1 to: 2) collect: [:i | LiteralNode new key: i code: LdMinus1 + i + 1]) useless temporary variable i
DecompilerConstructor codeTemp:named:
Delay wait wait "Suspend the process of the caller for the amount of time specified  when the receiver was created." beingWaitedOn ifTrue: [ self error: 'A process is already waiting on this Delay' ]. AccessProtect critical: [ beingWaitedOn _ true. resumptionTime _ Time millisecondClockValue + delayDuration. ActiveDelay == nil ifTrue: [ self activate ] ifFalse: [ resumptionTime < ActiveDelay resumptionTime ifTrue: [ SuspendedDelays add: ActiveDelay. self activate ] ifFalse: [ SuspendedDelays add: self ]. ]. ]. delaySemaphore wait. different code
Delay adjustResumptionTimeOldBase:newBase:
Delay schedule
Delay class saveResumptionTimes
Delay class forDuration:
Delay class shutDown shutDown "Suspend the active delay, if any, before snapshotting. It will be reactived when the snapshot is resumed." "Details: This prevents a timer interrupt from waking up the active delay in the midst snapshoting, since the active delay will be restarted when resuming the snapshot and we don't want to process the delay twice." Processor signal: nil atTime: 0. AccessProtect wait. ActiveDelay == nil ifFalse: [ ActiveDelay recordTimeRemaining ]. different code
Delay class restoreResumptionTimes
Delay class startUp startUp "Restart active delay, if any, when resuming a snapshot." ActiveDelay == nil ifFalse: [ ActiveDelay continueAfterSnapshot ]. AccessProtect signal. do restoreResumptionTimes firstly use activate method
Dictionary keys keys "Answer a Set containing the receiver's keys." | aSet key | aSet _ Set new: self size. self keysDo: [:key | aSet add: key]. ^ aSet useless temporary variable key
Dictionary at:ifPresent:
Dictionary at:ifAbsent: at: key ifAbsent: aBlock  | index assoc | index _ self findElementOrNil: key. assoc _ array at: index. nil == assoc ifTrue: [ ^ aBlock value ]. ^ assoc value fastest/readable code?
Duration printOn:
Duration ticks
Duration /
Duration <
Duration -
Duration hours
Duration days
Duration seconds:nanoSeconds:
Duration //
Duration asNanoSeconds
Duration +
Duration \\
done Duration nanoSeconds acessor nanos
Duration negative
Duration minutes
Duration positive
Duration seconds
Duration asMilliSeconds
Duration =
Duration *
Duration class seconds:nanoSeconds:
Duration class days:
Duration class nanoSeconds:
Duration class milliSeconds:
Duration class days:hours:minutes:seconds:nanoSeconds:
Encoder autoBind: autoBind: name  "Declare a block argument as a temp if not already declared." | node assoc | node _  scopeTable  at: name ifAbsent:  [(self lookupInPools: name ifFound: [:assoc | assoc]) ifTrue: [self notify: 'Name already used in a Pool or Global']. ^self reallyBind: name]. node isTemp ifFalse: [^self notify: 'Name already used in this class']. ^node if thenode is temp and has positive scope, notify that the name is already used in the method. If it doesn't have positive scope, set it and define that the node has def and ref
Encoder bindArg:
Encoder newTemp: newTemp: name nTemps _ nTemps + 1. ^VariableNode new name: name index: nTemps - 1 type: LdTempType use constructor with scope (=0)
Encoder litIndex: litIndex: literal | p | p _ literalStream position. p = 64 ifTrue: [self notify: 'More than 64 literals referenced.  You must split or otherwise simplify this method. The 65th literal is: ', literal printString. ^nil]. "Would like to show where it is in the source code,   but that info is hard to get." literalStream nextPut: literal. ^ p limit increased to 256
EventManager actionMap
EventManager class actionMapFor:
Exception description
ExceptionSet initialize
ExceptionSet ,
ExceptionSet handles:
ExceptionSet add:
FileDirectory pathNameDelimiter pathNameDelimiter ^ self class pathNameDelimiter use DirectoryClass delimiter
FileDirectory entries
FileDirectory directoryNames
FileDirectory fileNames fileNames "FileDirectory default fileNames" ^ self directoryContents collect: [:spec | spec first] different code
FileDirectory fileAndDirectoryNames
FileDirectory class extensionDelimiter
FileDirectory class dot
Float printOn:base: printOn: aStream base: base "Estimate significant figures and handle sign."  | digitCount | digitCount _ 2r1.0e23 "23 bits" floorLog: base asFloat. self > 0.0 ifTrue: [self absPrintOn: aStream base: base digitCount: digitCount] ifFalse: [self = 0.0 ifTrue: [^ aStream nextPutAll: '0.0']. aStream nextPutAll: '-'. self negated absPrintOn: aStream base: base digitCount: digitCount] check NaN different code
Float hash hash "Hash is reimplemented because = is implemented." ^(self basicAt: 1) bitAnd: 16383"High bits as an Integer" different code
Float sign
Float isInfinite
Float / / aNumber  "Primitive. Answer the result of dividing receiver by aNumber. Fail if the argument is not a Float. Essential. See Object documentation whatIsAPrimitive." <primitive: 50> aNumber = 0 ifTrue: [self error: 'attempt to divide by zero'] ifFalse: [^self retry: #/ coercing: aNumber] use ZeroDivide instead of general error  and adaptToFloat:andSend:
Float isNaN
Float reciprocalLogBase2
Float adaptToScaledDecimal:andSend:
Float isFloat simple tester
Float timesTwoPower: timesTwoPower: anInteger  "Primitive. Answer with the receiver mulitplied by 2.0 raised to the power of the argument. Optional. See Object documentation whatIsAPrimitive." <primitive: 54> ^self * (2.0 raisedToInteger: anInteger) handle special cases if the argument is <-29 <0 <30
Float absPrintOn:base:
Float significand
done Float class negativeZero accessor NegativeZero
Float class one
Form storeOn:base: storeOn: aStream base: anInteger  "Store the receiver out in the form: Form newExtent:fromArray:#()offset:" aStream nextPut: $(. aStream nextPutAll: self species name. aStream crtab: 1. aStream nextPutAll: 'extent: '. self extent printOn: aStream. aStream crtab: 1. aStream nextPutAll: 'fromArray: #('. 1 to: bits size do:  [:index |  anInteger = 10 ifTrue: [aStream space] ifFalse: [aStream crtab: 2]. (self bits at: index) printOn: aStream base: anInteger]. aStream nextPut: $). aStream crtab: 1. aStream nextPutAll: 'offset: '. self offset printOn: aStream. aStream nextPut: $) unhibernate firstly write depth after extent use storeBitsOn:base:
Fraction setNumerator:denominator: setNumerator: n denominator: d d = 0 ifTrue: [self error: 'denominator cannot be zero'] ifFalse:  [numerator _ n asInteger. denominator _ d asInteger abs. "keep sign in numerator" d < 0 ifTrue: [numerator _ numerator negated]] use ZeroDivide instead of general error
Fraction isFraction simple tester
HtmlFileStream verbatim: verbatim: aString "Do not attempt to translate the characters. Use this to override translation in nextPutAll:. User may write HTML directly to the file with this." ^ super nextPutAll: aString "very tricky! depends on the fact that StandardFileStream nextPutAll: does not call nextPut, but does a direct write." return self
HtmlFileStream nextPut: nextPut: char "Put a character on the file, but translate it first. 4/6/96 tk" char = $< ifTrue: [^ super nextPutAll: '&lt;']. char = $> ifTrue: [^ super nextPutAll: '&gt;']. char = $& ifTrue: [^ super nextPutAll: '&amp;']. char asciiValue = 13 "return" ifTrue: [ self command: 'br']. char = $"tab" ifTrue: [self command: 'IMG SRC="tab.gif" ALT=" "']. ^ super nextPut: char use TabThing
InstructionStream addSelectorTo: addSelectorTo: set  "If this instruction is a send, add its selector to set." | byte literalNumber | byte _ self method at: pc. byte < 128 ifTrue: [^self]. byte >= 176 ifTrue:  ["special byte or short send" byte >= 208 ifTrue: [set add: (self method literalAt: (byte bitAnd: 15) + 1)] ifFalse: [set add: (Smalltalk specialSelectorAt: byte - 176 + 1)]] ifFalse:  [(byte between: 131 and: 134) ifTrue:  [literalNumber _ byte odd ifTrue: [(self method at: pc + 1) \\ 32] ifFalse: [self method at: pc + 2]. set add: (self method literalAt: literalNumber + 1)]] some significant changes. processing of every case between 131 and 134
InstructionStream interpretExtension:in:for: interpretExtension: offset in: method for: client | numberArguments literalNumber type offset2 | "pc has already been incremented by 1" offset < 3 ifTrue:  ["extended pushes and pops" type _ (method at: pc) // 64. offset2 _ (method at: pc) \\ 64. pc _ pc + 1. offset = 0 ifTrue:  [type = 0 ifTrue: [^client pushReceiverVariable: offset2]. type = 1 ifTrue: [^client pushTemporaryVariable: offset2]. type = 2  ifTrue: [^client pushConstant: (method literalAt: offset2 + 1)]. type = 3 ifTrue: [^client pushLiteralVariable:  (method literalAt: offset2 + 1)]]. offset = 1 ifTrue:  [type = 0 ifTrue: [^client storeIntoReceiverVariable: offset2]. type = 1 ifTrue: [^client storeIntoTemporaryVariable: offset2]. type = 2 ifTrue: [self error: 'illegalStore']. type = 3  ifTrue: [^client storeIntoLiteralVariable:  (method literalAt: offset2 + 1)]]. offset = 2 ifTrue:  [type = 0 ifTrue: [^client popIntoReceiverVariable: offset2]. type = 1 ifTrue: [^client popIntoTemporaryVariable: offset2]. type = 2 ifTrue: [self error: 'illegalStore']. type = 3  ifTrue: [^client popIntoLiteralVariable:  (method literalAt: offset2 + 1)]]]. offset < 7 ifTrue:  ["extended sends" offset odd ifTrue:  [numberArguments _ (method at: pc) // 32. literalNumber _ (method at: pc) \\ 32. pc _ pc + 1] ifFalse:  [numberArguments _ method at: pc. literalNumber _ method at: pc + 1. pc _ pc + 2]. ^client send: (method literalAt: literalNumber + 1) super: offset > 4 numArgs: numberArguments]. offset = 7 ifTrue: [^client doPop]. offset = 8 ifTrue: [^client doDup]. offset = 9 ifTrue: [^client pushActiveContext]. self error: 'unusedBytecode' many significant changes
InstructionStream scanFor: scanFor: scanBlock  "Answer the index of the first bytecode for which scanBlock answer true  when supplied with that bytecode." | method end byte type | method _ self method. end _ method endPC. [pc <= end] whileTrue:  [(scanBlock value: (byte _ method at: pc)) ifTrue: [^true]. type _ byte // 16. pc _  type = 8 ifTrue: ["extensions" pc + (#(2 2 2 2 3 2 3 1 1 1 ) at: byte \\ 16 + 1)] ifFalse: [type = 10 ifTrue: [pc + 2"long jumps"] ifFalse: [pc + 1]]]. ^false no changes
Integer // // aNumber | q | aNumber = 0 ifTrue: [^self error: 'division by 0']. self = 0 ifTrue: [^0]. q _ self quo: aNumber  "Refer to the comment in Number|//.". (q negative ifTrue: [q * aNumber ~= self] ifFalse: [q = 0 and: [self negative ~= aNumber negative]]) ifTrue: [^q - 1"Truncate towards minus infinity"] ifFalse: [^q] use ZeroDivide instead of general error
Integer bitInvert
Integer \\\
Integer >> >> shiftAmount "left shift" shiftAmount < 0 ifTrue: [self error: 'negative arg']. ^ self bitShift: 0 – shiftAmount It's a right shift
Integer class one
LargePositiveInteger - - anInteger  "Primitive. Subtract the argument from the receiver and answer with an Integer result. Fail if either the argument or the result is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 22> ^super – anInteger change limit in comment to 1073741824
LargePositiveInteger quo: quo: anInteger  "Primitive. Divide the receiver by the argument and return the result. Round the result down towards zero to make it a whole integer. Fail if the argument is 0. Fail if either the argument or the result is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 33> ^super quo: anInteger LdInstLong was renamed to LoadLong
LargePositiveInteger < < anInteger  "Primitive. Compare the receiver with the argument and answer true if the receiver is less than the argument. Otherwise answer false. Fail if the argument is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 23> ^super < anInteger change limit in comment to 1073741824
LargePositiveInteger * * anInteger  "Primitive. Multiply the receiver by the argument and answer with an Integer result. Fail if either the argument or the result is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive. " <primitive: 29> ^super * anInteger change limit in comment to 1073741824
LargePositiveInteger > > anInteger  "Primitive. Compare the receiver with the argument and answer true if the receiver is greater than the argument. Otherwise answer false. Fail if the argument is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 24> ^super > anInteger change limit in comment to 1073741824
LargePositiveInteger \\ \\ anInteger  "Primitive. Take the receiver modulo the argument. The result is the remainder rounded towards negative infinity, of the receiver divided by the argument. Fail if the argument is 0. Fail if either the argument or the result is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 31> ^super \\ anInteger change limit in comment to 1073741824
LargePositiveInteger / / anInteger  "Primitive. Divide the receiver by the argument and answer with the result if the division is exact. Fail if the result is not a whole integer. Fail if the argument is 0. Fail if either the argument or the result is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive. " <primitive: 30> ^super / anInteger change limit in comment to 1073741824
LargePositiveInteger >= >= anInteger  "Primitive. Compare the receiver with the argument and answer true if the receiver is greater than or equal to the argument. Otherwise answer false. Fail if the argument is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 26> ^super >= anInteger change limit in comment to 1073741824
LargePositiveInteger // // anInteger  "Primitive. Divide the receiver by the argument and return the result. Round the result down towards negative infinity to make it a whole integer. Fail if the argument is 0. Fail if either the argument or the result is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive. " <primitive: 32> ^super // anInteger change limit in comment to 1073741824
LargePositiveInteger + + anInteger  "Primitive. Add the receiver to the argument and answer with an Integer result. Fail if either the argument or the result is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 21> ^super + anInteger change limit in comment to 1073741824
LargePositiveInteger <= <= anInteger  "Primitive. Compare the receiver with the argument and answer true if the receiver is less than or equal to the argument. Otherwise answer false. Fail if the argument is not a SmallInteger or a LargePositiveInteger less than 65536. Optional. See Object documentation whatIsAPrimitive." <primitive: 25> ^super <= anInteger change limit in comment to 1073741824
LiteralNode emitForValue:on: emitForValue: stack on: strm code < 256 ifTrue: [strm nextPut: code] ifFalse: [self emitLong: LdInstLong on: strm]. stack push: 1 LdInstLong was renamed to LoadLong
MessageNode emitCase:on:value: emitCase: stack on: strm value: forValue | braceNode sizeStream thenSize elseSize | forValue not ifTrue: [^super emitForEffect: stack on: strm]. braceNode _ arguments first. sizeStream _ ReadStream on: sizes. receiver emitForValue: stack on: strm. braceNode casesForwardDo: [:keyNode :valueNode :last | thenSize _ sizeStream next. elseSize _ sizeStream next. last ifFalse: [strm nextPut: Dup. stack push: 1]. keyNode emitForEvaluatedValue: stack on: strm. equalNode emit: stack args: 1 on: strm. self emitBranchOn: false dist: thenSize pop: stack on: strm. valueNode emitForEvaluatedValue: stack on: strm. stack pop: 1. valueNode returns ifFalse: [self emitJump: elseSize on: strm]]. arguments size = 2 ifTrue: [arguments last emitForEvaluatedValue: stack on: strm] "otherwise: [...]" ifFalse: [NodeSelf emitForValue: stack on: strm. caseErrorNode emit: stack args: 0 on: strm] before emitForEvaluatedValue store Pop and do pop from stack if inst. variable 'last' is not true. Do pop after emit only if 'last' is true
MessageNode transformIfTrueIfFalse: transformIfTrueIfFalse: encoder ^ (self checkBlock: (arguments at: 1) as: 'True arg' from: encoder) and: [self checkBlock: (arguments at: 2) as: 'False arg' from: encoder] only changes in formating
MessageNode checkBlock:as:from: checkBlock: node as: nodeName from: encoder node canBeSpecialArgument ifTrue: [^node isMemberOf: BlockNode]. ((node isKindOf: BlockNode) and: [node numberOfArguments > 0]) ifTrue:[^encoder notify: '<- ', nodeName , ' of ' , (MacroSelectors at: special) , ' must be 0-argument block'] ifFalse: [^encoder notify: '<- ', nodeName , ' of ' , (MacroSelectors at: special) , ' must be a block or variable'] typo
MessageNode sizeCase:value: sizeCase: encoder value: forValue | braceNode sizeIndex thenSize elseSize | forValue not ifTrue: [^super sizeForEffect: encoder]. equalNode _ encoder encodeSelector: #=. braceNode _ arguments first. sizes _ Array new: 2 * braceNode numElements. sizeIndex _ sizes size. elseSize _ arguments size = 2 ifTrue: [arguments last sizeForEvaluatedValue: encoder] "otherwise: [...]" ifFalse: [caseErrorNode _ encoder encodeSelector: #caseError.  1 + (caseErrorNode size: encoder args: 0 super: false)]. "self caseError" braceNode casesReverseDo: [:keyNode :valueNode :last | sizes at: sizeIndex put: elseSize. thenSize _ valueNode sizeForEvaluatedValue: encoder. valueNode returns ifFalse: [thenSize _ thenSize + (self sizeJump: elseSize)]. sizes at: sizeIndex-1 put: thenSize. last ifFalse: [elseSize _ elseSize + 1]. "Dup" elseSize _ elseSize + (keyNode sizeForEvaluatedValue: encoder) + (equalNode size: encoder args: 1 super: false) + (self sizeBranchOn: false dist: thenSize) + thenSize. sizeIndex _ sizeIndex - 2]. ^(receiver sizeForValue: encoder) + elseSize then size must be increased if last is false
MessageNode transformIfNotNilIfNil:
MessageNode transformIfNilIfNotNil:
MessageNode sizeIfNil:value:
MessageNode ifNilReceiver accessor receiver
MessageNode sizeForValue: sizeForValue: encoder | arg total argSize | special > 0  ifTrue: [^self perform: (MacroSizers at: special) with: encoder with: true]. receiver == NodeSuper ifTrue: [selector _ selector copy "only necess for splOops"]. total _ selector size: encoder args: arguments size super: receiver == NodeSuper. receiver == nil  ifFalse: [total _ total + (receiver sizeForValue: encoder)]. sizes _ arguments collect:  [:arg |  argSize _ arg sizeForValue: encoder. total _ total + argSize. argSize]. ^total useless temporaries
done MessageNotUnderstood message: accessor
MethodContext hideFromDebugger
MethodDictionary rehash
MethodDictionary do:
MethodReference asStringOrText
Month class daysInMonth:forYear:
Month class nameOfMonth:
NaturalLanguageTranslator translate:
Notification isResumable
Number reciprocal reciprocal "Answer 1 divided by the receiver. Create an error notification if the  receiver is 0." self = 0 ifTrue: [^self error: 'zero has no reciprocal'] ifFalse: [^1 / self] use ZeroDivide instead of general error
Number days
Number milliSeconds
Number raisedToInteger: raisedToInteger: anInteger  "Answer the receiver raised to the power anInteger where the argument  must be a kind of Integer. This is a special case of raisedTo:." (anInteger isInteger) ifFalse: [^self error: 'raisedToInteger: only works for integral arguments']. anInteger = 0 ifTrue: [^1]. anInteger = 1 ifTrue: [^self]. anInteger > 1  ifTrue: [^(self * self raisedToInteger: anInteger // 2) * (self raisedToInteger: anInteger \\ 2)]. ^(self raisedToInteger: anInteger negated) reciprocal use ArithmeticError instead of general error use the class message 'one'
Number raisedTo: raisedTo: aNumber  "Answer the receiver raised to aNumber." (aNumber isInteger) ifTrue: ["Do the special case of integer power" ^self raisedToInteger: aNumber]. aNumber = 0 ifTrue: [^1]."Special case of exponent=0" aNumber = 1 ifTrue: [^self]."Special case of exponent=1" ^(aNumber * self ln) exp"Otherwise raise it to the power using logarithms" raise error if aNumber is less than 0 if you are 0, return self lot of other significant changes
Number / / aNumber  "Answer the result of dividing receiver by aNumber." self subclassResponsibility different comment only
Number isZero
Object shallowCopy shallowCopy "Answer a copy of the receiver which shares the receiver's instance  variables." | class newObject index | class _ self class. "I don't understand why the following check is here. Object is not  supposed to have any instances at all." class == Object ifTrue: [^self]. class isVariable ifTrue:  [index _ self basicSize. newObject _ class basicNew: index. [index > 0] whileTrue:  [newObject basicAt: index put: (self basicAt: index). index _ index - 1]] ifFalse: [newObject _ class basicNew]. index _ class instSize. [index > 0] whileTrue:  [newObject instVarAt: index put: (self instVarAt: index). index _ index - 1]. ^newObject primitive 148 remove useless Object class test
Object value
Object isFraction simple tester
Object error: error: aString  "The default behavior for error: is the same as halt:. The code is  replicated in order to avoid showing an extra level of message sending  in the Debugger. This additional message is the one a subclass should  override in order to change the error handling behavior." | currentProcesss currentProcess | (currentProcess _ ScheduledControllers activeControllerProcess) isErrorHandled ifTrue: [currentProcess errorHandler value: aString value: self] ifFalse: [DebuggerView openContext: thisContext label: aString contents: thisContext shortStack] "nil error: 'error message'." Error exception can be used
Object triggerEvent:with:
Object triggerEvent:withArguments:
Object hash hash "Primitive. Answer a SmallInteger whose value is half of the receiver's  object pointer (interpreting object pointers as 16-bit signed quantities).  Fails if the receiver is a SmallInteger. Essential. See Object  documentation whatIsAPrimitive." <primitive: 75> self primitiveFailed' use identity hash
Object clone
Object asString
Object when:evaluate:
OrderedCollection makeRoomAtLast makeRoomAtLast | index newLast delta | newLast _ self size. array size - self size = 0 ifTrue: [self grow]. (delta _ firstIndex - 1) = 0 ifTrue: [^ self]. "we might be here under false premises or grow did the job for us" 1 to: newLast do: [:index | array at: index put: (array at: index + delta). array at: index + delta put: nil]. firstIndex _ 1. lastIndex _ newLast useless temporary variable index
OrderedCollection copyReplaceFrom:to:with: copyReplaceFrom: start to: stop with: replacementCollection  "Answer a copy of the receiver with replacementCollection's elements in place of the receiver's start'th to stop'th elements. This does not expect a 1-1 map from replacementCollection to the start to stop elements, so it will do an insert or append." | newOrderedCollection delta newIndex index mySize startIndex stopIndex | "if start is less than 1, ignore stop and assume this is inserting at the front.  if start greater than self size, ignore stop and assume this is appending.  otherwise, it is replacing part of me and start and stop have to be within my  bounds. " delta _ 0. startIndex _ start. stopIndex _ stop. start < 1 ifTrue: [startIndex _ stopIndex _ 0] ifFalse: [startIndex > self size ifTrue: [startIndex _ stopIndex _ self size + 1] ifFalse:  [(stopIndex < (startIndex - 1) or: [stopIndex > self size]) ifTrue: [self errorOutOfBounds]. delta _ stopIndex - startIndex + 1]]. newOrderedCollection _  self species new: self size + replacementCollection size - delta. 1 to: startIndex - 1 do: [:index | newOrderedCollection add: (self at: index)]. 1 to: replacementCollection size do:  [:index | newOrderedCollection add: (replacementCollection at: index)]. stopIndex + 1 to: self size do: [:index | newOrderedCollection add: (self at: index)]. ^newOrderedCollection useless temporaries
ParseNode isUndefTemp
ParseNode nowHasRef
ParseNode nowHasDef
Parser primaryExpression primaryExpression hereType == #word ifTrue:  [parseNode _ self variable. ^true]. hereType == #leftBracket ifTrue:  [self advance. self blockExpression. ^true]. hereType == #leftBrace ifTrue:  [self braceExpression. ^true]. hereType == #leftParenthesis ifTrue:  [self advance. self expression ifFalse: [^self expected: 'expression']. (self match: #rightParenthesis) ifFalse: [^self expected: 'right parenthesis']. ^true]. (hereType == #string or: [hereType == #number or: [hereType == #literal]]) ifTrue:  [parseNode _ encoder encodeLiteral: self advance. ^true]. (here == #- and: [tokenType == #number]) ifTrue:  [self advance. parseNode _ encoder encodeLiteral: self advance negated. ^true]. ^false differnt #word processing
PositionableStream class on:
Preferences class duplicateControlAndAltKeys
Preferences class automaticKeyGeneration
Preferences class swapControlAndAltKeys
Preferences class ignoreStyleIfOnlyBold
Preferences class duplicateAllControlAndAltKeys
Preferences class startInUntrustedDirectory
Preferences class readDocumentAtStartup
Preferences class swapMouseButtons
Preferences class automaticPlatformSettings
Project printOn:
Quadrangle displayOn:transformation:clippingBox: displayOn: aDisplayMedium transformation: aWindowingTransformation clippingBox: aRectangle "Display the border and region of the receiver so that it is scaled and  translated with respect to aWindowingTransformation. The displayed  information should be clipped so that only information with the area  determined by aRectangle is displayed." | screenRectangle | screenRectangle _  (aWindowingTransformation applyTo: self) intersect: aRectangle. borderWidth ~~ 0 & (insideColor ~~ nil) ifTrue:  [aDisplayMedium fill: screenRectangle fillColor: Display black "borderColor". aDisplayMedium fill: (screenRectangle insetBy: borderWidth) fillColor: insideColor] use the class Color
Quadrangle initialize initialize "Initialize the region to a null Rectangle, the borderWidth to 1, the  borderColor to black, and the insideColor to white." origin _ 0 @ 0. corner _ 0 @ 0. borderWidth _ 1. borderColor _ Display black. insideColor _ Display white use the class Color
Quadrangle setRegion:borderWidth:borderColor:insideColor:
Quadrangle class region:borderWidth:borderColor:insideColor: region: aRectangle borderWidth: anInteger borderColor: aMask1 insideColor: aMask2 "Answer an instance of me with rectangle, border width and color, and  inside color determined by the arguments." ^super new region: aRectangle borderWidth: anInteger borderColor: aMask1 insideColor: aMask2 new accessor setRegion
Rectangle setOrigin:corner:
done RemoteString position accessor filePositionHi
RunArray mapValues:
ScaledDecimal scale
ScaledDecimal *
ScaledDecimal <
ScaledDecimal -
ScaledDecimal =
ScaledDecimal //
ScaledDecimal /
ScaledDecimal +
ScaledDecimal class newFromNumber:scale:
Scanner xDigit xDigit "Form a number." tokenType _ #number. (aheadChar = 30 asCharacter and: [source atEnd and: [source skip: -1. source next ~= 30 asCharacter]]) ifTrue: [source skip: -1 "Read off the end last time"] ifFalse: [source skip: -2]. token _ Number readFrom: source. self step; step while reading the Number use general error handling block. On error send #offEnd:. The result of error  processing is in 'token'
SelectorNode emit:args:on:super: emit: stack args: nArgs on: aStream super: supered | index | stack pop: nArgs. (supered not and: [code - Send < SendLimit and: [nArgs < 3]]) ifTrue:  ["short send" aStream nextPut:  (code < Send ifTrue: [code] ifFalse: ["special" nArgs * 16 + code])] ifFalse:  [index _ code < 256 ifTrue: [code - Send] ifFalse: [code \\ 256]. (index < 32 and: [nArgs <= 7]) ifTrue:  ["medium send" aStream nextPut: SendLong + (supered ifTrue: [2] ifFalse: [0]). aStream nextPut: nArgs * 32 + index] ifFalse:  ["long send" aStream nextPut: SendLong + 1 + (supered ifTrue: [2] ifFalse: [0]). aStream nextPut: nArgs. aStream nextPut: index]] many significant changes
SequenceableCollection @
SequenceableCollection after:ifAbsent:
Set class rehashAllSets
Set class new new ^ self new: 4 use size 5 and intance message initiailze:
SmallInteger bitShift: bitShift: arg  "Primitive. Answer an Integer whose value is the receiver's value shifted left by the number of bits indicated by the argument. Negative arguments shift right. Essential. See Object documentation whatIsAPrimitive." <primitive: 17> self < 0 ifTrue: [^ -1 - (-1-self bitShift: arg)]. ^ super bitShift: arg many significant changes
SmallInteger bitXor: bitXor: arg  "Primitive. Answer an Integer whose bits are the logical XOR of the receiver's bits and those of the argument, arg. Negative numbers are interpreted as a 32-bit 2's-complement. Essential. See Object documentation whatIsAPrimitive." <primitive: 16> self < 0 ifTrue: [^ 16rFFFFFFFF + (self+1) bitXor: arg]. ^arg bitXor: self use bit invert special case for zero
SmallInteger / / aNumber  "Primitive. This primitive (for /) divides the receiver by the argument and returns the result if the division is exact. Fail if the result is not a whole integer. Fail if the argument is 0 or is not a SmallInteger. Optional. No Lookup. See Object documentation whatIsAPrimitive." <primitive: 10> aNumber = 0 ifTrue: [^self error: 'division by 0']. (aNumber isMemberOf: SmallInteger) ifTrue: [^(Fraction numerator: self denominator: aNumber) reduced] ifFalse: [^super / aNumber] use ZeroDivide instead of general error
SmalltalkImage lastUpdateString
SortedCollection sort:to: sort: i to: j  "Sort elements i through j of self to be nondescending according to sortBlock." | di dij dj tt ij k l n | "The prefix d means the data at that index." (n _ j + 1 - i) <= 1 ifTrue: [^self]."Nothing to sort."   "Sort di,dj." di _ array at: i. dj _ array at: j. (sortBlock value: di value: dj) "i.e., should di precede dj?" ifFalse:  [array swap: i with: j.  tt _ di.  di _ dj.  dj _ tt]. n > 2 ifTrue: "More than two elements." [ij _ (i + j) // 2. "ij is the midpoint of i and j."  dij _ array at: ij. "Sort di,dij,dj. Make dij be their median."  (sortBlock value: di value: dij) "i.e. should di precede dij?"  ifTrue:  [(sortBlock value: dij value: dj) "i.e., should dij precede dj?"  ifFalse:  [array swap: j with: ij.  dij _ dj]]  ifFalse: "i.e. di should come after dij" [array swap: i with: ij.  dij _ di]. n > 3  ifTrue: "More than three elements." ["Find k>i and l<j such that dk,dij,dl are in reverse order. Swap k and l. Repeat this procedure until k and l pass each other."  k _ i.  l _ j.  [[l _ l - 1. k <= l and: [sortBlock value: dij value: (array at: l)]]  whileTrue. "i.e. while dl succeeds dij"  [k _ k + 1. k <= l and: [sortBlock value: (array at: k) value: dij]]  whileTrue. "i.e. while dij succeeds dk"  k <= l]  whileTrue: [array swap: k with: l].  "Now l<k (either 1 or 2 less), and di through dl are all less than or equal to dk through dj. Sort those two segments." self sort: i to: l. self sort: k to: j]] use should:precede:
SortedCollection should:precede:
StandardFileStream ensureOpen
StandardFileStream nextPut: nextPut: char "Put char on the receiver stream. 2/12/96 sw" buffer1 at: 1 put: char. self primWrite: fileID from: buffer1 startingAt: 1 count: 1. ^ char raise error if the file is not in the rwmode
StandardFileStream closed
done StandardFileStream name accessor name
SystemDictionary specialNargsAt:
SystemDictionary setMacFileInfoOn:
SystemDictionary specialSelectorAt: specialSelectorAt: anInteger  "Answer the special message selector stored at location anInteger in the  system dictionary." ^SpecialSelectors at: anInteger * 2 – 1 instead of SpecialSelectors use 24th item  of specialObjectsArray
SystemDictionary specialSelectorSize specialSelectorSize "Answer the number of special selectors in the system." ^SpecialSelectors size // 2 instead of SpecialSelectors use 24th item  of specialObjectsArray
done SystemVersion date accessor
done SystemVersion version accessor
SystemVersion class current
done TempVariableNode scope accessor
done TempVariableNode isArg accessor isAnArg
TempVariableNode nowHasRef
TempVariableNode isArg:
TempVariableNode isTemp simple tester
needs comment TempVariableNode scope: accessor
TempVariableNode isUndefTemp
TempVariableNode nowHasDef
Text addAttribute:from:to:
Text class string:attribute:
Text class string:attributes:
TextAttribute set
done TextColor color accessor
done TextColor color: accessor
TextColor class color:
TextEmphasis set
TextEmphasis emphasisCode
TextEmphasis emphasisCode:
TextEmphasis class italic
TextEmphasis class bold
TextEmphasis class normal
done TextFontChange fontNumber accessor
done TextFontChange fontNumber: accessor
TextFontChange class fontNumber:
TextStream withAttributes:do:
Time print24:showSeconds:on:
Time < < aTime  "Answer whether aTime is earlier than the receiver." hours ~= aTime hours ifTrue: [^hours < aTime hours]. minutes ~= aTime minutes ifTrue: [^minutes < aTime minutes]. ^seconds < aTime seconds compare durations
Time second ^ self print24: false on: aStream
Time minute
Time ticks:
Time asDuration
Time hour
Time seconds seconds "Answer the number of seconds the receiver represents." ^seconds use second
Time hour24
Time printOn: printOn: aStream different code
Time = = aTime  "Answer whether aTime represents the same second as the receiver." self species = aTime species ifTrue: [^hours = aTime hours  & (minutes = aTime minutes)  & (seconds = aTime seconds)] ifFalse: [^false] different code, compare ticks
Time class fromSeconds: fromSeconds: secondCount  "Answer an instnace of me that is secondCount number of seconds since midnight." | secondsInHour hours secs | secs _ secondCount asInteger. hours _ secs // 3600. secondsInHour _ secs \\ 3600. ^self new hours: hours  minutes: secondsInHour // 60  seconds: secondsInHour \\ 60 delegate to seconds: constructor
Time class seconds:
Time class seconds:nanoSeconds:
Time class dateAndTimeFromSeconds:
Time class dateAndTimeNow dateAndTimeNow "Answer a two-element Array of (Date today, Time now)." | secondCount d t | secondCount _ self primSecondsClock. d _ Date fromDays: secondCount // 86400. t _ Time fromSeconds: secondCount \\ 86400. ^ Array with: d with: t different code (use dateAndTimeFromSeconds:)
Timespan <
Timespan +
Timespan -
done Timespan start: accessor
done Timespan start accessor
Timespan duration:
Timespan class starting:duration:
done TimeZone abbreviation accessor
done TimeZone offset accessor
TimeZone printOn:
TranslucentColor privateAlpha
TranslucentColor hash
UnixFileDirectory class pathNameDelimiter
needs testcase WarpBlt cellSize: accessor
WarpBlt startFrom:to:offset:
WarpBlt sourceForm:destRect:
done WarpBlt cellSize accessor
WarpBlt copyQuad:toRect: copyQuad: pts toRect: aRectangle | fixedPt1 | sourceX _ sourceY _ 0. self destRect: aRectangle. fixedPt1 _ (pts at: 1) x isInteger ifTrue: [16384] ifFalse: [16384.0]. p1x _ ((pts at: 1) x * fixedPt1) asInteger. p2x _ ((pts at: 2) x * fixedPt1) asInteger. p3x _ ((pts at: 3) x * fixedPt1) asInteger. p4x _ ((pts at: 4) x * fixedPt1) asInteger. p1y _ ((pts at: 1) y * fixedPt1) asInteger. p2y _ ((pts at: 2) y * fixedPt1) asInteger. p3y _ ((pts at: 3) y * fixedPt1) asInteger. p4y _ ((pts at: 4) y * fixedPt1) asInteger. p1z _ p2z _ p3z _ p4z _ 16384. "z-warp ignored for now" self warpBits use sourceQuad:destRect:
WarpBlt deltaFrom:to:nSteps:
done ZeroDivide dividend: accessor

Nahoře