def setheader(self, header): #(index 0) 9 bits: main part of primitive number (#primitive) #(index 9) 8 bits: number of literals (#numLiterals) #(index 17) 1 bit: whether a large frame size is needed (#frameSize) #(index 18) 6 bits: number of temporary variables (#numTemps) #(index 24) 4 bits: number of arguments to the method (#numArgs) #(index 28) 1 bit: high-bit of primitive number (#primitive) #(index 29) 1 bit: flag bit, ignored by the VM (#flag) primitive, literalsize, islarge, tempsize, numargs, highbit = ( splitter[9,8,1,6,4,1](header)) primitive = primitive + (highbit << 10) ##XXX todo, check this self.literalsize = literalsize self.literals = [w_nil] * self.literalsize self.header = header self.argsize = numargs self.tempsize = tempsize self.primitive = primitive self.w_compiledin = None