| /* Definitions for compiled intermediate code */ |
| |
| |
| /* An intermediate code fragment contains: |
| - a string that encodes the instructions, |
| - a list of the constants, |
| - and a list of the names used. */ |
| |
| typedef struct { |
| OB_HEAD |
| stringobject *co_code; /* instruction opcodes */ |
| object *co_consts; /* list of immutable constant objects */ |
| object *co_names; /* list of stringobjects */ |
| object *co_filename; /* string */ |
| } codeobject; |
| |
| extern typeobject Codetype; |
| |
| #define is_codeobject(op) ((op)->ob_type == &Codetype) |
| |
| |
| /* Public interface */ |
| codeobject *compile PROTO((struct _node *, char *)); |