| 1234567891011121314151617181920212223242526272829303132333435363738394041424344 |
- Blitz Basic internals.
- * Language
- Declarations:
- 4 types: Newtype, Function, Var, Array
- Forward referencing for NewTypes and Functions is allowed.
- Array declarations are through Dim statement.
- Var declarations are through Var statement or params.
- Only Var declarations may appear in functions.
- * Runtime
- Newtype objects in BB look like this:
- struct BBObj{
- BBObj *curr;
- int ref_cnt;
- BBObj *next,BBObj *prev;
- };
- When an object is 'used' (for field access or in an expression), it's
- curr field should be fetched.
- When an object is assigned, prev obj refcnt is decremented, new refcnt
- is incremented.
- The curr field is 0 if the object has been deleted.
- All objects exist in a type list:
- struct BBType{
- int obj_size
- BBObj usedList,freeList;
- };
- An object stays in it's type list as long as it's ref_cnt is >0.
|