Ryan Macnak uploaded a new version of VMMaker to project VM Maker: http://source.squeak.org/VMMaker/VMMaker.oscog-rmacnak.1534.mcz
==================== Summary ====================
Name: VMMaker.oscog-rmacnak.1534 Author: rmacnak Time: 27 November 2015, 6:12:43.777 pm UUID: dbeb984f-191e-4919-94b7-ffb681765d32 Ancestors: VMMaker.oscog-rmacnak.1533
The receiver of initializeSpecificOpcodes:in: is not necessarily the defining class of its method argument.
=============== Diff against VMMaker.oscog-rmacnak.1533 ===============
Item was changed: ----- Method: CogAbstractInstruction class>>initializeSpecificOpcodes:in: (in category 'class initialization') ----- initializeSpecificOpcodes: opcodeSymbolSequence in: initializeMethod "Declare as class variables, the opcodes in opcodeSymbolSequence. Assign values to them from LastRTLOpcode on. Undeclare any obsolete class vars. The assumption is that initializeMethod defines all class vars + in the class. This method should be used by subclasses wishing to declare - in the class. This method should be used by subclasses wiching to declare their own specific opcodes." + | pool classVariablesDefinedInMethod | - | classVariablesDefinedInMethod | self assert: self ~~ CogAbstractInstruction. + pool := initializeMethod methodClass classPool. LastRTLCode ifNil: [CogRTLOpcodes initialize]. + classVariablesDefinedInMethod := (initializeMethod literals select: [:l| l isVariableBinding and: [pool includesKey: l key]]) collect: - classVariablesDefinedInMethod := (initializeMethod literals select: [:l| l isVariableBinding and: [classPool includesKey: l key]]) collect: [:ea| ea key]. "Undeclare any class var not defined in opcodeSymbolSequence or by the method." + (pool keys reject: [:k| (opcodeSymbolSequence includes: k) or: [classVariablesDefinedInMethod includes: k]]) do: - (classPool keys reject: [:k| (opcodeSymbolSequence includes: k) or: [classVariablesDefinedInMethod includes: k]]) do: [:k| + Undeclared declare: k from: pool]. - Undeclared declare: k from: classPool]. "Declare opcodeSymbolSequence's elements from LastRTLCode on up." opcodeSymbolSequence withIndexDo: [:classVarName :value| + pool - self classPool declare: classVarName from: Undeclared; at: classVarName put: value + LastRTLCode - 1]!
vm-dev@lists.squeakfoundation.org