diff options
author | Lukas Larsson <[email protected]> | 2016-06-27 20:18:22 +0200 |
---|---|---|
committer | Lukas Larsson <[email protected]> | 2016-10-12 15:39:38 +0200 |
commit | 855b3a9be724ffd3c9f7e311cf9d810099fa36ef (patch) | |
tree | f54a4e6ae4c00f0dd752f48d9dc99fad46c11faf /erts/emulator/beam/error.h | |
parent | fad45d54881152eea14e84a88eb7fbaa0ba0329b (diff) | |
download | otp-855b3a9be724ffd3c9f7e311cf9d810099fa36ef.tar.gz otp-855b3a9be724ffd3c9f7e311cf9d810099fa36ef.tar.bz2 otp-855b3a9be724ffd3c9f7e311cf9d810099fa36ef.zip |
erts: Refactor out func_info into struct
This commit adds two new structs to be used to represent
erlang code in erts.
ErtsCodeInfo is used to describe the i_func_info header
that is part of all Export entries and the prelude of
each function. This replaces all the BeamInstr * that
were previously used to point to these locations.
After this change the code should never use BeamInstr *
with offsets to figure out different parts of the
func_info header.
ErtsCodeMFA is a struct that is used to descripe a
MFA in code. It is used within ErtsCodeInfo and also
in Process->current.
All function that previously took Eterm * or BeamInstr *
to identify a MFA now use the ErtsCodeMFA or ErtsCodeInfo
where appropriate.
The code has been tested to work when adding a new field to the
ErtsCodeInfo struct, but some updates are needed in ops.tab to
make it work.
Diffstat (limited to 'erts/emulator/beam/error.h')
-rw-r--r-- | erts/emulator/beam/error.h | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/erts/emulator/beam/error.h b/erts/emulator/beam/error.h index 6c33b12dd0..e431c3051b 100644 --- a/erts/emulator/beam/error.h +++ b/erts/emulator/beam/error.h @@ -21,6 +21,8 @@ #ifndef __ERROR_H__ #define __ERROR_H__ +#include "code_ix.h" + /* * There are three primary exception classes: * @@ -197,7 +199,7 @@ struct StackTrace { Eterm header; /* bignum header - must be first in struct */ Eterm freason; /* original exception reason is saved in the struct */ BeamInstr* pc; - BeamInstr* current; + ErtsCodeMFA* current; int depth; /* number of saved pointers in trace[] */ BeamInstr *trace[1]; /* varying size - must be last in struct */ }; |