mirror of
https://github.com/Mercury-Language/mercury.git
synced 2026-04-16 18:03:36 +00:00
Estimated hours taken: 2 More cleanup of the bytecode stuff; in particular, add a `MB_' prefix to most names. bytecode/*: - Prefix all names defined in header files with `MB_' (except for `TRUE', `FALSE', `DEBUGGING', and `XXXdebug'). - Add macros `MB_new', `MB_new_array', and `MB_resize_array', and use those instead of using `MB_malloc' and `MB_resize' (formerly `mem_malloc' and `mem_resize') or malloc() and realloc() directly. Uncomment the definition of MB_strdup() now that it calls MB_malloc(). - Delete the definitions of `uchar', `uint', `ushort', `ulong' (just spell them out, its clearer and more portable that way). - Fix the indentation in a few places I missed on my previous pass. - Add a `README' file.
58 lines
1.5 KiB
C
58 lines
1.5 KiB
C
|
|
/*
|
|
** Copyright (C) 1997 University of Melbourne.
|
|
** This file may only be copied under the terms of the GNU Library General
|
|
** Public License - see the file COPYING.LIB in the Mercury distribution.
|
|
**
|
|
** $Id: static_data.h,v 1.5 1997-04-26 05:57:07 fjh Exp $
|
|
*/
|
|
|
|
|
|
#ifndef MB_STATIC_DATA_H
|
|
#define MB_STATIC_DATA_H
|
|
|
|
/*
|
|
* XXX: We should also have:
|
|
* - Strings area to store all embedded strings
|
|
* in the byte stream. This should have appropriate
|
|
* connections to the code area, stack and heap so we
|
|
* can, for instance, look up predicate names from
|
|
* the code area, and lookup constructor names from
|
|
* the heap.
|
|
*/
|
|
|
|
/*
|
|
* XXX: We have an arbitrary maximum size for the table
|
|
* of labels in a module. This is not good.
|
|
*/
|
|
#define MB_MAX_LABELS 1000
|
|
|
|
typedef struct MB_Label_table_struct {
|
|
MB_Address labels[MB_MAX_LABELS]; /* array : label -> address */
|
|
short max_label;
|
|
} MB_Label_table;
|
|
|
|
typedef struct MB_Proc_info_struct {
|
|
MB_Byte proc_id;
|
|
MB_Determinism det;
|
|
short label_count;
|
|
short temp_count;
|
|
MB_CString *var_infos; /* Use as an array of MB_CStrings */
|
|
short var_count;
|
|
MB_Address proc_entry;
|
|
} MB_Proc_info;
|
|
|
|
typedef struct MB_Pred_info_struct {
|
|
MB_CString pred_name;
|
|
short proc_count;
|
|
MB_Proc_info *proc_tab; /* Use as an array of MB_Proc_infos */
|
|
} MB_Pred_info;
|
|
|
|
typedef struct MB_Module_Info_struct {
|
|
MB_Label_table label_tab;
|
|
MB_Pred_info *pred_tab; /* an array of MB_Pred_infos */
|
|
MB_Address module_entry;
|
|
} MB_Module_Info;
|
|
|
|
#endif /* MB_STATIC_DATA_H */
|