You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@couchdb.apache.org by va...@apache.org on 2026/04/25 16:22:36 UTC
(couchdb-jiffy) 07/09: Remove dead yielding code
This is an automated email from the ASF dual-hosted git repository.
nickva pushed a commit to tag 2.0.0
in repository https://gitbox.apache.org/repos/asf/couchdb-jiffy.git
commit 62c80e72268411ce83cb87c6a839ea5ec249208c
Author: Nick Vatamaniuc <va...@gmail.com>
AuthorDate: Fri Apr 24 00:10:05 2026 -0400
Remove dead yielding code
Looking at scheduling and yielding noticed we had a whole bunch of dead code
hanging around. Nothing calls iterator code in Erlang any longer, all our
scheduling is done in C now.
On one hand it's a bit silly to keep the functions named `_init` but, on the
other hand, I think it kind of makes sense, since they are still following init
+ iter pattern, just that the iteration continues in C.
---
c_src/jiffy.c | 6 +-----
c_src/jiffy.h | 1 -
src/jiffy.erl | 45 ---------------------------------------------
3 files changed, 1 insertion(+), 51 deletions(-)
diff --git a/c_src/jiffy.c b/c_src/jiffy.c
index 46cbce7..debdab9 100644
--- a/c_src/jiffy.c
+++ b/c_src/jiffy.c
@@ -34,7 +34,6 @@ load(ErlNifEnv* env, void** priv, ERL_NIF_TERM info)
st->atom_uescape = make_atom(env, "uescape");
st->atom_pretty = make_atom(env, "pretty");
st->atom_force_utf8 = make_atom(env, "force_utf8");
- st->atom_iter = make_atom(env, "iter");
st->atom_bytes_per_iter = make_atom(env, "bytes_per_iter");
st->atom_bytes_per_red = make_atom(env, "bytes_per_red");
st->atom_return_maps = make_atom(env, "return_maps");
@@ -89,13 +88,10 @@ unload(ErlNifEnv* env, void* priv)
// {name, arity, fptr, dirty_flag}
// dirty flag: 0 (default) | ERL_NIF_DIRTY_JOB_{IO|CPU}_BOUND
-//
static ErlNifFunc funcs[] =
{
{"nif_decode_init", 2, decode_init, 0},
- {"nif_decode_iter", 5, decode_iter, 0},
- {"nif_encode_init", 2, encode_init, 0},
- {"nif_encode_iter", 3, encode_iter, 0}
+ {"nif_encode_init", 2, encode_init, 0}
};
ERL_NIF_INIT(jiffy, funcs, &load, NULL, &upgrade, &unload);
diff --git a/c_src/jiffy.h b/c_src/jiffy.h
index 7012dad..9547016 100644
--- a/c_src/jiffy.h
+++ b/c_src/jiffy.h
@@ -44,7 +44,6 @@ typedef struct {
ERL_NIF_TERM atom_uescape;
ERL_NIF_TERM atom_pretty;
ERL_NIF_TERM atom_force_utf8;
- ERL_NIF_TERM atom_iter;
ERL_NIF_TERM atom_bytes_per_iter;
ERL_NIF_TERM atom_bytes_per_red;
ERL_NIF_TERM atom_return_maps;
diff --git a/src/jiffy.erl b/src/jiffy.erl
index 5313e5a..6860faf 100644
--- a/src/jiffy.erl
+++ b/src/jiffy.erl
@@ -63,8 +63,6 @@ decode(Data, Opts) when is_binary(Data), is_list(Opts) ->
error(Error);
{partial, EJson} ->
finish_decode(EJson);
- {iter, {_, Decoder, Val, Objs, Curr}} ->
- decode_loop(Data, Decoder, Val, Objs, Curr);
EJson ->
EJson
end;
@@ -91,8 +89,6 @@ encode(Data, Options) ->
error(Error);
{partial, IOData} ->
finish_encode(IOData, []);
- {iter, {Encoder, Stack, IOBuf}} ->
- encode_loop(Data, Options, Encoder, Stack, IOBuf);
[Bin] when is_binary(Bin) ->
Bin;
RevIOData when is_list(RevIOData) ->
@@ -186,52 +182,11 @@ init() ->
erlang:load_nif(filename:join(PrivDir, "jiffy"), 0).
-decode_loop(Data, Decoder, Val, Objs, Curr) ->
- case nif_decode_iter(Data, Decoder, Val, Objs, Curr) of
- {error, Error} ->
- error(Error);
- {partial, EJson} ->
- finish_decode(EJson);
- {iter, {_, NewDecoder, NewVal, NewObjs, NewCurr}} ->
- decode_loop(Data, NewDecoder, NewVal, NewObjs, NewCurr);
- EJson ->
- EJson
- end.
-
-
-encode_loop(Data, Options, Encoder, Stack, IOBuf) ->
- ForceUTF8 = lists:member(force_utf8, Options),
- case nif_encode_iter(Encoder, Stack, IOBuf) of
- {error, {invalid_string, _}} when ForceUTF8 == true ->
- FixedData = jiffy_utf8:fix(Data),
- encode(FixedData, Options -- [force_utf8]);
- {error, {invalid_object_member_key, _}} when ForceUTF8 == true ->
- FixedData = jiffy_utf8:fix(Data),
- encode(FixedData, Options -- [force_utf8]);
- {error, Error} ->
- error(Error);
- {partial, IOData} ->
- finish_encode(IOData, []);
- {iter, {NewEncoder, NewStack, NewIOBuf}} ->
- encode_loop(Data, Options, NewEncoder, NewStack, NewIOBuf);
- [Bin] when is_binary(Bin) ->
- Bin;
- RevIOData when is_list(RevIOData) ->
- lists:reverse(RevIOData)
- end.
-
-
not_loaded(Line) ->
erlang:nif_error({not_loaded, [{module, ?MODULE}, {line, Line}]}).
nif_decode_init(_Data, _Opts) ->
?NOT_LOADED.
-nif_decode_iter(_Data, _Decoder, _, _, _) ->
- ?NOT_LOADED.
-
nif_encode_init(_Data, _Options) ->
?NOT_LOADED.
-
-nif_encode_iter(_Encoder, _Stack, _IoList) ->
- ?NOT_LOADED.