fixed a nasty performance regression caused by a misordered clause
This commit is contained in:
parent
d42acf4411
commit
079aa7ccf6
2 changed files with 7 additions and 7 deletions
|
@ -38,8 +38,8 @@ start(<<S/utf8, Rest/binary>>, Stack, Callbacks, Opts) when ?is_whitespace(S) ->
|
|||
start(<<>>, Stack, Callbacks, Opts) ->
|
||||
fun(Stream) -> start(Stream, Stack, Callbacks, Opts) end.
|
||||
|
||||
maybe_done(<<16#FF8F>>, [], Callbacks, Opts) when Opts#opts.explicit_termination == true ->
|
||||
{callback(eof, Callbacks), <<>>};
|
||||
maybe_done(<<16#F8FF/utf8, Rest/binary>>, [], Callbacks, Opts) when Opts#opts.explicit_termination == true ->
|
||||
{callback(eof, Callbacks), Rest};
|
||||
maybe_done(<<Rest/binary>>, [], Callbacks, Opts) when Opts#opts.explicit_termination == false ->
|
||||
{callback(eof, Callbacks), Rest};
|
||||
maybe_done(<<?end_object/utf8, Rest/binary>>, [object|Stack], Callbacks, Opts) ->
|
||||
|
@ -240,7 +240,7 @@ zero(<<?solidus/utf8, Rest/binary>>, Stack, Callbacks, Opts, Acc) when Opts#opts
|
|||
zero(<<>>, Stack, Callbacks, Opts, Acc) when Opts#opts.explicit_termination == false ->
|
||||
fun(Stream) -> zero(Stream, Stack, Callbacks, Opts, Acc) end;
|
||||
zero(<<>>, Stack, Callbacks, Opts, Acc) when Opts#opts.explicit_termination == true ->
|
||||
fun(eof) -> {callback(eof, callback({number, lists:reverse(Acc)}, Callbacks)), <<>>}
|
||||
fun(<<16#F8FF/utf8>>) -> {callback(eof, callback({number, lists:reverse(Acc)}, Callbacks)), <<>>}
|
||||
;(Stream) -> zero(Stream, Stack, Callbacks, Opts, Acc)
|
||||
end.
|
||||
|
||||
|
@ -270,7 +270,7 @@ integer(<<?solidus/utf8, Rest/binary>>, Stack, Callbacks, Opts, Acc) when Opts#o
|
|||
integer(<<>>, Stack, Callbacks, Opts, Acc) when Opts#opts.explicit_termination == false ->
|
||||
fun(Stream) -> integer(Stream, Stack, Callbacks, Opts, Acc) end;
|
||||
integer(<<>>, Stack, Callbacks, Opts, Acc) when Opts#opts.explicit_termination == true ->
|
||||
fun(eof) -> {callback(eof, callback({number, lists:reverse(Acc)}, Callbacks)), <<>>}
|
||||
fun(<<16#F8FF/utf8>>) -> {callback(eof, callback({number, lists:reverse(Acc)}, Callbacks)), <<>>}
|
||||
;(Stream) -> integer(Stream, Stack, Callbacks, Opts, Acc)
|
||||
end.
|
||||
|
||||
|
@ -298,7 +298,7 @@ fraction(<<?solidus/utf8, Rest/binary>>, Stack, Callbacks, Opts, Acc) when Opts#
|
|||
fraction(<<>>, Stack, Callbacks, Opts, Acc) when Opts#opts.explicit_termination == false ->
|
||||
fun(Stream) -> fraction(Stream, Stack, Callbacks, Opts, Acc) end;
|
||||
fraction(<<>>, Stack, Callbacks, Opts, Acc) when Opts#opts.explicit_termination == true ->
|
||||
fun(eof) -> {callback(eof, callback({number, lists:reverse(Acc)}, Callbacks)), <<>>}
|
||||
fun(<<16#F8FF/utf8>>) -> {callback(eof, callback({number, lists:reverse(Acc)}, Callbacks)), <<>>}
|
||||
;(Stream) -> fraction(Stream, Stack, Callbacks, Opts, Acc)
|
||||
end.
|
||||
|
||||
|
@ -336,7 +336,7 @@ exp(<<?solidus/utf8, Rest/binary>>, Stack, Callbacks, Opts, Acc) when Opts#opts.
|
|||
exp(<<>>, Stack, Callbacks, Opts, Acc) when Opts#opts.explicit_termination == false ->
|
||||
fun(Stream) -> exp(Stream, Stack, Callbacks, Opts, Acc) end;
|
||||
exp(<<>>, Stack, Callbacks, Opts, Acc) when Opts#opts.explicit_termination == true ->
|
||||
fun(eof) -> {callback(eof, callback({number, lists:reverse(Acc)}, Callbacks)), <<>>}
|
||||
fun(<<16#F8FF/utf8>>) -> {callback(eof, callback({number, lists:reverse(Acc)}, Callbacks)), <<>>}
|
||||
;(Stream) -> exp(Stream, Stack, Callbacks, Opts, Acc)
|
||||
end.
|
||||
|
||||
|
|
|
@ -35,7 +35,7 @@ test_body(TestSpec, Dir) ->
|
|||
end.
|
||||
|
||||
decode(F, <<>>) ->
|
||||
{Result, _} = F(eof),
|
||||
{Result, _} = F(<<16#F8FF/utf8>>),
|
||||
Result;
|
||||
decode(F, <<A/utf8, Rest/binary>>) ->
|
||||
case F(<<A/utf8>>) of
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue