1 Bootstrapping an initial image is a tricky process, a real chicken-and-egg
7 1.) Design Object Memory (Mostly Done)
12 Create C interfaces to some Smalltalk classes. These are needed for bootstrapping
13 an initial image. For example, we need to manipulate method dictionaries at the
14 C level in order to initialize class objects.
30 Allocate important Smalltalk objects, which are only half-initialized at this
31 point. Set up rather complicated Class/Superclass/Metaclass hierarchy. Set
32 the instance size for each class.
58 Smalltalk (SystemDictionary)
60 Basic Class/Metaclass hierarchy:
62 Instance Class Metaclass
63 -------------------------------------------------------------
65 Object nil Object class
66 Behaviour Object Behaviour class
67 ClassDescription Behaviour ClassDescription class
68 Metaclass ClassDescription Metaclass class
69 Class ClassDescription Class class
73 Write a bootstrap lexer (Done) and parser in C. test lexer and parser as much as possible.
77 Parse class descriptions, and properly initialize the class objects which were
78 allocated previously. This includes setting up the complicated Metaclass hierarchy.
80 Parse methods and add them to the class methodDictionaries.
84 Write a simple and minimal interpreter just for evaluating "3 + 4"
88 Testing! The Big Moment!
90 Does "3 + 4" actually evaluate without a crash? Does the result equal "7"?
92 After improving interpreter, do more complex tests
96 Write heap out to an image file.
98 Ensure image loads correctly and that the tests in (6) pass.
102 Refactor Bootstrapping process. Consider whether to keep bootstrapping code or not.
106 Done! Now finish interpreter