[Vm-dev] [Cog] Problems with generating code (initialization of options)

Igor Stasenko siguctua at gmail.com
Wed Jun 29 13:42:11 UTC 2011


There are a bit mess with newly introduced generation options.

Here the problem:

generateCogitFile
	"Translate the Smalltalk description of the virtual machine into C.
If 'self doInlining' is true, small method bodies are inlined to
reduce procedure call overhead.  On the PPC, this results in a factor
of three speedup with only 30% increase in code size.  Subclasses can
use specialised versions of CCodeGenerator and interpreterClass."

	| cg cogitClass |
	self interpreterClass needsCogit ifFalse: [^nil].
	self needsToRegenerateCogitFile ifFalse: [^nil].
	cg := [self buildCodeGeneratorForCogit]


The options are initialized first in
#buildCodeGeneratorForCogit

but before that, in method #needsToRegenerateCogitFile it leads to call in:

ancilliaryStructClasses
	ProcessorClass ifNil: [thisContext methodClass theNonMetaClass initialize].
	^{	CogAbstractInstruction.
		ProcessorClass basicNew abstractInstructionCompilerClass.
    ...

here ProcessorClass class var is still nil, because its not yet initialized.
it is initialized only if you send #initializeWithOptions: to cogit class


-- 
Best regards,
Igor Stasenko AKA sig.


More information about the Vm-dev mailing list