[Vm-dev] VM Maker: VMMaker-dtl.256.mcz

commits at source.squeak.org commits at source.squeak.org
Sun Oct 16 15:05:28 UTC 2011


David T. Lewis uploaded a new version of VMMaker to project VM Maker:
http://source.squeak.org/VMMaker/VMMaker-dtl.256.mcz

==================== Summary ====================

Name: VMMaker-dtl.256
Author: dtl
Time: 16 October 2011, 11:04:41.732 am
UUID: 4d8d78f4-a9f1-419b-a8ab-cb392e067016
Ancestors: VMMaker-dtl.255

VMMaker 4.7.13

Add Eliot's primitiveNotIdentical as primitive 169

=============== Diff against VMMaker-dtl.255 ===============

Item was changed:
  ----- Method: Interpreter class>>initializePrimitiveTable (in category 'initialization') -----
  initializePrimitiveTable 
  	"This table generates a C function address table use in primitiveResponse along with dispatchFunctionPointerOn:in:"
  
  	"NOTE: The real limit here is 2047 because of the method header layout but there is no point in going over the needed size"
  	MaxPrimitiveIndex := 575.
  	PrimitiveTable := Array new: MaxPrimitiveIndex + 1.
  	self table: PrimitiveTable from: 
  	#(	"Integer Primitives (0-19)"
  		(0 primitiveFail)
  		(1 primitiveAdd)
  		(2 primitiveSubtract)
  		(3 primitiveLessThan)
  		(4 primitiveGreaterThan)
  		(5 primitiveLessOrEqual)
  		(6 primitiveGreaterOrEqual)
  		(7 primitiveEqual)
  		(8 primitiveNotEqual)
  		(9 primitiveMultiply)
  		(10 primitiveDivide)
  		(11 primitiveMod)
  		(12 primitiveDiv)
  		(13 primitiveQuo)
  		(14 primitiveBitAnd)
  		(15 primitiveBitOr)
  		(16 primitiveBitXor)
  		(17 primitiveBitShift)
  		(18 primitiveMakePoint)
  		(19 primitiveFail)					"Guard primitive for simulation -- *must* fail"
  
  		"LargeInteger Primitives (20-39)"
  		(20 primitiveFail)
  		(21 primitiveAddLargeIntegers)
  		(22 primitiveSubtractLargeIntegers)
  		(23 primitiveLessThanLargeIntegers)
  		(24 primitiveGreaterThanLargeIntegers)
  		(25 primitiveLessOrEqualLargeIntegers)
  		(26 primitiveGreaterOrEqualLargeIntegers)
  		(27 primitiveEqualLargeIntegers)
  		(28 primitiveNotEqualLargeIntegers)
  		(29 primitiveMultiplyLargeIntegers)
  		(30 primitiveDivideLargeIntegers)
  		(31 primitiveModLargeIntegers)
  		(32 primitiveDivLargeIntegers)
  		(33 primitiveQuoLargeIntegers)
  		(34 primitiveBitAndLargeIntegers)
  		(35 primitiveBitOrLargeIntegers)
  		(36 primitiveBitXorLargeIntegers)
  		(37 primitiveBitShiftLargeIntegers)
  		(38 primitiveFail)
  		(39 primitiveFail)
  
  		"Float Primitives (40-59)"
  		(40 primitiveAsFloat)
  		(41 primitiveFloatAdd)
  		(42 primitiveFloatSubtract)
  		(43 primitiveFloatLessThan)
  		(44 primitiveFloatGreaterThan)
  		(45 primitiveFloatLessOrEqual)
  		(46 primitiveFloatGreaterOrEqual)
  		(47 primitiveFloatEqual)
  		(48 primitiveFloatNotEqual)
  		(49 primitiveFloatMultiply)
  		(50 primitiveFloatDivide)
  		(51 primitiveTruncated)
  		(52 primitiveFractionalPart)
  		(53 primitiveExponent)
  		(54 primitiveTimesTwoPower)
  		(55 primitiveSquareRoot)
  		(56 primitiveSine)
  		(57 primitiveArctan)
  		(58 primitiveLogN)
  		(59 primitiveExp)
  
  		"Subscript and Stream Primitives (60-67)"
  		(60 primitiveAt)
  		(61 primitiveAtPut)
  		(62 primitiveSize)
  		(63 primitiveStringAt)
  		(64 primitiveStringAtPut)
  		(65 primitiveFail) "was primitiveNext which no longer pays its way (normal Smalltalk code is faster)"
  		(66 primitiveFail) "was primitiveNextPut which no longer pays its way (normal Smalltalk code is faster)"
  		(67 primitiveFail) "was primitiveAtEnd which no longer pays its way (normal Smalltalk code is faster)"
  
  		"StorageManagement Primitives (68-79)"
  		(68 primitiveObjectAt)
  		(69 primitiveObjectAtPut)
  		(70 primitiveNew)
  		(71 primitiveNewWithArg)
  		(72 primitiveArrayBecomeOneWay)	"Blue Book: primitiveBecome"
  		(73 primitiveInstVarAt)
  		(74 primitiveInstVarAtPut)
  		(75 primitiveAsOop)
  		(76 primitiveStoreStackp)					"Blue Book: primitiveAsObject"
  		(77 primitiveSomeInstance)
  		(78 primitiveNextInstance)
  		(79 primitiveNewMethod)
  
  		"Control Primitives (80-89)"
  		(80 primitiveBlockCopy)
  		(81 primitiveValue)
  		(82 primitiveValueWithArgs)
  		(83 primitivePerform)
  		(84 primitivePerformWithArgs)
  		(85 primitiveSignal)
  		(86 primitiveWait)
  		(87 primitiveResume)
  		(88 primitiveSuspend)
  		(89 primitiveFlushCache)
  
  		"Input/Output Primitives (90-109)"
  		(90 primitiveMousePoint)
  		(91 primitiveTestDisplayDepth)			"Blue Book: primitiveCursorLocPut"
  		(92 primitiveSetDisplayMode)				"Blue Book: primitiveCursorLink"
  		(93 primitiveInputSemaphore)
  		(94 primitiveGetNextEvent)				"Blue Book: primitiveSampleInterval"
  		(95 primitiveInputWord)
  		(96 primitiveFail)	"primitiveCopyBits"
  		(97 primitiveSnapshot)
  		(98 primitiveStoreImageSegment)
  		(99 primitiveLoadImageSegment)
  		(100 primitivePerformInSuperclass)		"Blue Book: primitiveSignalAtTick"
  		(101 primitiveBeCursor)
  		(102 primitiveBeDisplay)
  		(103 primitiveScanCharacters)
  		(104 primitiveFail)	"primitiveDrawLoop"
  		(105 primitiveStringReplace)
  		(106 primitiveScreenSize)
  		(107 primitiveMouseButtons)
  		(108 primitiveKbdNext)
  		(109 primitiveKbdPeek)
  
  		"System Primitives (110-119)"
  		(110 primitiveEquivalent)
  		(111 primitiveClass)
  		(112 primitiveBytesLeft)
  		(113 primitiveQuit)
  		(114 primitiveExitToDebugger)
  		(115 primitiveChangeClass)					"Blue Book: primitiveOopsLeft"
  		(116 primitiveFlushCacheByMethod)
  		(117 primitiveExternalCall)
  		(118 primitiveDoPrimitiveWithArgs)
  		(119 primitiveFlushCacheSelective)
  			"Squeak 2.2 and earlier use 119.  Squeak 2.3 and later use 116.
  			Both are supported for backward compatibility."
  
  		"Miscellaneous Primitives (120-127)"
  		(120 primitiveCalloutToFFI)
  		(121 primitiveImageName)
  		(122 primitiveNoop)					"Blue Book: primitiveImageVolume"
  		(123 primitiveValueUninterruptably)	"@@@: Remove this when all VMs have support"
  		(124 primitiveLowSpaceSemaphore)
  		(125 primitiveSignalAtBytesLeft)
  
  		"Squeak Primitives Start Here"
  
  		"Squeak Miscellaneous Primitives (128-149)"
  		(126 primitiveDeferDisplayUpdates)
  		(127 primitiveShowDisplayRect)
  		(128 primitiveArrayBecome)
  		(129 primitiveSpecialObjectsOop)
  		(130 primitiveFullGC)
  		(131 primitiveIncrementalGC)
  		(132 primitiveObjectPointsTo)
  		(133 primitiveSetInterruptKey)
  		(134 primitiveInterruptSemaphore)
  		(135 primitiveMillisecondClock)
  		(136 primitiveSignalAtMilliseconds)
  		(137 primitiveSecondsClock)
  		(138 primitiveSomeObject)
  		(139 primitiveNextObject)
  		(140 primitiveBeep)
  		(141 primitiveClipboardText)
  		(142 primitiveVMPath)
  		(143 primitiveShortAt)
  		(144 primitiveShortAtPut)
  		(145 primitiveConstantFill)
  		"NOTE: When removing the obsolete indexed primitives,
  		the following two should go become #primitiveIntegerAt / atPut"
  		(146 primitiveFail)	"primitiveReadJoystick"
  		(147 primitiveFail)	"primitiveWarpBits"
  		(148 primitiveClone)
  		(149 primitiveGetAttribute)
  
  		"File Primitives (150-169) - NO LONGER INDEXED"
  		(150 159 primitiveFail)
  		(160 primitiveAdoptInstance)
  		(161 164 primitiveFail)
  		(165 primitiveIntegerAt)		"hacked in here for now"
  		(166 primitiveIntegerAtPut)
  		(167 primitiveYield)
  		(168 primitiveCopyObject)
