Skip to content

Commit ad27f73

Browse files
committed
Unify files, update notice
1 parent b8ecd5b commit ad27f73

File tree

3 files changed

+172
-191
lines changed

3 files changed

+172
-191
lines changed

NOTICE

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,10 @@ LEGAL NOTICE INFORMATION
33

44
All the files in this distribution are copyright to the terms below.
55

6+
== lib/elixir/src/elixir_json.erl
67
== lib/elixir/src/elixir_parser.erl (generated by build scripts)
78

8-
Copyright Ericsson AB 1996-2015
9+
Copyright Ericsson AB 1996-2024
910

1011
Licensed under the Apache License, Version 2.0 (the "License");
1112
you may not use this file except in compliance with the License.

lib/elixir/src/elixir_json.erl

Lines changed: 170 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -68,7 +68,176 @@
6868
string/6
6969
]}).
7070

71-
-include("elixir_json.hrl").
71+
%% A lot of the macros below use multi-value comparisons where
72+
%% range checks would have worked just fine. This is because
73+
%% the compiler & JIT can emit better code in some cases when
74+
%% multiple clauses are to be dispatched based on such sets
75+
%% of values. They'll generate an efficient "jump table",
76+
%% which gets to the correct clause in one go, rather
77+
%% than going through a set of comparisons.
78+
%% However, this might not always be the best way (see is_0_to_9),
79+
%% so as always with any performance work - measure, don't guess!
80+
81+
-define(is_1_to_9(X),
82+
X =:= $1 orelse
83+
X =:= $2 orelse
84+
X =:= $3 orelse
85+
X =:= $4 orelse
86+
X =:= $5 orelse
87+
X =:= $6 orelse
88+
X =:= $7 orelse
89+
X =:= $8 orelse
90+
X =:= $9
91+
).
92+
93+
-define(is_0_to_9(X), X >= $0 andalso X =< $9).
94+
95+
-define(is_ws(X), X =:= $\s; X =:= $\t; X =:= $\r; X =:= $\n).
96+
97+
-define(is_ascii_escape(Byte),
98+
Byte =:= 0 orelse
99+
Byte =:= 1 orelse
100+
Byte =:= 2 orelse
101+
Byte =:= 3 orelse
102+
Byte =:= 4 orelse
103+
Byte =:= 5 orelse
104+
Byte =:= 6 orelse
105+
Byte =:= 7 orelse
106+
Byte =:= 8 orelse
107+
Byte =:= 9 orelse
108+
Byte =:= 10 orelse
109+
Byte =:= 11 orelse
110+
Byte =:= 12 orelse
111+
Byte =:= 13 orelse
112+
Byte =:= 14 orelse
113+
Byte =:= 15 orelse
114+
Byte =:= 16 orelse
115+
Byte =:= 17 orelse
116+
Byte =:= 18 orelse
117+
Byte =:= 19 orelse
118+
Byte =:= 20 orelse
119+
Byte =:= 21 orelse
120+
Byte =:= 22 orelse
121+
Byte =:= 23 orelse
122+
Byte =:= 24 orelse
123+
Byte =:= 25 orelse
124+
Byte =:= 26 orelse
125+
Byte =:= 27 orelse
126+
Byte =:= 28 orelse
127+
Byte =:= 29 orelse
128+
Byte =:= 30 orelse
129+
Byte =:= 31 orelse
130+
Byte =:= 34 orelse
131+
Byte =:= 92
132+
).
133+
-define(is_ascii_plain(Byte),
134+
Byte =:= 32 orelse
135+
Byte =:= 33 orelse
136+
Byte =:= 35 orelse
137+
Byte =:= 36 orelse
138+
Byte =:= 37 orelse
139+
Byte =:= 38 orelse
140+
Byte =:= 39 orelse
141+
Byte =:= 40 orelse
142+
Byte =:= 41 orelse
143+
Byte =:= 42 orelse
144+
Byte =:= 43 orelse
145+
Byte =:= 44 orelse
146+
Byte =:= 45 orelse
147+
Byte =:= 46 orelse
148+
Byte =:= 47 orelse
149+
Byte =:= 48 orelse
150+
Byte =:= 49 orelse
151+
Byte =:= 50 orelse
152+
Byte =:= 51 orelse
153+
Byte =:= 52 orelse
154+
Byte =:= 53 orelse
155+
Byte =:= 54 orelse
156+
Byte =:= 55 orelse
157+
Byte =:= 56 orelse
158+
Byte =:= 57 orelse
159+
Byte =:= 58 orelse
160+
Byte =:= 59 orelse
161+
Byte =:= 60 orelse
162+
Byte =:= 61 orelse
163+
Byte =:= 62 orelse
164+
Byte =:= 63 orelse
165+
Byte =:= 64 orelse
166+
Byte =:= 65 orelse
167+
Byte =:= 66 orelse
168+
Byte =:= 67 orelse
169+
Byte =:= 68 orelse
170+
Byte =:= 69 orelse
171+
Byte =:= 70 orelse
172+
Byte =:= 71 orelse
173+
Byte =:= 72 orelse
174+
Byte =:= 73 orelse
175+
Byte =:= 74 orelse
176+
Byte =:= 75 orelse
177+
Byte =:= 76 orelse
178+
Byte =:= 77 orelse
179+
Byte =:= 78 orelse
180+
Byte =:= 79 orelse
181+
Byte =:= 80 orelse
182+
Byte =:= 81 orelse
183+
Byte =:= 82 orelse
184+
Byte =:= 83 orelse
185+
Byte =:= 84 orelse
186+
Byte =:= 85 orelse
187+
Byte =:= 86 orelse
188+
Byte =:= 87 orelse
189+
Byte =:= 88 orelse
190+
Byte =:= 89 orelse
191+
Byte =:= 90 orelse
192+
Byte =:= 91 orelse
193+
Byte =:= 93 orelse
194+
Byte =:= 94 orelse
195+
Byte =:= 95 orelse
196+
Byte =:= 96 orelse
197+
Byte =:= 97 orelse
198+
Byte =:= 98 orelse
199+
Byte =:= 99 orelse
200+
Byte =:= 100 orelse
201+
Byte =:= 101 orelse
202+
Byte =:= 102 orelse
203+
Byte =:= 103 orelse
204+
Byte =:= 104 orelse
205+
Byte =:= 105 orelse
206+
Byte =:= 106 orelse
207+
Byte =:= 107 orelse
208+
Byte =:= 108 orelse
209+
Byte =:= 109 orelse
210+
Byte =:= 110 orelse
211+
Byte =:= 111 orelse
212+
Byte =:= 112 orelse
213+
Byte =:= 113 orelse
214+
Byte =:= 114 orelse
215+
Byte =:= 115 orelse
216+
Byte =:= 116 orelse
217+
Byte =:= 117 orelse
218+
Byte =:= 118 orelse
219+
Byte =:= 119 orelse
220+
Byte =:= 120 orelse
221+
Byte =:= 121 orelse
222+
Byte =:= 122 orelse
223+
Byte =:= 123 orelse
224+
Byte =:= 124 orelse
225+
Byte =:= 125 orelse
226+
Byte =:= 126 orelse
227+
Byte =:= 127
228+
).
229+
230+
-define(are_all_ascii_plain(B1, B2, B3, B4, B5, B6, B7, B8),
231+
(?is_ascii_plain(B1)) andalso
232+
(?is_ascii_plain(B2)) andalso
233+
(?is_ascii_plain(B3)) andalso
234+
(?is_ascii_plain(B4)) andalso
235+
(?is_ascii_plain(B5)) andalso
236+
(?is_ascii_plain(B6)) andalso
237+
(?is_ascii_plain(B7)) andalso
238+
(?is_ascii_plain(B8))
239+
).
240+
72241
-define(UTF8_ACCEPT, 0).
73242
-define(UTF8_REJECT, 12).
74243

lib/elixir/src/elixir_json.hrl

Lines changed: 0 additions & 189 deletions
This file was deleted.

0 commit comments

Comments
 (0)