diff options
author | Rickard Green <[email protected]> | 2019-04-18 17:41:24 +0200 |
---|---|---|
committer | Rickard Green <[email protected]> | 2019-04-18 17:41:24 +0200 |
commit | e6a69b021bc2aee6aca42bd72583a96d06f4ba9d (patch) | |
tree | 40f44a59587006bd0999a5688674d5d7627f4f8e /erts/emulator/beam/external.h | |
parent | d0d4f2be1ebfe8293a627531b65819e85482c1d9 (diff) | |
parent | f2671c2ef47f8c49cd5fab6e1737ed08d99ea5d2 (diff) | |
download | otp-e6a69b021bc2aee6aca42bd72583a96d06f4ba9d.tar.gz otp-e6a69b021bc2aee6aca42bd72583a96d06f4ba9d.tar.bz2 otp-e6a69b021bc2aee6aca42bd72583a96d06f4ba9d.zip |
Merge branch 'rickard/dist-system-limit/OTP-15708'
* rickard/dist-system-limit/OTP-15708:
Fail when we cannot encode term in binary
Diffstat (limited to 'erts/emulator/beam/external.h')
-rw-r--r-- | erts/emulator/beam/external.h | 15 |
1 files changed, 11 insertions, 4 deletions
diff --git a/erts/emulator/beam/external.h b/erts/emulator/beam/external.h index f2cc9bf98f..b556c9076c 100644 --- a/erts/emulator/beam/external.h +++ b/erts/emulator/beam/external.h @@ -164,14 +164,21 @@ byte *erts_encode_ext_dist_header_setup(byte *, ErtsAtomCacheMap *, Uint, Eterm) byte *erts_encode_ext_dist_header_fragment(byte **, Uint, Eterm); Sint erts_encode_ext_dist_header_finalize(ErtsDistOutputBuf*, DistEntry *, Uint32 dflags, Sint reds); struct erts_dsig_send_context; -int erts_encode_dist_ext_size(Eterm, Uint32, ErtsAtomCacheMap*, Uint* szp); -int erts_encode_dist_ext_size_int(Eterm term, struct erts_dsig_send_context* ctx, Uint* szp); + +typedef enum { + ERTS_EXT_SZ_OK, + ERTS_EXT_SZ_YIELD, + ERTS_EXT_SZ_SYSTEM_LIMIT +} ErtsExtSzRes; + +ErtsExtSzRes erts_encode_dist_ext_size(Eterm, Uint32, ErtsAtomCacheMap*, Uint* szp); +ErtsExtSzRes erts_encode_dist_ext_size_ctx(Eterm term, struct erts_dsig_send_context* ctx, Uint* szp); struct TTBEncodeContext_; int erts_encode_dist_ext(Eterm, byte **, Uint32, ErtsAtomCacheMap *, struct TTBEncodeContext_ *, Sint* reds); -Uint erts_encode_ext_size(Eterm); -Uint erts_encode_ext_size_2(Eterm, unsigned); +ErtsExtSzRes erts_encode_ext_size(Eterm, Uint *szp); +ErtsExtSzRes erts_encode_ext_size_2(Eterm, unsigned, Uint *szp); Uint erts_encode_ext_size_ets(Eterm); void erts_encode_ext(Eterm, byte **); byte* erts_encode_ext_ets(Eterm, byte *, struct erl_off_heap_header** ext_off_heap); |