+ 		(169 primitiveNotIdentical)
- 		(169 primitiveFail)
  
  		"Sound Primitives (170-199) - NO LONGER INDEXED"
  		(170 185 primitiveFail)
  
  		"Old closure primitives"
  		(186 primitiveFail) "was primitiveClosureValue"
  		(187 primitiveFail) "was primitiveClosureValueWithArgs"
  
  		"Perform method directly"
  		(188 primitiveExecuteMethodArgsArray)
  		(189 primitiveExecuteMethod)
  
  		"Sound Primitives (continued) - NO LONGER INDEXED"
  		(190 194 primitiveFail)
  
  		"Unwind primitives"
  		(195 primitiveFindNextUnwindContext)
  		(196 primitiveTerminateTo)
  		(197 primitiveFindHandlerContext)
  		(198 primitiveMarkUnwindMethod)
  		(199 primitiveMarkHandlerMethod)
  
  		"new closure primitives (were Networking primitives)"
  		(200 primitiveClosureCopyWithCopiedValues)
  		(201 primitiveClosureValue) "value"
  		(202 primitiveClosureValue) "value:"
  		(203 primitiveClosureValue) "value:value:"
  		(204 primitiveClosureValue) "value:value:value:"
  		(205 primitiveClosureValue) "value:value:value:value:"
  		(206 primitiveClosureValueWithArgs) "valueWithArguments:"
  
  		(207 209 primitiveFail) "reserved for Cog primitives"
  
  		(210 primitiveAt)		"Compatibility with Cog StackInterpreter Context primitives"
  		(211 primitiveAtPut)	"Compatibility with Cog StackInterpreter Context primitives"
  		(212 primitiveSize)	"Compatibility with Cog StackInterpreter Context primitives"
  		(213 219 primitiveFail) "reserved for Cog primitives"
  
  		(220 primitiveFail)		"reserved for Cog primitives"
  
  		(221 primitiveClosureValueNoContextSwitch) "valueNoContextSwitch"
  		(222 primitiveClosureValueNoContextSwitch) "valueNoContextSwitch:"
  
  		(223 229 primitiveFail)	"reserved for Cog primitives"
  
  		(230 primitiveRelinquishProcessor)
  		(231 primitiveForceDisplayUpdate)
  		(232 primitiveFormPrint)
  		(233 primitiveSetFullScreen)
  		(234 primitiveFail) "primBitmapdecompressfromByteArrayat"
  		(235 primitiveFail) "primStringcomparewithcollated"
  		(236 primitiveFail) "primSampledSoundconvert8bitSignedFromto16Bit"
  		(237 primitiveFail) "primBitmapcompresstoByteArray"
  		(238 241 primitiveFail) "serial port primitives"
  		(242 primitiveFail)
  		(243 primitiveFail) "primStringtranslatefromtotable"
  		(244 primitiveFail) "primStringfindFirstInStringinSetstartingAt"
  		(245 primitiveFail) "primStringindexOfAsciiinStringstartingAt"
  		(246 primitiveFail) "primStringfindSubstringinstartingAtmatchTable"
  		(247 primitiveSnapshotEmbedded)
  		(248 primitiveInvokeObjectAsMethod)
  		(249 primitiveArrayBecomeOneWayCopyHash)
  
  		"VM Implementor Primitives (250-255)"
  		(250 clearProfile)
  		(251 dumpProfile)
  		(252 startProfiling)
  		(253 stopProfiling)
  		(254 primitiveVMParameter)
  		(255 primitiveInstVarsPutFromStack) "Never used except in Disney tests.  Remove after 2.3 release."
  
  		"Quick Push Const Methods"
  		(256 primitivePushSelf)
  		(257 primitivePushTrue)
  		(258 primitivePushFalse)
  		(259 primitivePushNil)
  		(260 primitivePushMinusOne)
  		(261 primitivePushZero)
  		(262 primitivePushOne)
  		(263 primitivePushTwo)
  
  		"Quick Push Const Methods"
  		(264 519 primitiveLoadInstVar)
  
  		"These ranges used to be used by obsiolete indexed primitives."
  		(520 529 primitiveFail)
  		(530 539 primitiveFail)
  		(540 549 primitiveFail)
  		(550 559 primitiveFail)
  		(560 569 primitiveFail)
  
  		"External primitive support primitives"
  		(570 primitiveFlushExternalPrimitives)
  		(571 primitiveUnloadModule)
  		(572 primitiveListBuiltinModule)
  		(573 primitiveListExternalModule)
  		(574 primitiveFail) "reserved for addl. external support prims"
  
  		"Unassigned Primitives"
  		(575 primitiveFail)).
  !

Item was added:
+ ----- Method: Interpreter>>pop:thenPushBool: (in category 'contexts') -----
+ pop: nItems thenPushBool: trueOrFalse
+ 	"A few places pop a few items off the stack and then push a boolean. Make it convenient"
+ 	| sp |
+ 	self longAt: (sp := stackPointer - ((nItems - 1) * self bytesPerWord))
+ 		put:(trueOrFalse ifTrue: [trueObj] ifFalse: [falseObj]).
+ 	stackPointer := sp!

Item was added:
+ ----- Method: InterpreterPrimitives>>primitiveNotIdentical (in category 'object access primitives') -----
+ primitiveNotIdentical
+ 	"is the receiver/first argument not the same object as the (last) argument?.
+ 	 pop argumentCount because this can be used as a mirror primitive."
+ 	| thisObject otherObject |
+ 	otherObject := self stackValue: 1.
+ 	thisObject := self stackTop.
+ 	self pop: argumentCount + 1 thenPushBool: thisObject ~= otherObject!

Item was changed:
  ----- Method: VMMaker class>>versionString (in category 'version testing') -----
  versionString
  
  	"VMMaker versionString"
  
+ 	^'4.7.13'!
- 	^'4.7.12'!



More information about the Vm-dev mailing list