Line | Source Code | Coverage |
---|
1 | | - |
2 | | - |
3 | typedef struct jit_arguments { | - |
4 | | - |
5 | struct sljit_stack *stack; | - |
6 | const pcre_uchar *str; | - |
7 | const pcre_uchar *begin; | - |
8 | const pcre_uchar *end; | - |
9 | int *offsets; | - |
10 | pcre_uchar *ptr; | - |
11 | | - |
12 | int offsetcount; | - |
13 | int calllimit; | - |
14 | pcre_uint8 notbol; | - |
15 | pcre_uint8 noteol; | - |
16 | pcre_uint8 notempty; | - |
17 | pcre_uint8 notempty_atstart; | - |
18 | } jit_arguments; | - |
19 | | - |
20 | typedef struct executable_function { | - |
21 | void *executable_func; | - |
22 | pcre16_jit_callback callback; | - |
23 | void *userdata; | - |
24 | sljit_uw executable_size; | - |
25 | } executable_function; | - |
26 | | - |
27 | typedef struct jump_list { | - |
28 | struct sljit_jump *jump; | - |
29 | struct jump_list *next; | - |
30 | } jump_list; | - |
31 | | - |
32 | enum stub_types { stack_alloc }; | - |
33 | | - |
34 | typedef struct stub_list { | - |
35 | enum stub_types type; | - |
36 | int data; | - |
37 | struct sljit_jump *start; | - |
38 | struct sljit_label *leave; | - |
39 | struct stub_list *next; | - |
40 | } stub_list; | - |
41 | | - |
42 | typedef int ( *jit_function)(jit_arguments *args); | - |
43 | | - |
44 | | - |
45 | | - |
46 | | - |
47 | | - |
48 | typedef struct fallback_common { | - |
49 | | - |
50 | struct fallback_common *prev; | - |
51 | jump_list *nextfallbacks; | - |
52 | | - |
53 | struct fallback_common *top; | - |
54 | jump_list *topfallbacks; | - |
55 | | - |
56 | pcre_uchar *cc; | - |
57 | } fallback_common; | - |
58 | | - |
59 | typedef struct assert_fallback { | - |
60 | fallback_common common; | - |
61 | jump_list *condfailed; | - |
62 | | - |
63 | int framesize; | - |
64 | | - |
65 | int localptr; | - |
66 | | - |
67 | struct sljit_label *hotpath; | - |
68 | } assert_fallback; | - |
69 | | - |
70 | typedef struct bracket_fallback { | - |
71 | fallback_common common; | - |
72 | | - |
73 | struct sljit_label *althotpath; | - |
74 | | - |
75 | struct sljit_label *recursivehotpath; | - |
76 | | - |
77 | struct sljit_label *zerohotpath; | - |
78 | | - |
79 | union { | - |
80 | | - |
81 | jump_list *condfailed; | - |
82 | assert_fallback *assert; | - |
83 | | - |
84 | int framesize; | - |
85 | } u; | - |
86 | | - |
87 | int localptr; | - |
88 | } bracket_fallback; | - |
89 | | - |
90 | typedef struct bracketpos_fallback { | - |
91 | fallback_common common; | - |
92 | | - |
93 | int localptr; | - |
94 | | - |
95 | int framesize; | - |
96 | | - |
97 | int stacksize; | - |
98 | } bracketpos_fallback; | - |
99 | | - |
100 | typedef struct braminzero_fallback { | - |
101 | fallback_common common; | - |
102 | struct sljit_label *hotpath; | - |
103 | } braminzero_fallback; | - |
104 | | - |
105 | typedef struct iterator_fallback { | - |
106 | fallback_common common; | - |
107 | | - |
108 | struct sljit_label *hotpath; | - |
109 | } iterator_fallback; | - |
110 | | - |
111 | typedef struct recurse_entry { | - |
112 | struct recurse_entry *next; | - |
113 | | - |
114 | struct sljit_label *entry; | - |
115 | | - |
116 | jump_list *calls; | - |
117 | | - |
118 | int start; | - |
119 | } recurse_entry; | - |
120 | | - |
121 | typedef struct recurse_fallback { | - |
122 | fallback_common common; | - |
123 | } recurse_fallback; | - |
124 | | - |
125 | typedef struct compiler_common { | - |
126 | struct sljit_compiler *compiler; | - |
127 | pcre_uchar *start; | - |
128 | int localsize; | - |
129 | int *localptrs; | - |
130 | const pcre_uint8 *fcc; | - |
131 | sljit_w lcc; | - |
132 | int cbraptr; | - |
133 | int nltype; | - |
134 | int newline; | - |
135 | int bsr_nltype; | - |
136 | int endonly; | - |
137 | sljit_w ctypes; | - |
138 | sljit_uw name_table; | - |
139 | sljit_w name_count; | - |
140 | sljit_w name_entry_size; | - |
141 | struct sljit_label *acceptlabel; | - |
142 | stub_list *stubs; | - |
143 | recurse_entry *entries; | - |
144 | recurse_entry *currententry; | - |
145 | jump_list *accept; | - |
146 | jump_list *calllimit; | - |
147 | jump_list *stackalloc; | - |
148 | jump_list *revertframes; | - |
149 | jump_list *wordboundary; | - |
150 | jump_list *anynewline; | - |
151 | jump_list *hspace; | - |
152 | jump_list *vspace; | - |
153 | jump_list *casefulcmp; | - |
154 | jump_list *caselesscmp; | - |
155 | BOOL jscript_compat; | - |
156 | | - |
157 | BOOL utf; | - |
158 | | - |
159 | BOOL use_ucp; | - |
160 | | - |
161 | jump_list *utfreadchar; | - |
162 | | - |
163 | | - |
164 | | - |
165 | | - |
166 | | - |
167 | jump_list *getucd; | - |
168 | | - |
169 | } compiler_common; | - |
170 | | - |
171 | | - |
172 | | - |
173 | typedef struct compare_context { | - |
174 | int length; | - |
175 | int sourcereg; | - |
176 | | - |
177 | int ucharptr; | - |
178 | union { | - |
179 | sljit_i asint; | - |
180 | sljit_uh asushort; | - |
181 | | - |
182 | | - |
183 | | - |
184 | | - |
185 | | - |
186 | sljit_uh asuchars[2]; | - |
187 | | - |
188 | | - |
189 | } c; | - |
190 | union { | - |
191 | sljit_i asint; | - |
192 | sljit_uh asushort; | - |
193 | | - |
194 | | - |
195 | | - |
196 | | - |
197 | | - |
198 | sljit_uh asuchars[2]; | - |
199 | | - |
200 | | - |
201 | } oc; | - |
202 | | - |
203 | } compare_context; | - |
204 | | - |
205 | enum { | - |
206 | frame_end = 0, | - |
207 | frame_setstrbegin = -1 | - |
208 | }; | - |
209 | static pcre_uchar* bracketend(pcre_uchar* cc) | - |
210 | { | - |
211 | do { } while (0); executed: } Execution Count:45 partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:45 |
| 0-45 |
212 | do cc += (cc[1]); while (*cc == OP_ALT); executed: cc += (cc[1]); Execution Count:48 evaluated: *cc == OP_ALT yes Evaluation Count:3 | yes Evaluation Count:45 |
| 3-48 |
213 | do { } while (0); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:45 |
executed: } Execution Count:45 | 0-45 |
214 | cc += 1 + 1; | - |
215 | return cc; executed: return cc; Execution Count:45 | 45 |
216 | } | - |
217 | static pcre_uchar *next_opcode(compiler_common *common, pcre_uchar *cc) | - |
218 | { | - |
219 | (void)common; | - |
220 | switch(*cc) | - |
221 | { | - |
222 | case OP_SOD: | - |
223 | case OP_SOM: | - |
224 | case OP_SET_SOM: | - |
225 | case OP_NOT_WORD_BOUNDARY: | - |
226 | case OP_WORD_BOUNDARY: | - |
227 | case OP_NOT_DIGIT: | - |
228 | case OP_DIGIT: | - |
229 | case OP_NOT_WHITESPACE: | - |
230 | case OP_WHITESPACE: | - |
231 | case OP_NOT_WORDCHAR: | - |
232 | case OP_WORDCHAR: | - |
233 | case OP_ANY: | - |
234 | case OP_ALLANY: | - |
235 | case OP_ANYNL: | - |
236 | case OP_NOT_HSPACE: | - |
237 | case OP_HSPACE: | - |
238 | case OP_NOT_VSPACE: | - |
239 | case OP_VSPACE: | - |
240 | case OP_EXTUNI: | - |
241 | case OP_EODN: | - |
242 | case OP_EOD: | - |
243 | case OP_CIRC: | - |
244 | case OP_CIRCM: | - |
245 | case OP_DOLL: | - |
246 | case OP_DOLLM: | - |
247 | case OP_TYPESTAR: | - |
248 | case OP_TYPEMINSTAR: | - |
249 | case OP_TYPEPLUS: | - |
250 | case OP_TYPEMINPLUS: | - |
251 | case OP_TYPEQUERY: | - |
252 | case OP_TYPEMINQUERY: | - |
253 | case OP_TYPEPOSSTAR: | - |
254 | case OP_TYPEPOSPLUS: | - |
255 | case OP_TYPEPOSQUERY: | - |
256 | case OP_CRSTAR: | - |
257 | case OP_CRMINSTAR: | - |
258 | case OP_CRPLUS: | - |
259 | case OP_CRMINPLUS: | - |
260 | case OP_CRQUERY: | - |
261 | case OP_CRMINQUERY: | - |
262 | case OP_DEF: | - |
263 | case OP_BRAZERO: | - |
264 | case OP_BRAMINZERO: | - |
265 | case OP_BRAPOSZERO: | - |
266 | case OP_FAIL: | - |
267 | case OP_ACCEPT: | - |
268 | case OP_ASSERT_ACCEPT: | - |
269 | case OP_SKIPZERO: | - |
270 | return cc + 1; executed: return cc + 1; Execution Count:29 | 29 |
271 | | - |
272 | case OP_ANYBYTE: | - |
273 | | - |
274 | if (common->utf) return ((void *)0); never executed: return ((void *)0); never evaluated: common->utf | 0 |
275 | | - |
276 | return cc + 1; never executed: return cc + 1; | 0 |
277 | | - |
278 | case OP_CHAR: | - |
279 | case OP_CHARI: | - |
280 | case OP_NOT: | - |
281 | case OP_NOTI: | - |
282 | case OP_STAR: | - |
283 | case OP_MINSTAR: | - |
284 | case OP_PLUS: | - |
285 | case OP_MINPLUS: | - |
286 | case OP_QUERY: | - |
287 | case OP_MINQUERY: | - |
288 | case OP_POSSTAR: | - |
289 | case OP_POSPLUS: | - |
290 | case OP_POSQUERY: | - |
291 | case OP_STARI: | - |
292 | case OP_MINSTARI: | - |
293 | case OP_PLUSI: | - |
294 | case OP_MINPLUSI: | - |
295 | case OP_QUERYI: | - |
296 | case OP_MINQUERYI: | - |
297 | case OP_POSSTARI: | - |
298 | case OP_POSPLUSI: | - |
299 | case OP_POSQUERYI: | - |
300 | case OP_NOTSTAR: | - |
301 | case OP_NOTMINSTAR: | - |
302 | case OP_NOTPLUS: | - |
303 | case OP_NOTMINPLUS: | - |
304 | case OP_NOTQUERY: | - |
305 | case OP_NOTMINQUERY: | - |
306 | case OP_NOTPOSSTAR: | - |
307 | case OP_NOTPOSPLUS: | - |
308 | case OP_NOTPOSQUERY: | - |
309 | case OP_NOTSTARI: | - |
310 | case OP_NOTMINSTARI: | - |
311 | case OP_NOTPLUSI: | - |
312 | case OP_NOTMINPLUSI: | - |
313 | case OP_NOTQUERYI: | - |
314 | case OP_NOTMINQUERYI: | - |
315 | case OP_NOTPOSSTARI: | - |
316 | case OP_NOTPOSPLUSI: | - |
317 | case OP_NOTPOSQUERYI: | - |
318 | cc += 2; | - |
319 | | - |
320 | if (common->utf && (((cc[-1]) & 0xfc00) == 0xd800)) cc += 1; partially evaluated: common->utf yes Evaluation Count:18 | no Evaluation Count:0 |
partially evaluated: (((cc[-1]) & 0xfc00) == 0xd800) no Evaluation Count:0 | yes Evaluation Count:18 |
| 0-18 |
321 | | - |
322 | return cc; executed: return cc; Execution Count:18 | 18 |
323 | | - |
324 | case OP_UPTO: | - |
325 | case OP_MINUPTO: | - |
326 | case OP_EXACT: | - |
327 | case OP_POSUPTO: | - |
328 | case OP_UPTOI: | - |
329 | case OP_MINUPTOI: | - |
330 | case OP_EXACTI: | - |
331 | case OP_POSUPTOI: | - |
332 | case OP_NOTUPTO: | - |
333 | case OP_NOTMINUPTO: | - |
334 | case OP_NOTEXACT: | - |
335 | case OP_NOTPOSUPTO: | - |
336 | case OP_NOTUPTOI: | - |
337 | case OP_NOTMINUPTOI: | - |
338 | case OP_NOTEXACTI: | - |
339 | case OP_NOTPOSUPTOI: | - |
340 | cc += 2 + 1; | - |
341 | | - |
342 | if (common->utf && (((cc[-1]) & 0xfc00) == 0xd800)) cc += 1; never evaluated: common->utf never evaluated: (((cc[-1]) & 0xfc00) == 0xd800) | 0 |
343 | | - |
344 | return cc; never executed: return cc; | 0 |
345 | | - |
346 | case OP_NOTPROP: | - |
347 | case OP_PROP: | - |
348 | return cc + 1 + 2; never executed: return cc + 1 + 2; | 0 |
349 | | - |
350 | case OP_TYPEUPTO: | - |
351 | case OP_TYPEMINUPTO: | - |
352 | case OP_TYPEEXACT: | - |
353 | case OP_TYPEPOSUPTO: | - |
354 | case OP_REF: | - |
355 | case OP_REFI: | - |
356 | case OP_CREF: | - |
357 | case OP_NCREF: | - |
358 | case OP_RREF: | - |
359 | case OP_NRREF: | - |
360 | case OP_CLOSE: | - |
361 | cc += 1 + 1; | - |
362 | return cc; never executed: return cc; | 0 |
363 | | - |
364 | case OP_CRRANGE: | - |
365 | case OP_CRMINRANGE: | - |
366 | return cc + 1 + 2 * 1; never executed: return cc + 1 + 2 * 1; | 0 |
367 | | - |
368 | case OP_CLASS: | - |
369 | case OP_NCLASS: | - |
370 | return cc + 1 + 32 / sizeof(pcre_uchar); never executed: return cc + 1 + 32 / sizeof(pcre_uchar); | 0 |
371 | | - |
372 | | - |
373 | case OP_XCLASS: | - |
374 | return cc + (cc[1]); executed: return cc + (cc[1]); Execution Count:2 | 2 |
375 | | - |
376 | | - |
377 | case OP_RECURSE: | - |
378 | case OP_ASSERT: | - |
379 | case OP_ASSERT_NOT: | - |
380 | case OP_ASSERTBACK: | - |
381 | case OP_ASSERTBACK_NOT: | - |
382 | case OP_REVERSE: | - |
383 | case OP_ONCE: | - |
384 | case OP_ONCE_NC: | - |
385 | case OP_BRA: | - |
386 | case OP_BRAPOS: | - |
387 | case OP_COND: | - |
388 | case OP_SBRA: | - |
389 | case OP_SBRAPOS: | - |
390 | case OP_SCOND: | - |
391 | case OP_ALT: | - |
392 | case OP_KET: | - |
393 | case OP_KETRMAX: | - |
394 | case OP_KETRMIN: | - |
395 | case OP_KETRPOS: | - |
396 | return cc + 1 + 1; executed: return cc + 1 + 1; Execution Count:62 | 62 |
397 | | - |
398 | case OP_CBRA: | - |
399 | case OP_CBRAPOS: | - |
400 | case OP_SCBRA: | - |
401 | case OP_SCBRAPOS: | - |
402 | return cc + 1 + 1 + 1; never executed: return cc + 1 + 1 + 1; | 0 |
403 | | - |
404 | default: | - |
405 | return ((void *)0); never executed: return ((void *)0); | 0 |
406 | } | - |
407 | } | 0 |
408 | | - |
409 | static int get_localspace(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend) | - |
410 | { | - |
411 | int localspace = 0; | - |
412 | pcre_uchar *alternative; | - |
413 | | - |
414 | while (cc < ccend) evaluated: cc < ccend yes Evaluation Count:53 | yes Evaluation Count:15 |
| 15-53 |
415 | { | - |
416 | switch(*cc) | - |
417 | { | - |
418 | case OP_ASSERT: | - |
419 | case OP_ASSERT_NOT: | - |
420 | case OP_ASSERTBACK: | - |
421 | case OP_ASSERTBACK_NOT: | - |
422 | case OP_ONCE: | - |
423 | case OP_ONCE_NC: | - |
424 | case OP_BRAPOS: | - |
425 | case OP_SBRA: | - |
426 | case OP_SBRAPOS: | - |
427 | case OP_SCOND: | - |
428 | localspace += sizeof(sljit_w); | - |
429 | cc += 1 + 1; | - |
430 | break; | 0 |
431 | | - |
432 | case OP_CBRAPOS: | - |
433 | case OP_SCBRAPOS: | - |
434 | localspace += sizeof(sljit_w); | - |
435 | cc += 1 + 1 + 1; | - |
436 | break; | 0 |
437 | | - |
438 | case OP_COND: | - |
439 | | - |
440 | alternative = cc + (cc[1]); | - |
441 | if (*alternative == OP_KETRMAX || *alternative == OP_KETRMIN) never evaluated: *alternative == OP_KETRMAX never evaluated: *alternative == OP_KETRMIN | 0 |
442 | localspace += sizeof(sljit_w); never executed: localspace += sizeof(sljit_w); | 0 |
443 | cc += 1 + 1; | - |
444 | break; | 0 |
445 | | - |
446 | default: | - |
447 | cc = next_opcode(common, cc); | - |
448 | if (cc == ((void *)0)) partially evaluated: cc == ((void *)0) no Evaluation Count:0 | yes Evaluation Count:53 |
| 0-53 |
449 | return -1; never executed: return -1; | 0 |
450 | break; executed: break; Execution Count:53 | 53 |
451 | } | - |
452 | } executed: } Execution Count:53 | 53 |
453 | return localspace; executed: return localspace; Execution Count:15 | 15 |
454 | } | - |
455 | | - |
456 | static void set_localptrs(compiler_common *common, int localptr, pcre_uchar *ccend) | - |
457 | { | - |
458 | pcre_uchar *cc = common->start; | - |
459 | pcre_uchar *alternative; | - |
460 | while (cc < ccend) evaluated: cc < ccend yes Evaluation Count:53 | yes Evaluation Count:15 |
| 15-53 |
461 | { | - |
462 | switch(*cc) | - |
463 | { | - |
464 | case OP_ASSERT: | - |
465 | case OP_ASSERT_NOT: | - |
466 | case OP_ASSERTBACK: | - |
467 | case OP_ASSERTBACK_NOT: | - |
468 | case OP_ONCE: | - |
469 | case OP_ONCE_NC: | - |
470 | case OP_BRAPOS: | - |
471 | case OP_SBRA: | - |
472 | case OP_SBRAPOS: | - |
473 | case OP_SCOND: | - |
474 | common->localptrs[cc - common->start] = localptr; | - |
475 | localptr += sizeof(sljit_w); | - |
476 | cc += 1 + 1; | - |
477 | break; | 0 |
478 | | - |
479 | case OP_CBRAPOS: | - |
480 | case OP_SCBRAPOS: | - |
481 | common->localptrs[cc - common->start] = localptr; | - |
482 | localptr += sizeof(sljit_w); | - |
483 | cc += 1 + 1 + 1; | - |
484 | break; | 0 |
485 | | - |
486 | case OP_COND: | - |
487 | | - |
488 | alternative = cc + (cc[1]); | - |
489 | if (*alternative == OP_KETRMAX || *alternative == OP_KETRMIN) never evaluated: *alternative == OP_KETRMAX never evaluated: *alternative == OP_KETRMIN | 0 |
490 | { | - |
491 | common->localptrs[cc - common->start] = localptr; | - |
492 | localptr += sizeof(sljit_w); | - |
493 | } | 0 |
494 | cc += 1 + 1; | - |
495 | break; | 0 |
496 | | - |
497 | default: | - |
498 | cc = next_opcode(common, cc); | - |
499 | do { } while (0); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:53 |
executed: } Execution Count:53 | 0-53 |
500 | break; executed: break; Execution Count:53 | 53 |
501 | } | - |
502 | } executed: } Execution Count:53 | 53 |
503 | } executed: } Execution Count:15 | 15 |
504 | | - |
505 | | - |
506 | static int get_framesize(compiler_common *common, pcre_uchar *cc, BOOL recursive) | - |
507 | { | - |
508 | pcre_uchar *ccend = bracketend(cc); | - |
509 | int length = 0; | - |
510 | BOOL possessive = 0; | - |
511 | BOOL setsom_found = 0; | - |
512 | | - |
513 | if (!recursive && (*cc == OP_CBRAPOS || *cc == OP_SCBRAPOS)) never evaluated: !recursive never evaluated: *cc == OP_CBRAPOS never evaluated: *cc == OP_SCBRAPOS | 0 |
514 | { | - |
515 | length = 3; | - |
516 | possessive = 1; | - |
517 | } | 0 |
518 | | - |
519 | cc = next_opcode(common, cc); | - |
520 | do { } while (0); | 0 |
521 | while (cc < ccend) never evaluated: cc < ccend | 0 |
522 | switch(*cc) | - |
523 | { | - |
524 | case OP_SET_SOM: | - |
525 | case OP_RECURSE: | - |
526 | if (!setsom_found) never evaluated: !setsom_found | 0 |
527 | { | - |
528 | length += 2; | - |
529 | setsom_found = 1; | - |
530 | } | 0 |
531 | cc += (*cc == OP_SET_SOM) ? 1 : 1 + 1; never evaluated: (*cc == OP_SET_SOM) | 0 |
532 | break; | 0 |
533 | | - |
534 | case OP_CBRA: | - |
535 | case OP_CBRAPOS: | - |
536 | case OP_SCBRA: | - |
537 | case OP_SCBRAPOS: | - |
538 | length += 3; | - |
539 | cc += 1 + 1 + 1; | - |
540 | break; | 0 |
541 | | - |
542 | default: | - |
543 | cc = next_opcode(common, cc); | - |
544 | do { } while (0); | 0 |
545 | break; | 0 |
546 | } | 0 |
547 | | - |
548 | | - |
549 | if (__builtin_expect((possessive), 0) && length == 3) never evaluated: __builtin_expect((possessive), 0) never evaluated: length == 3 | 0 |
550 | return -1; never executed: return -1; | 0 |
551 | | - |
552 | if (length > 0) never evaluated: length > 0 | 0 |
553 | return length + 1; never executed: return length + 1; | 0 |
554 | return -1; never executed: return -1; | 0 |
555 | } | - |
556 | | - |
557 | static void init_frame(compiler_common *common, pcre_uchar *cc, int stackpos, int stacktop, BOOL recursive) | - |
558 | { | - |
559 | struct sljit_compiler *compiler = common->compiler; | - |
560 | pcre_uchar *ccend = bracketend(cc); | - |
561 | BOOL setsom_found = 0; | - |
562 | int offset; | - |
563 | | - |
564 | | - |
565 | (void)stacktop; | - |
566 | do { } while (0); | 0 |
567 | | - |
568 | stackpos = ((-(stackpos) - 1) * (int)sizeof(sljit_w)); | - |
569 | if (recursive || (*cc != OP_CBRAPOS && *cc != OP_SCBRAPOS)) never evaluated: recursive never evaluated: *cc != OP_CBRAPOS never evaluated: *cc != OP_SCBRAPOS | 0 |
570 | cc = next_opcode(common, cc); never executed: cc = next_opcode(common, cc); | 0 |
571 | do { } while (0); | 0 |
572 | while (cc < ccend) never evaluated: cc < ccend | 0 |
573 | switch(*cc) | - |
574 | { | - |
575 | case OP_SET_SOM: | - |
576 | case OP_RECURSE: | - |
577 | if (!setsom_found) never evaluated: !setsom_found | 0 |
578 | { | - |
579 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w)))); | - |
580 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (stackpos), (0x200), (frame_setstrbegin)); | - |
581 | stackpos += (int)sizeof(sljit_w); | - |
582 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (stackpos), (1), (0)); | - |
583 | stackpos += (int)sizeof(sljit_w); | - |
584 | setsom_found = 1; | - |
585 | } | 0 |
586 | cc += (*cc == OP_SET_SOM) ? 1 : 1 + 1; never evaluated: (*cc == OP_SET_SOM) | 0 |
587 | break; | 0 |
588 | | - |
589 | case OP_CBRA: | - |
590 | case OP_CBRAPOS: | - |
591 | case OP_SCBRA: | - |
592 | case OP_SCBRAPOS: | - |
593 | offset = (cc[1 + 1]) << 1; | - |
594 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (stackpos), (0x200), (((8 * sizeof(sljit_w)) + (offset) * sizeof(sljit_w)))); | - |
595 | stackpos += (int)sizeof(sljit_w); | - |
596 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset) * sizeof(sljit_w)))); | - |
597 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 1) * sizeof(sljit_w)))); | - |
598 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (stackpos), (1), (0)); | - |
599 | stackpos += (int)sizeof(sljit_w); | - |
600 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (stackpos), (3), (0)); | - |
601 | stackpos += (int)sizeof(sljit_w); | - |
602 | | - |
603 | cc += 1 + 1 + 1; | - |
604 | break; | 0 |
605 | | - |
606 | default: | - |
607 | cc = next_opcode(common, cc); | - |
608 | do { } while (0); | 0 |
609 | break; | 0 |
610 | } | 0 |
611 | | - |
612 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (stackpos), (0x200), (frame_end)); | - |
613 | do { } while (0); | 0 |
614 | } | 0 |
615 | | - |
616 | static __inline int get_localsize(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend) | - |
617 | { | - |
618 | int localsize = 2; | - |
619 | pcre_uchar *alternative; | - |
620 | | - |
621 | while (cc < ccend) never evaluated: cc < ccend | 0 |
622 | { | - |
623 | switch(*cc) | - |
624 | { | - |
625 | case OP_ASSERT: | - |
626 | case OP_ASSERT_NOT: | - |
627 | case OP_ASSERTBACK: | - |
628 | case OP_ASSERTBACK_NOT: | - |
629 | case OP_ONCE: | - |
630 | case OP_ONCE_NC: | - |
631 | case OP_BRAPOS: | - |
632 | case OP_SBRA: | - |
633 | case OP_SBRAPOS: | - |
634 | case OP_SCOND: | - |
635 | localsize++; | - |
636 | cc += 1 + 1; | - |
637 | break; | 0 |
638 | | - |
639 | case OP_CBRA: | - |
640 | case OP_SCBRA: | - |
641 | localsize++; | - |
642 | cc += 1 + 1 + 1; | - |
643 | break; | 0 |
644 | | - |
645 | case OP_CBRAPOS: | - |
646 | case OP_SCBRAPOS: | - |
647 | localsize += 2; | - |
648 | cc += 1 + 1 + 1; | - |
649 | break; | 0 |
650 | | - |
651 | case OP_COND: | - |
652 | | - |
653 | alternative = cc + (cc[1]); | - |
654 | if (*alternative == OP_KETRMAX || *alternative == OP_KETRMIN) never evaluated: *alternative == OP_KETRMAX never evaluated: *alternative == OP_KETRMIN | 0 |
655 | localsize++; never executed: localsize++; | 0 |
656 | cc += 1 + 1; | - |
657 | break; | 0 |
658 | | - |
659 | default: | - |
660 | cc = next_opcode(common, cc); | - |
661 | do { } while (0); | 0 |
662 | break; | 0 |
663 | } | - |
664 | } | 0 |
665 | do { } while (0); | 0 |
666 | return localsize; never executed: return localsize; | 0 |
667 | } | - |
668 | | - |
669 | static void copy_locals(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend, | - |
670 | BOOL save, int stackptr, int stacktop) | - |
671 | { | - |
672 | struct sljit_compiler *compiler = common->compiler; | - |
673 | int srcw[2]; | - |
674 | int count; | - |
675 | BOOL tmp1next = 1; | - |
676 | BOOL tmp1empty = 1; | - |
677 | BOOL tmp2empty = 1; | - |
678 | pcre_uchar *alternative; | - |
679 | enum { | - |
680 | start, | - |
681 | loop, | - |
682 | end | - |
683 | } status; | - |
684 | | - |
685 | status = save ? start : loop; | 0 |
686 | stackptr = ((-(stackptr - 2) - 1) * (int)sizeof(sljit_w)); | - |
687 | stacktop = ((-(stacktop - 1) - 1) * (int)sizeof(sljit_w)); | - |
688 | | - |
689 | if (!save) | 0 |
690 | { | - |
691 | stackptr += sizeof(sljit_w); | - |
692 | if (stackptr < stacktop) never evaluated: stackptr < stacktop | 0 |
693 | { | - |
694 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (stackptr)); | - |
695 | stackptr += sizeof(sljit_w); | - |
696 | tmp1empty = 0; | - |
697 | } | 0 |
698 | if (stackptr < stacktop) never evaluated: stackptr < stacktop | 0 |
699 | { | - |
700 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (2))), (stackptr)); | - |
701 | stackptr += sizeof(sljit_w); | - |
702 | tmp2empty = 0; | - |
703 | } | 0 |
704 | | - |
705 | } | 0 |
706 | | - |
707 | while (status != end) never evaluated: status != end | 0 |
708 | { | - |
709 | count = 0; | - |
710 | switch(status) | - |
711 | { | - |
712 | case start: | - |
713 | do { } while (0); | 0 |
714 | count = 1; | - |
715 | srcw[0] = (4 * sizeof(sljit_w)); | - |
716 | status = loop; | - |
717 | break; | 0 |
718 | | - |
719 | case loop: | - |
720 | if (cc >= ccend) never evaluated: cc >= ccend | 0 |
721 | { | - |
722 | status = end; | - |
723 | break; | 0 |
724 | } | - |
725 | | - |
726 | switch(*cc) | - |
727 | { | - |
728 | case OP_ASSERT: | - |
729 | case OP_ASSERT_NOT: | - |
730 | case OP_ASSERTBACK: | - |
731 | case OP_ASSERTBACK_NOT: | - |
732 | case OP_ONCE: | - |
733 | case OP_ONCE_NC: | - |
734 | case OP_BRAPOS: | - |
735 | case OP_SBRA: | - |
736 | case OP_SBRAPOS: | - |
737 | case OP_SCOND: | - |
738 | count = 1; | - |
739 | srcw[0] = (common->localptrs[(cc) - common->start]); | - |
740 | do { } while (0); | 0 |
741 | cc += 1 + 1; | - |
742 | break; | 0 |
743 | | - |
744 | case OP_CBRA: | - |
745 | case OP_SCBRA: | - |
746 | count = 1; | - |
747 | srcw[0] = (common->cbraptr + (cc[1 + 1]) * sizeof(sljit_w)); | - |
748 | cc += 1 + 1 + 1; | - |
749 | break; | 0 |
750 | | - |
751 | case OP_CBRAPOS: | - |
752 | case OP_SCBRAPOS: | - |
753 | count = 2; | - |
754 | srcw[1] = (common->cbraptr + (cc[1 + 1]) * sizeof(sljit_w)); | - |
755 | srcw[0] = (common->localptrs[(cc) - common->start]); | - |
756 | do { } while (0); | 0 |
757 | cc += 1 + 1 + 1; | - |
758 | break; | 0 |
759 | | - |
760 | case OP_COND: | - |
761 | | - |
762 | alternative = cc + (cc[1]); | - |
763 | if (*alternative == OP_KETRMAX || *alternative == OP_KETRMIN) never evaluated: *alternative == OP_KETRMAX never evaluated: *alternative == OP_KETRMIN | 0 |
764 | { | - |
765 | count = 1; | - |
766 | srcw[0] = (common->localptrs[(cc) - common->start]); | - |
767 | do { } while (0); | 0 |
768 | } | 0 |
769 | cc += 1 + 1; | - |
770 | break; | 0 |
771 | | - |
772 | default: | - |
773 | cc = next_opcode(common, cc); | - |
774 | do { } while (0); | 0 |
775 | break; | 0 |
776 | } | - |
777 | break; | 0 |
778 | | - |
779 | case end: | - |
780 | do { } while (0); | 0 |
781 | break; | 0 |
782 | } | - |
783 | | - |
784 | while (count > 0) never evaluated: count > 0 | 0 |
785 | { | - |
786 | count--; | - |
787 | if (save) | 0 |
788 | { | - |
789 | if (tmp1next) never evaluated: tmp1next | 0 |
790 | { | - |
791 | if (!tmp1empty) never evaluated: !tmp1empty | 0 |
792 | { | - |
793 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (stackptr), (1), (0)); | - |
794 | stackptr += sizeof(sljit_w); | - |
795 | } | 0 |
796 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (srcw[count])); | - |
797 | tmp1empty = 0; | - |
798 | tmp1next = 0; | - |
799 | } | 0 |
800 | else | - |
801 | { | - |
802 | if (!tmp2empty) never evaluated: !tmp2empty | 0 |
803 | { | - |
804 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (stackptr), (3), (0)); | - |
805 | stackptr += sizeof(sljit_w); | - |
806 | } | 0 |
807 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (11))), (srcw[count])); | - |
808 | tmp2empty = 0; | - |
809 | tmp1next = 1; | - |
810 | } | 0 |
811 | } | - |
812 | else | - |
813 | { | - |
814 | if (tmp1next) never evaluated: tmp1next | 0 |
815 | { | - |
816 | do { } while (0); | 0 |
817 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (srcw[count]), (1), (0)); | - |
818 | tmp1empty = stackptr >= stacktop; | - |
819 | if (!tmp1empty) never evaluated: !tmp1empty | 0 |
820 | { | - |
821 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (stackptr)); | - |
822 | stackptr += sizeof(sljit_w); | - |
823 | } | 0 |
824 | tmp1next = 0; | - |
825 | } | 0 |
826 | else | - |
827 | { | - |
828 | do { } while (0); | 0 |
829 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (srcw[count]), (3), (0)); | - |
830 | tmp2empty = stackptr >= stacktop; | - |
831 | if (!tmp2empty) never evaluated: !tmp2empty | 0 |
832 | { | - |
833 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (2))), (stackptr)); | - |
834 | stackptr += sizeof(sljit_w); | - |
835 | } | 0 |
836 | tmp1next = 1; | - |
837 | } | 0 |
838 | } | - |
839 | } | - |
840 | } | 0 |
841 | | - |
842 | if (save) | 0 |
843 | { | - |
844 | if (tmp1next) never evaluated: tmp1next | 0 |
845 | { | - |
846 | if (!tmp1empty) never evaluated: !tmp1empty | 0 |
847 | { | - |
848 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (stackptr), (1), (0)); | - |
849 | stackptr += sizeof(sljit_w); | - |
850 | } | 0 |
851 | if (!tmp2empty) never evaluated: !tmp2empty | 0 |
852 | { | - |
853 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (stackptr), (3), (0)); | - |
854 | stackptr += sizeof(sljit_w); | - |
855 | } | 0 |
856 | } | 0 |
857 | else | - |
858 | { | - |
859 | if (!tmp2empty) never evaluated: !tmp2empty | 0 |
860 | { | - |
861 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (stackptr), (3), (0)); | - |
862 | stackptr += sizeof(sljit_w); | - |
863 | } | 0 |
864 | if (!tmp1empty) never evaluated: !tmp1empty | 0 |
865 | { | - |
866 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (stackptr), (1), (0)); | - |
867 | stackptr += sizeof(sljit_w); | - |
868 | } | 0 |
869 | } | 0 |
870 | } | - |
871 | do { } while (0); | 0 |
872 | } | 0 |
873 | | - |
874 | static __inline BOOL ispowerof2(unsigned int value) | - |
875 | { | - |
876 | return (value & (value - 1)) == 0; never executed: return (value & (value - 1)) == 0; | 0 |
877 | } | - |
878 | | - |
879 | static __inline void set_jumps(jump_list *list, struct sljit_label *label) | - |
880 | { | - |
881 | while (list) evaluated: list yes Evaluation Count:65 | yes Evaluation Count:57 |
| 57-65 |
882 | { | - |
883 | | - |
884 | | - |
885 | sljit_set_label(list->jump, label); | - |
886 | list = list->next; | - |
887 | } executed: } Execution Count:65 | 65 |
888 | } executed: } Execution Count:57 | 57 |
889 | | - |
890 | static __inline void add_jump(struct sljit_compiler *compiler, jump_list **list, struct sljit_jump* jump) | - |
891 | { | - |
892 | jump_list *list_item = sljit_alloc_memory(compiler, sizeof(jump_list)); | - |
893 | if (list_item) partially evaluated: list_item yes Evaluation Count:65 | no Evaluation Count:0 |
| 0-65 |
894 | { | - |
895 | list_item->next = *list; | - |
896 | list_item->jump = jump; | - |
897 | *list = list_item; | - |
898 | } executed: } Execution Count:65 | 65 |
899 | } executed: } Execution Count:65 | 65 |
900 | | - |
901 | static void add_stub(compiler_common *common, enum stub_types type, int data, struct sljit_jump *start) | - |
902 | { | - |
903 | struct sljit_compiler *compiler = common->compiler; | - |
904 | stub_list* list_item = sljit_alloc_memory(compiler, sizeof(stub_list)); | - |
905 | | - |
906 | if (list_item) partially evaluated: list_item yes Evaluation Count:11 | no Evaluation Count:0 |
| 0-11 |
907 | { | - |
908 | list_item->type = type; | - |
909 | list_item->data = data; | - |
910 | list_item->start = start; | - |
911 | list_item->leave = sljit_emit_label(compiler); | - |
912 | list_item->next = common->stubs; | - |
913 | common->stubs = list_item; | - |
914 | } executed: } Execution Count:11 | 11 |
915 | } executed: } Execution Count:11 | 11 |
916 | | - |
917 | static void flush_stubs(compiler_common *common) | - |
918 | { | - |
919 | struct sljit_compiler *compiler = common->compiler; | - |
920 | stub_list* list_item = common->stubs; | - |
921 | | - |
922 | while (list_item) evaluated: list_item yes Evaluation Count:11 | yes Evaluation Count:15 |
| 11-15 |
923 | { | - |
924 | sljit_set_label((list_item->start), sljit_emit_label(compiler)); | - |
925 | switch(list_item->type) | - |
926 | { | - |
927 | case stack_alloc: | - |
928 | add_jump(compiler, &common->stackalloc, sljit_emit_jump(compiler, (23))); | - |
929 | break; executed: break; Execution Count:11 | 11 |
930 | } | - |
931 | sljit_set_label(sljit_emit_jump(compiler, (22)), (list_item->leave)); | - |
932 | list_item = list_item->next; | - |
933 | } executed: } Execution Count:11 | 11 |
934 | common->stubs = ((void *)0); | - |
935 | } executed: } Execution Count:15 | 15 |
936 | | - |
937 | static __inline void decrease_call_count(compiler_common *common) | - |
938 | { | - |
939 | struct sljit_compiler *compiler = common->compiler; | - |
940 | | - |
941 | sljit_emit_op2(compiler, (25 | 0x0200), (10), (0), (10), (0), (0x200), (1)); | - |
942 | add_jump(compiler, &common->calllimit, sljit_emit_jump(compiler, (0))); | - |
943 | } executed: } Execution Count:8 | 8 |
944 | | - |
945 | static __inline void allocate_stack(compiler_common *common, int size) | - |
946 | { | - |
947 | | - |
948 | struct sljit_compiler *compiler = common->compiler; | - |
949 | | - |
950 | sljit_emit_op2(compiler, (23), (2), (0), (2), (0), (0x200), (size * sizeof(sljit_w))); | - |
951 | | - |
952 | | - |
953 | | - |
954 | | - |
955 | | - |
956 | | - |
957 | | - |
958 | add_stub(common, stack_alloc, 0, sljit_emit_cmp(compiler, (4), (2), (0), (8), (0))); | - |
959 | } executed: } Execution Count:11 | 11 |
960 | | - |
961 | static __inline void free_stack(compiler_common *common, int size) | - |
962 | { | - |
963 | struct sljit_compiler *compiler = common->compiler; | - |
964 | sljit_emit_op2(compiler, (25), (2), (0), (2), (0), (0x200), (size * sizeof(sljit_w))); | - |
965 | } executed: } Execution Count:10 | 10 |
966 | | - |
967 | static __inline void reset_ovector(compiler_common *common, int length) | - |
968 | { | - |
969 | struct sljit_compiler *compiler = common->compiler; | - |
970 | struct sljit_label *loop; | - |
971 | int i; | - |
972 | | - |
973 | | - |
974 | sljit_emit_op2(compiler, (25), (1), (0), ((0x100 | (6))), (((sljit_w)(&((jit_arguments*)0x10)->begin) - 0x10)), (0x200), (((1) << 1))); | - |
975 | if (length < 8) partially evaluated: length < 8 yes Evaluation Count:15 | no Evaluation Count:0 |
| 0-15 |
976 | { | - |
977 | for (i = 0; i < length; i++) evaluated: i < length yes Evaluation Count:30 | yes Evaluation Count:15 |
| 15-30 |
978 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (i) * sizeof(sljit_w))), (1), (0)); executed: sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (i) * sizeof(sljit_w))), (1), (0)); Execution Count:30 | 30 |
979 | } executed: } Execution Count:15 | 15 |
980 | else | - |
981 | { | - |
982 | sljit_emit_op2(compiler, (23), (2), (0), (11), (0), (0x200), ((8 * sizeof(sljit_w)) - sizeof(sljit_w))); | - |
983 | sljit_emit_op1(compiler, (6), (3), (0), (0x200), (length)); | - |
984 | loop = sljit_emit_label(compiler); | - |
985 | sljit_emit_op1(compiler, (13), ((0x100 | (2))), (sizeof(sljit_w)), (1), (0)); | - |
986 | sljit_emit_op2(compiler, (25 | 0x0200), (3), (0), (3), (0), (0x200), (1)); | - |
987 | sljit_set_label(sljit_emit_jump(compiler, (1)), (loop)); | - |
988 | } | 0 |
989 | } | - |
990 | | - |
991 | static __inline void copy_ovector(compiler_common *common, int topbracket) | - |
992 | { | - |
993 | struct sljit_compiler *compiler = common->compiler; | - |
994 | struct sljit_label *loop; | - |
995 | struct sljit_jump *earlyexit; | - |
996 | | - |
997 | | - |
998 | sljit_emit_op1(compiler, (6), (8), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (1) * sizeof(sljit_w)))); | - |
999 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (1) * sizeof(sljit_w))), (6), (0)); | - |
1000 | | - |
1001 | sljit_emit_op1(compiler, (6), (1), (0), (9), (0)); | - |
1002 | sljit_emit_op1(compiler, (12), (2), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->offsetcount) - 0x10))); | - |
1003 | sljit_emit_op2(compiler, (25), (3), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->offsets) - 0x10)), (0x200), (sizeof(int))); | - |
1004 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->begin) - 0x10))); | - |
1005 | sljit_emit_op2(compiler, (23), (6), (0), (11), (0), (0x200), ((8 * sizeof(sljit_w)))); | - |
1006 | | - |
1007 | earlyexit = sljit_emit_cmp(compiler, (0), (2), (0), (0x200), (0)); | - |
1008 | loop = sljit_emit_label(compiler); | - |
1009 | sljit_emit_op2(compiler, (25), (7), (0), ((0x100 | (6))), (0), (1), (0)); | - |
1010 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (sizeof(sljit_w))); | - |
1011 | | - |
1012 | | - |
1013 | sljit_emit_op2(compiler, (33), (7), (0), (7), (0), (0x200), (1)); | - |
1014 | | - |
1015 | sljit_emit_op1(compiler, (19), ((0x100 | (3))), (sizeof(int)), (7), (0)); | - |
1016 | sljit_emit_op2(compiler, (25 | 0x0200), (2), (0), (2), (0), (0x200), (1)); | - |
1017 | sljit_set_label(sljit_emit_jump(compiler, (1)), (loop)); | - |
1018 | sljit_set_label((earlyexit), sljit_emit_label(compiler)); | - |
1019 | | - |
1020 | | - |
1021 | if (topbracket > 1) partially evaluated: topbracket > 1 no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
1022 | { | - |
1023 | sljit_emit_op2(compiler, (23), (1), (0), (11), (0), (0x200), ((8 * sizeof(sljit_w)) + topbracket * 2 * sizeof(sljit_w))); | - |
1024 | sljit_emit_op1(compiler, (6), (2), (0), (0x200), (topbracket + 1)); | - |
1025 | | - |
1026 | | - |
1027 | loop = sljit_emit_label(compiler); | - |
1028 | sljit_emit_op1(compiler, (13), (3), (0), ((0x100 | (1))), (-(2 * (sljit_w)sizeof(sljit_w)))); | - |
1029 | sljit_emit_op2(compiler, (25), (2), (0), (2), (0), (0x200), (1)); | - |
1030 | sljit_set_label(sljit_emit_cmp(compiler, (0), (3), (0), (8), (0)), (loop)); | - |
1031 | sljit_emit_op1(compiler, (6), (1), (0), (2), (0)); | - |
1032 | } | 0 |
1033 | else | - |
1034 | sljit_emit_op1(compiler, (6), (1), (0), (0x200), (1)); executed: sljit_emit_op1(compiler, (6), (1), (0), (0x200), (1)); Execution Count:15 | 15 |
1035 | } | - |
1036 | | - |
1037 | static __inline BOOL char_has_othercase(compiler_common *common, pcre_uchar* cc) | - |
1038 | { | - |
1039 | | - |
1040 | unsigned int c; | - |
1041 | | - |
1042 | | - |
1043 | if (common->utf) never evaluated: common->utf | 0 |
1044 | { | - |
1045 | c = *cc; if ((c & 0xfc00) == 0xd800) { c = (((c & 0x3ff) << 10) | (cc[1] & 0x3ff)) + 0x10000; };; never evaluated: (c & 0xfc00) == 0xd800 | 0 |
1046 | if (c > 127) | 0 |
1047 | { | - |
1048 | | - |
1049 | return c != (c + (_pcre16_ucd_records + _pcre16_ucd_stage2[_pcre16_ucd_stage1[(c) / 128] * 128 + (c) % 128])->other_case); never executed: return c != (c + (_pcre16_ucd_records + _pcre16_ucd_stage2[_pcre16_ucd_stage1[(c) / 128] * 128 + (c) % 128])->other_case); | 0 |
1050 | | - |
1051 | | - |
1052 | | - |
1053 | } | - |
1054 | | - |
1055 | return common->fcc[c] != c; never executed: return common->fcc[c] != c; | 0 |
1056 | | - |
1057 | } | - |
1058 | else | - |
1059 | | - |
1060 | c = *cc; | 0 |
1061 | return ((c) <= 255u) ? common->fcc[c] != c : 0; never executed: return ((c) <= 255u) ? common->fcc[c] != c : 0; | 0 |
1062 | } | - |
1063 | | - |
1064 | static __inline unsigned int char_othercase(compiler_common *common, unsigned int c) | - |
1065 | { | - |
1066 | | - |
1067 | | - |
1068 | if (common->utf && c > 127) never evaluated: common->utf | 0 |
1069 | { | - |
1070 | | - |
1071 | return (c + (_pcre16_ucd_records + _pcre16_ucd_stage2[_pcre16_ucd_stage1[(c) / 128] * 128 + (c) % 128])->other_case); never executed: return (c + (_pcre16_ucd_records + _pcre16_ucd_stage2[_pcre16_ucd_stage1[(c) / 128] * 128 + (c) % 128])->other_case); | 0 |
1072 | | - |
1073 | | - |
1074 | | - |
1075 | } | - |
1076 | | - |
1077 | return (((c) <= 255u)? ((common->fcc)[c]):(c)); never executed: return (((c) <= 255u)? ((common->fcc)[c]):(c)); | 0 |
1078 | } | - |
1079 | | - |
1080 | static unsigned int char_get_othercase_bit(compiler_common *common, pcre_uchar* cc) | - |
1081 | { | - |
1082 | | - |
1083 | unsigned int c, oc, bit; | - |
1084 | | - |
1085 | | - |
1086 | | - |
1087 | | - |
1088 | | - |
1089 | if (common->utf) never evaluated: common->utf | 0 |
1090 | { | - |
1091 | c = *cc; if ((c & 0xfc00) == 0xd800) { c = (((c & 0x3ff) << 10) | (cc[1] & 0x3ff)) + 0x10000; };; never evaluated: (c & 0xfc00) == 0xd800 | 0 |
1092 | if (c <= 127) never evaluated: c <= 127 | 0 |
1093 | oc = common->fcc[c]; never executed: oc = common->fcc[c]; | 0 |
1094 | else | - |
1095 | { | - |
1096 | | - |
1097 | oc = (c + (_pcre16_ucd_records + _pcre16_ucd_stage2[_pcre16_ucd_stage1[(c) / 128] * 128 + (c) % 128])->other_case); | - |
1098 | | - |
1099 | | - |
1100 | | - |
1101 | } | 0 |
1102 | } | - |
1103 | else | - |
1104 | { | - |
1105 | c = *cc; | - |
1106 | oc = (((c) <= 255u)? ((common->fcc)[c]):(c)); never evaluated: ((c) <= 255u) | 0 |
1107 | } | 0 |
1108 | | - |
1109 | | - |
1110 | | - |
1111 | | - |
1112 | | - |
1113 | do { } while (0); | 0 |
1114 | | - |
1115 | bit = c ^ oc; | - |
1116 | | - |
1117 | if (c <= 127 && bit == 0x20) never evaluated: c <= 127 never evaluated: bit == 0x20 | 0 |
1118 | return (0 << 8) | 0x20; never executed: return (0 << 8) | 0x20; | 0 |
1119 | | - |
1120 | | - |
1121 | if (!ispowerof2(bit)) never evaluated: !ispowerof2(bit) | 0 |
1122 | return 0; never executed: return 0; | 0 |
1123 | if (common->utf && c > 65535) never evaluated: common->utf never evaluated: c > 65535 | 0 |
1124 | { | - |
1125 | if (bit >= (1 << 10)) never evaluated: bit >= (1 << 10) | 0 |
1126 | bit >>= 10; never executed: bit >>= 10; | 0 |
1127 | else | - |
1128 | return (bit < 256) ? ((2 << 8) | bit) : ((3 << 8) | (bit >> 8)); never executed: return (bit < 256) ? ((2 << 8) | bit) : ((3 << 8) | (bit >> 8)); | 0 |
1129 | } | - |
1130 | | - |
1131 | return (bit < 256) ? ((0 << 8) | bit) : ((1 << 8) | (bit >> 8)); never executed: return (bit < 256) ? ((0 << 8) | bit) : ((1 << 8) | (bit >> 8)); | 0 |
1132 | | - |
1133 | | - |
1134 | | - |
1135 | } | - |
1136 | | - |
1137 | static __inline void check_input_end(compiler_common *common, jump_list **fallbacks) | - |
1138 | { | - |
1139 | struct sljit_compiler *compiler = common->compiler; | - |
1140 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (3), (6), (0), (7), (0))); | - |
1141 | } executed: } Execution Count:6 | 6 |
1142 | | - |
1143 | static void read_char(compiler_common *common) | - |
1144 | { | - |
1145 | | - |
1146 | | - |
1147 | struct sljit_compiler *compiler = common->compiler; | - |
1148 | | - |
1149 | struct sljit_jump *jump; | - |
1150 | | - |
1151 | | - |
1152 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (0)); | - |
1153 | | - |
1154 | if (common->utf) partially evaluated: common->utf yes Evaluation Count:10 | no Evaluation Count:0 |
| 0-10 |
1155 | { | - |
1156 | | - |
1157 | | - |
1158 | | - |
1159 | | - |
1160 | jump = sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (0xd800)); | - |
1161 | | - |
1162 | | - |
1163 | add_jump(compiler, &common->utfreadchar, sljit_emit_jump(compiler, (23))); | - |
1164 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
1165 | } executed: } Execution Count:10 | 10 |
1166 | | - |
1167 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
1168 | } executed: } Execution Count:10 | 10 |
1169 | | - |
1170 | static void peek_char(compiler_common *common) | - |
1171 | { | - |
1172 | | - |
1173 | | - |
1174 | struct sljit_compiler *compiler = common->compiler; | - |
1175 | | - |
1176 | struct sljit_jump *jump; | - |
1177 | | - |
1178 | | - |
1179 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (0)); | - |
1180 | | - |
1181 | if (common->utf) partially evaluated: common->utf yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
1182 | { | - |
1183 | | - |
1184 | | - |
1185 | | - |
1186 | | - |
1187 | jump = sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (0xd800)); | - |
1188 | | - |
1189 | | - |
1190 | add_jump(compiler, &common->utfreadchar, sljit_emit_jump(compiler, (23))); | - |
1191 | sljit_emit_op2(compiler, (25), (6), (0), (6), (0), (3), (0)); | - |
1192 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
1193 | } executed: } Execution Count:1 | 1 |
1194 | | - |
1195 | } executed: } Execution Count:1 | 1 |
1196 | | - |
1197 | static void read_char8_type(compiler_common *common) | - |
1198 | { | - |
1199 | | - |
1200 | struct sljit_compiler *compiler = common->compiler; | - |
1201 | | - |
1202 | struct sljit_jump *jump; | - |
1203 | | - |
1204 | | - |
1205 | | - |
1206 | if (common->utf) never evaluated: common->utf | 0 |
1207 | { | - |
1208 | sljit_emit_op1(compiler, (9), (3), (0), ((0x100 | (6))), (0)); | - |
1209 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
1210 | sljit_emit_op1(compiler, (6), (1), (0), (0x200), (0)); | - |
1211 | jump = sljit_emit_cmp(compiler, (4), (3), (0), (0x200), (255)); | - |
1212 | sljit_emit_op1(compiler, (7), (1), (0), ((0x100 | (3))), (common->ctypes)); | - |
1213 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
1214 | | - |
1215 | sljit_emit_op2(compiler, (28), (3), (0), (3), (0), (0x200), (0xfc00)); | - |
1216 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (3), (0), (0x200), (0xd800)); | - |
1217 | sljit_emit_cond_value(compiler, (6), (3), (0), (0)); | - |
1218 | sljit_emit_op2(compiler, (31), (3), (0), (3), (0), (0x200), (1)); | - |
1219 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (3), (0)); | - |
1220 | | - |
1221 | | - |
1222 | return; | 0 |
1223 | } | - |
1224 | | - |
1225 | sljit_emit_op1(compiler, (9), (3), (0), ((0x100 | (6))), (0)); | - |
1226 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
1227 | | - |
1228 | | - |
1229 | sljit_emit_op1(compiler, (6), (1), (0), (0x200), (0)); | - |
1230 | jump = sljit_emit_cmp(compiler, (4), (3), (0), (0x200), (255)); | - |
1231 | | - |
1232 | sljit_emit_op1(compiler, (7), (1), (0), ((0x100 | (3))), (common->ctypes)); | - |
1233 | | - |
1234 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
1235 | | - |
1236 | } | 0 |
1237 | | - |
1238 | static void skip_char_back(compiler_common *common) | - |
1239 | { | - |
1240 | | - |
1241 | struct sljit_compiler *compiler = common->compiler; | - |
1242 | if (common->utf) partially evaluated: common->utf yes Evaluation Count:12 | no Evaluation Count:0 |
| 0-12 |
1243 | { | - |
1244 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (-((1) << 1))); | - |
1245 | sljit_emit_op2(compiler, (25), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
1246 | | - |
1247 | sljit_emit_op2(compiler, (28), (1), (0), (1), (0), (0x200), (0xfc00)); | - |
1248 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0xdc00)); | - |
1249 | sljit_emit_cond_value(compiler, (6), (1), (0), (0)); | - |
1250 | sljit_emit_op2(compiler, (31), (1), (0), (1), (0), (0x200), (1)); | - |
1251 | sljit_emit_op2(compiler, (25), (6), (0), (6), (0), (1), (0)); | - |
1252 | return; executed: return; Execution Count:12 | 12 |
1253 | } | - |
1254 | | - |
1255 | sljit_emit_op2(compiler, (25), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
1256 | } | 0 |
1257 | | - |
1258 | static void check_newlinechar(compiler_common *common, int nltype, jump_list **fallbacks, BOOL jumpiftrue) | - |
1259 | { | - |
1260 | | - |
1261 | struct sljit_compiler *compiler = common->compiler; | - |
1262 | | - |
1263 | if (nltype == 1) partially evaluated: nltype == 1 no Evaluation Count:0 | yes Evaluation Count:6 |
| 0-6 |
1264 | { | - |
1265 | add_jump(compiler, &common->anynewline, sljit_emit_jump(compiler, (23))); | - |
1266 | add_jump(compiler, fallbacks, sljit_emit_jump(compiler, (jumpiftrue ? 1 : 0))); | - |
1267 | } | 0 |
1268 | else if (nltype == 2) evaluated: nltype == 2 yes Evaluation Count:2 | yes Evaluation Count:4 |
| 2-4 |
1269 | { | - |
1270 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), ('\015')); | - |
1271 | sljit_emit_cond_value(compiler, (6), (3), (0), (0)); | - |
1272 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), ('\012')); | - |
1273 | sljit_emit_cond_value(compiler, (29 | 0x0200), (3), (0), (0)); | - |
1274 | add_jump(compiler, fallbacks, sljit_emit_jump(compiler, (jumpiftrue ? 1 : 0))); | - |
1275 | } executed: } Execution Count:2 | 2 |
1276 | else | - |
1277 | { | - |
1278 | do { } while (0); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:4 |
executed: } Execution Count:4 | 0-4 |
1279 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (jumpiftrue ? 0 : 1), (1), (0), (0x200), (common->newline))); | - |
1280 | } executed: } Execution Count:4 | 4 |
1281 | } | - |
1282 | static void do_utfreadchar(compiler_common *common) | - |
1283 | { | - |
1284 | | - |
1285 | | - |
1286 | struct sljit_compiler *compiler = common->compiler; | - |
1287 | struct sljit_jump *jump; | - |
1288 | | - |
1289 | sljit_emit_fast_enter(compiler, 4, 0, 1, 5, 5, common->localsize); | - |
1290 | jump = sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (0xdc00)); | - |
1291 | | - |
1292 | sljit_emit_fast_return(compiler, 4, 0); | - |
1293 | | - |
1294 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
1295 | | - |
1296 | sljit_emit_op1(compiler, (9), (3), (0), ((0x100 | (6))), (((1) << 1))); | - |
1297 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
1298 | sljit_emit_op2(compiler, (28), (1), (0), (1), (0), (0x200), (0x3ff)); | - |
1299 | sljit_emit_op2(compiler, (31), (1), (0), (1), (0), (0x200), (10)); | - |
1300 | sljit_emit_op2(compiler, (28), (3), (0), (3), (0), (0x200), (0x3ff)); | - |
1301 | sljit_emit_op2(compiler, (29), (1), (0), (1), (0), (3), (0)); | - |
1302 | sljit_emit_op1(compiler, (6), (3), (0), (0x200), (((1) << 1))); | - |
1303 | sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (0x10000)); | - |
1304 | sljit_emit_fast_return(compiler, 4, 0); | - |
1305 | } executed: } Execution Count:7 | 7 |
1306 | static void do_getucd(compiler_common *common) | - |
1307 | { | - |
1308 | | - |
1309 | | - |
1310 | struct sljit_compiler *compiler = common->compiler; | - |
1311 | | - |
1312 | do { } while (0); | 0 |
1313 | | - |
1314 | sljit_emit_fast_enter(compiler, 4, 0, 1, 5, 5, common->localsize); | - |
1315 | sljit_emit_op2(compiler, (32), (3), (0), (1), (0), (0x200), (7)); | - |
1316 | sljit_emit_op1(compiler, (7), (3), (0), ((0x100 | (3))), ((sljit_w)_pcre16_ucd_stage1)); | - |
1317 | sljit_emit_op2(compiler, (28), (1), (0), (1), (0), (0x200), (127)); | - |
1318 | sljit_emit_op2(compiler, (31), (3), (0), (3), (0), (0x200), (7)); | - |
1319 | sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (3), (0)); | - |
1320 | sljit_emit_op1(compiler, (6), (3), (0), (0x200), ((sljit_w)_pcre16_ucd_stage2)); | - |
1321 | sljit_emit_op1(compiler, (9), (3), (0), ((0x100 | (3) | ((1) << 4))), (1)); | - |
1322 | sljit_emit_op1(compiler, (6), (1), (0), (0x200), ((sljit_w)_pcre16_ucd_records + ((sljit_w)(&((ucd_record*)0x10)->chartype) - 0x10))); | - |
1323 | sljit_emit_op1(compiler, (7), (1), (0), ((0x100 | (1) | ((3) << 4))), (3)); | - |
1324 | sljit_emit_fast_return(compiler, 4, 0); | - |
1325 | } | 0 |
1326 | | - |
1327 | | - |
1328 | static __inline struct sljit_label *mainloop_entry(compiler_common *common, BOOL hascrorlf, BOOL firstline) | - |
1329 | { | - |
1330 | struct sljit_compiler *compiler = common->compiler; | - |
1331 | struct sljit_label *mainloop; | - |
1332 | struct sljit_label *newlinelabel = ((void *)0); | - |
1333 | struct sljit_jump *start; | - |
1334 | struct sljit_jump *end = ((void *)0); | - |
1335 | struct sljit_jump *nl = ((void *)0); | - |
1336 | | - |
1337 | struct sljit_jump *singlechar; | - |
1338 | | - |
1339 | jump_list *newline = ((void *)0); | - |
1340 | BOOL newlinecheck = 0; | - |
1341 | BOOL readuchar = 0; | - |
1342 | | - |
1343 | if (!(hascrorlf || firstline) && (common->nltype == 1 || partially evaluated: hascrorlf no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: firstline no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: common->nltype == 1 no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
1344 | common->nltype == 2 || common->newline > 255)) evaluated: common->nltype == 2 yes Evaluation Count:1 | yes Evaluation Count:14 |
evaluated: common->newline > 255 yes Evaluation Count:2 | yes Evaluation Count:12 |
| 1-14 |
1345 | newlinecheck = 1; executed: newlinecheck = 1; Execution Count:3 | 3 |
1346 | | - |
1347 | if (firstline) partially evaluated: firstline no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
1348 | { | - |
1349 | | - |
1350 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((0 * sizeof(sljit_w))), (6), (0)); | - |
1351 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((7 * sizeof(sljit_w))), (7), (0)); | - |
1352 | | - |
1353 | if (common->nltype == 0 && common->newline > 255) never evaluated: common->nltype == 0 never evaluated: common->newline > 255 | 0 |
1354 | { | - |
1355 | mainloop = sljit_emit_label(compiler); | - |
1356 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
1357 | end = sljit_emit_cmp(compiler, (3), (6), (0), (7), (0)); | - |
1358 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (((-1) << 1))); | - |
1359 | sljit_emit_op1(compiler, (9), (3), (0), ((0x100 | (6))), (((0) << 1))); | - |
1360 | sljit_set_label(sljit_emit_cmp(compiler, (1), (1), (0), (0x200), ((common->newline >> 8) & 0xff)), (mainloop)); | - |
1361 | sljit_set_label(sljit_emit_cmp(compiler, (1), (3), (0), (0x200), (common->newline & 0xff)), (mainloop)); | - |
1362 | sljit_emit_op2(compiler, (25), ((0x100 | (11))), ((7 * sizeof(sljit_w))), (6), (0), (0x200), (((1) << 1))); | - |
1363 | } | 0 |
1364 | else | - |
1365 | { | - |
1366 | end = sljit_emit_cmp(compiler, (3), (6), (0), (7), (0)); | - |
1367 | mainloop = sljit_emit_label(compiler); | - |
1368 | | - |
1369 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((7 * sizeof(sljit_w))), (6), (0)); | - |
1370 | read_char(common); | - |
1371 | check_newlinechar(common, common->nltype, &newline, 1); | - |
1372 | sljit_set_label(sljit_emit_cmp(compiler, (2), (6), (0), (7), (0)), (mainloop)); | - |
1373 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((7 * sizeof(sljit_w))), (6), (0)); | - |
1374 | set_jumps(newline, sljit_emit_label(compiler)); | - |
1375 | } | 0 |
1376 | | - |
1377 | sljit_set_label((end), sljit_emit_label(compiler)); | - |
1378 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (11))), ((0 * sizeof(sljit_w)))); | - |
1379 | } | 0 |
1380 | | - |
1381 | start = sljit_emit_jump(compiler, (22)); | - |
1382 | | - |
1383 | if (newlinecheck) evaluated: newlinecheck yes Evaluation Count:3 | yes Evaluation Count:12 |
| 3-12 |
1384 | { | - |
1385 | newlinelabel = sljit_emit_label(compiler); | - |
1386 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
1387 | end = sljit_emit_cmp(compiler, (3), (6), (0), (7), (0)); | - |
1388 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (0)); | - |
1389 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (common->newline & 0xff)); | - |
1390 | sljit_emit_cond_value(compiler, (6), (1), (0), (0)); | - |
1391 | | - |
1392 | sljit_emit_op2(compiler, (31), (1), (0), (1), (0), (0x200), (1)); | - |
1393 | | - |
1394 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (1), (0)); | - |
1395 | nl = sljit_emit_jump(compiler, (22)); | - |
1396 | } executed: } Execution Count:3 | 3 |
1397 | | - |
1398 | mainloop = sljit_emit_label(compiler); | - |
1399 | | - |
1400 | | - |
1401 | | - |
1402 | if (common->utf) readuchar = 1; partially evaluated: common->utf yes Evaluation Count:15 | no Evaluation Count:0 |
executed: readuchar = 1; Execution Count:15 | 0-15 |
1403 | | - |
1404 | if (newlinecheck) readuchar = 1; evaluated: newlinecheck yes Evaluation Count:3 | yes Evaluation Count:12 |
executed: readuchar = 1; Execution Count:3 | 3-12 |
1405 | | - |
1406 | if (readuchar) partially evaluated: readuchar yes Evaluation Count:15 | no Evaluation Count:0 |
| 0-15 |
1407 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (0)); executed: sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (0)); Execution Count:15 | 15 |
1408 | | - |
1409 | if (newlinecheck) evaluated: newlinecheck yes Evaluation Count:3 | yes Evaluation Count:12 |
| 3-12 |
1410 | sljit_set_label(sljit_emit_cmp(compiler, (0), (1), (0), (0x200), ((common->newline >> 8) & 0xff)), (newlinelabel)); executed: sljit_set_label(sljit_emit_cmp(compiler, (0), (1), (0), (0x200), ((common->newline >> 8) & 0xff)), (newlinelabel)); Execution Count:3 | 3 |
1411 | | - |
1412 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
1413 | if (common->utf) partially evaluated: common->utf yes Evaluation Count:15 | no Evaluation Count:0 |
| 0-15 |
1414 | { | - |
1415 | singlechar = sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (0xd800)); | - |
1416 | sljit_emit_op2(compiler, (28), (1), (0), (1), (0), (0x200), (0xfc00)); | - |
1417 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0xd800)); | - |
1418 | sljit_emit_cond_value(compiler, (6), (1), (0), (0)); | - |
1419 | sljit_emit_op2(compiler, (31), (1), (0), (1), (0), (0x200), (1)); | - |
1420 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (1), (0)); | - |
1421 | sljit_set_label((singlechar), sljit_emit_label(compiler)); | - |
1422 | } executed: } Execution Count:15 | 15 |
1423 | | - |
1424 | sljit_set_label((start), sljit_emit_label(compiler)); | - |
1425 | | - |
1426 | if (newlinecheck) evaluated: newlinecheck yes Evaluation Count:3 | yes Evaluation Count:12 |
| 3-12 |
1427 | { | - |
1428 | sljit_set_label((end), sljit_emit_label(compiler)); | - |
1429 | sljit_set_label((nl), sljit_emit_label(compiler)); | - |
1430 | } executed: } Execution Count:3 | 3 |
1431 | | - |
1432 | return mainloop; executed: return mainloop; Execution Count:15 | 15 |
1433 | } | - |
1434 | | - |
1435 | static __inline void fast_forward_first_char(compiler_common *common, pcre_uchar first_char, BOOL caseless, BOOL firstline) | - |
1436 | { | - |
1437 | struct sljit_compiler *compiler = common->compiler; | - |
1438 | struct sljit_label *start; | - |
1439 | struct sljit_jump *leave; | - |
1440 | struct sljit_jump *found; | - |
1441 | pcre_uchar oc, bit; | - |
1442 | | - |
1443 | if (firstline) partially evaluated: firstline no Evaluation Count:0 | yes Evaluation Count:6 |
| 0-6 |
1444 | { | - |
1445 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (7), (0)); | - |
1446 | sljit_emit_op1(compiler, (6), (7), (0), ((0x100 | (11))), ((7 * sizeof(sljit_w)))); | - |
1447 | } | 0 |
1448 | | - |
1449 | start = sljit_emit_label(compiler); | - |
1450 | leave = sljit_emit_cmp(compiler, (3), (6), (0), (7), (0)); | - |
1451 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (0)); | - |
1452 | | - |
1453 | oc = first_char; | - |
1454 | if (caseless) partially evaluated: caseless no Evaluation Count:0 | yes Evaluation Count:6 |
| 0-6 |
1455 | { | - |
1456 | oc = (((first_char) <= 255u)? ((common->fcc)[first_char]):(first_char)); never evaluated: ((first_char) <= 255u) | 0 |
1457 | | - |
1458 | if (first_char > 127 && common->utf) never evaluated: first_char > 127 never evaluated: common->utf | 0 |
1459 | oc = (first_char + (_pcre16_ucd_records + _pcre16_ucd_stage2[_pcre16_ucd_stage1[(first_char) / 128] * 128 + (first_char) % 128])->other_case); never executed: oc = (first_char + (_pcre16_ucd_records + _pcre16_ucd_stage2[_pcre16_ucd_stage1[(first_char) / 128] * 128 + (first_char) % 128])->other_case); | 0 |
1460 | | - |
1461 | } | 0 |
1462 | if (first_char == oc) partially evaluated: first_char == oc yes Evaluation Count:6 | no Evaluation Count:0 |
| 0-6 |
1463 | found = sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (first_char)); executed: found = sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (first_char)); Execution Count:6 | 6 |
1464 | else | - |
1465 | { | - |
1466 | bit = first_char ^ oc; | - |
1467 | if (ispowerof2(bit)) never evaluated: ispowerof2(bit) | 0 |
1468 | { | - |
1469 | sljit_emit_op2(compiler, (29), (3), (0), (1), (0), (0x200), (bit)); | - |
1470 | found = sljit_emit_cmp(compiler, (0), (3), (0), (0x200), (first_char | bit)); | - |
1471 | } | 0 |
1472 | else | - |
1473 | { | - |
1474 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (first_char)); | - |
1475 | sljit_emit_cond_value(compiler, (6), (3), (0), (0)); | - |
1476 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (oc)); | - |
1477 | sljit_emit_cond_value(compiler, (29 | 0x0200), (3), (0), (0)); | - |
1478 | found = sljit_emit_jump(compiler, (1)); | - |
1479 | } | 0 |
1480 | } | - |
1481 | | - |
1482 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
1483 | if (common->utf) partially evaluated: common->utf yes Evaluation Count:6 | no Evaluation Count:0 |
| 0-6 |
1484 | { | - |
1485 | sljit_set_label(sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (0xd800)), (start)); | - |
1486 | sljit_emit_op2(compiler, (28), (1), (0), (1), (0), (0x200), (0xfc00)); | - |
1487 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0xd800)); | - |
1488 | sljit_emit_cond_value(compiler, (6), (1), (0), (0)); | - |
1489 | sljit_emit_op2(compiler, (31), (1), (0), (1), (0), (0x200), (1)); | - |
1490 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (1), (0)); | - |
1491 | } executed: } Execution Count:6 | 6 |
1492 | | - |
1493 | sljit_set_label(sljit_emit_jump(compiler, (22)), (start)); | - |
1494 | sljit_set_label((found), sljit_emit_label(compiler)); | - |
1495 | sljit_set_label((leave), sljit_emit_label(compiler)); | - |
1496 | | - |
1497 | if (firstline) partially evaluated: firstline no Evaluation Count:0 | yes Evaluation Count:6 |
| 0-6 |
1498 | sljit_emit_op1(compiler, (6), (7), (0), ((0x100 | (11))), ((2 * sizeof(sljit_w)))); never executed: sljit_emit_op1(compiler, (6), (7), (0), ((0x100 | (11))), ((2 * sizeof(sljit_w)))); | 0 |
1499 | } executed: } Execution Count:6 | 6 |
1500 | | - |
1501 | static __inline void fast_forward_newline(compiler_common *common, BOOL firstline) | - |
1502 | { | - |
1503 | struct sljit_compiler *compiler = common->compiler; | - |
1504 | struct sljit_label *loop; | - |
1505 | struct sljit_jump *lastchar; | - |
1506 | struct sljit_jump *firstchar; | - |
1507 | struct sljit_jump *leave; | - |
1508 | struct sljit_jump *foundcr = ((void *)0); | - |
1509 | struct sljit_jump *notfoundnl; | - |
1510 | jump_list *newline = ((void *)0); | - |
1511 | | - |
1512 | if (firstline) partially evaluated: firstline no Evaluation Count:0 | yes Evaluation Count:5 |
| 0-5 |
1513 | { | - |
1514 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (7), (0)); | - |
1515 | sljit_emit_op1(compiler, (6), (7), (0), ((0x100 | (11))), ((7 * sizeof(sljit_w)))); | - |
1516 | } | 0 |
1517 | | - |
1518 | if (common->nltype == 0 && common->newline > 255) evaluated: common->nltype == 0 yes Evaluation Count:4 | yes Evaluation Count:1 |
evaluated: common->newline > 255 yes Evaluation Count:2 | yes Evaluation Count:2 |
| 1-4 |
1519 | { | - |
1520 | lastchar = sljit_emit_cmp(compiler, (3), (6), (0), (7), (0)); | - |
1521 | sljit_emit_op1(compiler, (6), (1), (0), (9), (0)); | - |
1522 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->str) - 0x10))); | - |
1523 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->begin) - 0x10))); | - |
1524 | firstchar = sljit_emit_cmp(compiler, (5), (6), (0), (3), (0)); | - |
1525 | | - |
1526 | sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (((2) << 1))); | - |
1527 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (6), (0), (1), (0)); | - |
1528 | sljit_emit_cond_value(compiler, (6), (3), (0), (3)); | - |
1529 | | - |
1530 | sljit_emit_op2(compiler, (31), (3), (0), (3), (0), (0x200), (1)); | - |
1531 | | - |
1532 | sljit_emit_op2(compiler, (25), (6), (0), (6), (0), (3), (0)); | - |
1533 | | - |
1534 | loop = sljit_emit_label(compiler); | - |
1535 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
1536 | leave = sljit_emit_cmp(compiler, (3), (6), (0), (7), (0)); | - |
1537 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (((-2) << 1))); | - |
1538 | sljit_emit_op1(compiler, (9), (3), (0), ((0x100 | (6))), (((-1) << 1))); | - |
1539 | sljit_set_label(sljit_emit_cmp(compiler, (1), (1), (0), (0x200), ((common->newline >> 8) & 0xff)), (loop)); | - |
1540 | sljit_set_label(sljit_emit_cmp(compiler, (1), (3), (0), (0x200), (common->newline & 0xff)), (loop)); | - |
1541 | | - |
1542 | sljit_set_label((leave), sljit_emit_label(compiler)); | - |
1543 | sljit_set_label((firstchar), sljit_emit_label(compiler)); | - |
1544 | sljit_set_label((lastchar), sljit_emit_label(compiler)); | - |
1545 | | - |
1546 | if (firstline) partially evaluated: firstline no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
1547 | sljit_emit_op1(compiler, (6), (7), (0), ((0x100 | (11))), ((2 * sizeof(sljit_w)))); never executed: sljit_emit_op1(compiler, (6), (7), (0), ((0x100 | (11))), ((2 * sizeof(sljit_w)))); | 0 |
1548 | return; executed: return; Execution Count:2 | 2 |
1549 | } | - |
1550 | | - |
1551 | sljit_emit_op1(compiler, (6), (1), (0), (9), (0)); | - |
1552 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->str) - 0x10))); | - |
1553 | firstchar = sljit_emit_cmp(compiler, (5), (6), (0), (3), (0)); | - |
1554 | skip_char_back(common); | - |
1555 | | - |
1556 | loop = sljit_emit_label(compiler); | - |
1557 | read_char(common); | - |
1558 | lastchar = sljit_emit_cmp(compiler, (3), (6), (0), (7), (0)); | - |
1559 | if (common->nltype == 1 || common->nltype == 2) partially evaluated: common->nltype == 1 no Evaluation Count:0 | yes Evaluation Count:3 |
evaluated: common->nltype == 2 yes Evaluation Count:1 | yes Evaluation Count:2 |
| 0-3 |
1560 | foundcr = sljit_emit_cmp(compiler, (0), (1), (0), (0x200), ('\015')); executed: foundcr = sljit_emit_cmp(compiler, (0), (1), (0), (0x200), ('\015')); Execution Count:1 | 1 |
1561 | check_newlinechar(common, common->nltype, &newline, 0); | - |
1562 | set_jumps(newline, loop); | - |
1563 | | - |
1564 | if (common->nltype == 1 || common->nltype == 2) partially evaluated: common->nltype == 1 no Evaluation Count:0 | yes Evaluation Count:3 |
evaluated: common->nltype == 2 yes Evaluation Count:1 | yes Evaluation Count:2 |
| 0-3 |
1565 | { | - |
1566 | leave = sljit_emit_jump(compiler, (22)); | - |
1567 | sljit_set_label((foundcr), sljit_emit_label(compiler)); | - |
1568 | notfoundnl = sljit_emit_cmp(compiler, (3), (6), (0), (7), (0)); | - |
1569 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (0)); | - |
1570 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), ('\012')); | - |
1571 | sljit_emit_cond_value(compiler, (6), (1), (0), (0)); | - |
1572 | | - |
1573 | sljit_emit_op2(compiler, (31), (1), (0), (1), (0), (0x200), (1)); | - |
1574 | | - |
1575 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (1), (0)); | - |
1576 | sljit_set_label((notfoundnl), sljit_emit_label(compiler)); | - |
1577 | sljit_set_label((leave), sljit_emit_label(compiler)); | - |
1578 | } executed: } Execution Count:1 | 1 |
1579 | sljit_set_label((lastchar), sljit_emit_label(compiler)); | - |
1580 | sljit_set_label((firstchar), sljit_emit_label(compiler)); | - |
1581 | | - |
1582 | if (firstline) partially evaluated: firstline no Evaluation Count:0 | yes Evaluation Count:3 |
| 0-3 |
1583 | sljit_emit_op1(compiler, (6), (7), (0), ((0x100 | (11))), ((2 * sizeof(sljit_w)))); never executed: sljit_emit_op1(compiler, (6), (7), (0), ((0x100 | (11))), ((2 * sizeof(sljit_w)))); | 0 |
1584 | } executed: } Execution Count:3 | 3 |
1585 | | - |
1586 | static __inline void fast_forward_start_bits(compiler_common *common, sljit_uw start_bits, BOOL firstline) | - |
1587 | { | - |
1588 | struct sljit_compiler *compiler = common->compiler; | - |
1589 | struct sljit_label *start; | - |
1590 | struct sljit_jump *leave; | - |
1591 | struct sljit_jump *found; | - |
1592 | | - |
1593 | struct sljit_jump *jump; | - |
1594 | | - |
1595 | | - |
1596 | if (firstline) never evaluated: firstline | 0 |
1597 | { | - |
1598 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (7), (0)); | - |
1599 | sljit_emit_op1(compiler, (6), (7), (0), ((0x100 | (11))), ((7 * sizeof(sljit_w)))); | - |
1600 | } | 0 |
1601 | | - |
1602 | start = sljit_emit_label(compiler); | - |
1603 | leave = sljit_emit_cmp(compiler, (3), (6), (0), (7), (0)); | - |
1604 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (0)); | - |
1605 | | - |
1606 | if (common->utf) never evaluated: common->utf | 0 |
1607 | sljit_emit_op1(compiler, (6), (5), (0), (1), (0)); never executed: sljit_emit_op1(compiler, (6), (5), (0), (1), (0)); | 0 |
1608 | | - |
1609 | | - |
1610 | jump = sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (255)); | - |
1611 | sljit_emit_op1(compiler, (6), (1), (0), (0x200), (255)); | - |
1612 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
1613 | | - |
1614 | sljit_emit_op2(compiler, (28), (3), (0), (1), (0), (0x200), (0x7)); | - |
1615 | sljit_emit_op2(compiler, (32), (1), (0), (1), (0), (0x200), (3)); | - |
1616 | sljit_emit_op1(compiler, (7), (1), (0), ((0x100 | (1))), (start_bits)); | - |
1617 | sljit_emit_op2(compiler, (31), (3), (0), (0x200), (1), (3), (0)); | - |
1618 | sljit_emit_op2(compiler, (28 | 0x0200), (0), (0), (1), (0), (3), (0)); | - |
1619 | found = sljit_emit_jump(compiler, (1)); | - |
1620 | | - |
1621 | | - |
1622 | if (common->utf) never evaluated: common->utf | 0 |
1623 | sljit_emit_op1(compiler, (6), (1), (0), (5), (0)); never executed: sljit_emit_op1(compiler, (6), (1), (0), (5), (0)); | 0 |
1624 | | - |
1625 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
1626 | if (common->utf) never evaluated: common->utf | 0 |
1627 | { | - |
1628 | sljit_set_label(sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (0xd800)), (start)); | - |
1629 | sljit_emit_op2(compiler, (28), (1), (0), (1), (0), (0x200), (0xfc00)); | - |
1630 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0xd800)); | - |
1631 | sljit_emit_cond_value(compiler, (6), (1), (0), (0)); | - |
1632 | sljit_emit_op2(compiler, (31), (1), (0), (1), (0), (0x200), (1)); | - |
1633 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (1), (0)); | - |
1634 | } | 0 |
1635 | | - |
1636 | sljit_set_label(sljit_emit_jump(compiler, (22)), (start)); | - |
1637 | sljit_set_label((found), sljit_emit_label(compiler)); | - |
1638 | sljit_set_label((leave), sljit_emit_label(compiler)); | - |
1639 | | - |
1640 | if (firstline) never evaluated: firstline | 0 |
1641 | sljit_emit_op1(compiler, (6), (7), (0), ((0x100 | (11))), ((2 * sizeof(sljit_w)))); never executed: sljit_emit_op1(compiler, (6), (7), (0), ((0x100 | (11))), ((2 * sizeof(sljit_w)))); | 0 |
1642 | } | 0 |
1643 | | - |
1644 | static __inline struct sljit_jump *search_requested_char(compiler_common *common, pcre_uchar req_char, BOOL caseless, BOOL has_firstchar) | - |
1645 | { | - |
1646 | struct sljit_compiler *compiler = common->compiler; | - |
1647 | struct sljit_label *loop; | - |
1648 | struct sljit_jump *toolong; | - |
1649 | struct sljit_jump *alreadyfound; | - |
1650 | struct sljit_jump *found; | - |
1651 | struct sljit_jump *foundoc = ((void *)0); | - |
1652 | struct sljit_jump *notfound; | - |
1653 | pcre_uchar oc, bit; | - |
1654 | | - |
1655 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (11))), ((6 * sizeof(sljit_w)))); | - |
1656 | sljit_emit_op2(compiler, (23), (1), (0), (6), (0), (0x200), (1000)); | - |
1657 | toolong = sljit_emit_cmp(compiler, (2), (1), (0), (7), (0)); | - |
1658 | alreadyfound = sljit_emit_cmp(compiler, (2), (6), (0), (3), (0)); | - |
1659 | | - |
1660 | if (has_firstchar) never evaluated: has_firstchar | 0 |
1661 | sljit_emit_op2(compiler, (23), (1), (0), (6), (0), (0x200), (((1) << 1))); never executed: sljit_emit_op2(compiler, (23), (1), (0), (6), (0), (0x200), (((1) << 1))); | 0 |
1662 | else | - |
1663 | sljit_emit_op1(compiler, (6), (1), (0), (6), (0)); never executed: sljit_emit_op1(compiler, (6), (1), (0), (6), (0)); | 0 |
1664 | | - |
1665 | loop = sljit_emit_label(compiler); | - |
1666 | notfound = sljit_emit_cmp(compiler, (3), (1), (0), (7), (0)); | - |
1667 | | - |
1668 | sljit_emit_op1(compiler, (9), (3), (0), ((0x100 | (1))), (0)); | - |
1669 | oc = req_char; | - |
1670 | if (caseless) never evaluated: caseless | 0 |
1671 | { | - |
1672 | oc = (((req_char) <= 255u)? ((common->fcc)[req_char]):(req_char)); never evaluated: ((req_char) <= 255u) | 0 |
1673 | | - |
1674 | if (req_char > 127 && common->utf) never evaluated: req_char > 127 never evaluated: common->utf | 0 |
1675 | oc = (req_char + (_pcre16_ucd_records + _pcre16_ucd_stage2[_pcre16_ucd_stage1[(req_char) / 128] * 128 + (req_char) % 128])->other_case); never executed: oc = (req_char + (_pcre16_ucd_records + _pcre16_ucd_stage2[_pcre16_ucd_stage1[(req_char) / 128] * 128 + (req_char) % 128])->other_case); | 0 |
1676 | | - |
1677 | } | 0 |
1678 | if (req_char == oc) never evaluated: req_char == oc | 0 |
1679 | found = sljit_emit_cmp(compiler, (0), (3), (0), (0x200), (req_char)); never executed: found = sljit_emit_cmp(compiler, (0), (3), (0), (0x200), (req_char)); | 0 |
1680 | else | - |
1681 | { | - |
1682 | bit = req_char ^ oc; | - |
1683 | if (ispowerof2(bit)) never evaluated: ispowerof2(bit) | 0 |
1684 | { | - |
1685 | sljit_emit_op2(compiler, (29), (3), (0), (3), (0), (0x200), (bit)); | - |
1686 | found = sljit_emit_cmp(compiler, (0), (3), (0), (0x200), (req_char | bit)); | - |
1687 | } | 0 |
1688 | else | - |
1689 | { | - |
1690 | found = sljit_emit_cmp(compiler, (0), (3), (0), (0x200), (req_char)); | - |
1691 | foundoc = sljit_emit_cmp(compiler, (0), (3), (0), (0x200), (oc)); | - |
1692 | } | 0 |
1693 | } | - |
1694 | sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (((1) << 1))); | - |
1695 | sljit_set_label(sljit_emit_jump(compiler, (22)), (loop)); | - |
1696 | | - |
1697 | sljit_set_label((found), sljit_emit_label(compiler)); | - |
1698 | if (foundoc) | 0 |
1699 | sljit_set_label((foundoc), sljit_emit_label(compiler)); never executed: sljit_set_label((foundoc), sljit_emit_label(compiler)); | 0 |
1700 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((6 * sizeof(sljit_w))), (1), (0)); | - |
1701 | sljit_set_label((alreadyfound), sljit_emit_label(compiler)); | - |
1702 | sljit_set_label((toolong), sljit_emit_label(compiler)); | - |
1703 | return notfound; never executed: return notfound; | 0 |
1704 | } | - |
1705 | | - |
1706 | static void do_revertframes(compiler_common *common) | - |
1707 | { | - |
1708 | struct sljit_compiler *compiler = common->compiler; | - |
1709 | struct sljit_jump *jump; | - |
1710 | struct sljit_label *mainloop; | - |
1711 | | - |
1712 | sljit_emit_fast_enter(compiler, 4, 0, 1, 5, 5, common->localsize); | - |
1713 | sljit_emit_op1(compiler, (6), (1), (0), (2), (0)); | - |
1714 | | - |
1715 | | - |
1716 | mainloop = sljit_emit_label(compiler); | - |
1717 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (1))), (0)); | - |
1718 | jump = sljit_emit_cmp(compiler, (9), (3), (0), (0x200), (frame_end)); | - |
1719 | sljit_emit_op2(compiler, (23), (3), (0), (3), (0), (11), (0)); | - |
1720 | sljit_emit_op1(compiler, (6), ((0x100 | (3))), (0), ((0x100 | (1))), (sizeof(sljit_w))); | - |
1721 | sljit_emit_op1(compiler, (6), ((0x100 | (3))), (sizeof(sljit_w)), ((0x100 | (1))), (2 * sizeof(sljit_w))); | - |
1722 | sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (3 * sizeof(sljit_w))); | - |
1723 | sljit_set_label(sljit_emit_jump(compiler, (22)), (mainloop)); | - |
1724 | | - |
1725 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
1726 | jump = sljit_emit_cmp(compiler, (1), (3), (0), (0x200), (frame_end)); | - |
1727 | | - |
1728 | sljit_emit_fast_return(compiler, 4, 0); | - |
1729 | | - |
1730 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
1731 | jump = sljit_emit_cmp(compiler, (1), (3), (0), (0x200), (frame_setstrbegin)); | - |
1732 | | - |
1733 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (1))), (sizeof(sljit_w))); | - |
1734 | sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (2 * sizeof(sljit_w))); | - |
1735 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w))), (3), (0)); | - |
1736 | sljit_set_label(sljit_emit_jump(compiler, (22)), (mainloop)); | - |
1737 | | - |
1738 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
1739 | | - |
1740 | sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (2 * sizeof(sljit_w))); | - |
1741 | sljit_set_label(sljit_emit_jump(compiler, (22)), (mainloop)); | - |
1742 | } | 0 |
1743 | | - |
1744 | static void check_wordboundary(compiler_common *common) | - |
1745 | { | - |
1746 | struct sljit_compiler *compiler = common->compiler; | - |
1747 | struct sljit_jump *beginend; | - |
1748 | | - |
1749 | struct sljit_jump *jump; | - |
1750 | | - |
1751 | | - |
1752 | do { } while (0); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:1 |
executed: } Execution Count:1 | 0-1 |
1753 | | - |
1754 | sljit_emit_fast_enter(compiler, (0x100 | (11)), (0 * sizeof(sljit_w)), 1, 5, 5, common->localsize); | - |
1755 | | - |
1756 | sljit_emit_op1(compiler, (6), (1), (0), (9), (0)); | - |
1757 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->begin) - 0x10))); | - |
1758 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((1 * sizeof(sljit_w))), (0x200), (0)); | - |
1759 | beginend = sljit_emit_cmp(compiler, (5), (6), (0), (1), (0)); | - |
1760 | skip_char_back(common); | - |
1761 | read_char(common); | - |
1762 | | - |
1763 | | - |
1764 | | - |
1765 | if (common->use_ucp) partially evaluated: common->use_ucp no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
1766 | { | - |
1767 | sljit_emit_op1(compiler, (6), (3), (0), (0x200), (1)); | - |
1768 | jump = sljit_emit_cmp(compiler, (0), (1), (0), (0x200), ('\137')); | - |
1769 | add_jump(compiler, &common->getucd, sljit_emit_jump(compiler, (23))); | - |
1770 | sljit_emit_op2(compiler, (25), (1), (0), (1), (0), (0x200), (ucp_Ll)); | - |
1771 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (1), (0), (0x200), (ucp_Lu - ucp_Ll)); | - |
1772 | sljit_emit_cond_value(compiler, (6), (3), (0), (5)); | - |
1773 | sljit_emit_op2(compiler, (25), (1), (0), (1), (0), (0x200), (ucp_Nd - ucp_Ll)); | - |
1774 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (1), (0), (0x200), (ucp_No - ucp_Nd)); | - |
1775 | sljit_emit_cond_value(compiler, (29), (3), (0), (5)); | - |
1776 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
1777 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((1 * sizeof(sljit_w))), (3), (0)); | - |
1778 | } | 0 |
1779 | else | - |
1780 | | - |
1781 | { | - |
1782 | | - |
1783 | jump = sljit_emit_cmp(compiler, (4), (1), (0), (0x200), (255)); | - |
1784 | | - |
1785 | | - |
1786 | | - |
1787 | | - |
1788 | | - |
1789 | | - |
1790 | sljit_emit_op1(compiler, (7), (1), (0), ((0x100 | (1))), (common->ctypes)); | - |
1791 | sljit_emit_op2(compiler, (32), (1), (0), (1), (0), (0x200), (4)); | - |
1792 | sljit_emit_op2(compiler, (28), (1), (0), (1), (0), (0x200), (1)); | - |
1793 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((1 * sizeof(sljit_w))), (1), (0)); | - |
1794 | | - |
1795 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
1796 | | - |
1797 | | - |
1798 | | - |
1799 | | - |
1800 | } executed: } Execution Count:1 | 1 |
1801 | sljit_set_label((beginend), sljit_emit_label(compiler)); | - |
1802 | | - |
1803 | sljit_emit_op1(compiler, (6), (3), (0), (0x200), (0)); | - |
1804 | beginend = sljit_emit_cmp(compiler, (3), (6), (0), (7), (0)); | - |
1805 | peek_char(common); | - |
1806 | | - |
1807 | | - |
1808 | | - |
1809 | if (common->use_ucp) partially evaluated: common->use_ucp no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
1810 | { | - |
1811 | sljit_emit_op1(compiler, (6), (3), (0), (0x200), (1)); | - |
1812 | jump = sljit_emit_cmp(compiler, (0), (1), (0), (0x200), ('\137')); | - |
1813 | add_jump(compiler, &common->getucd, sljit_emit_jump(compiler, (23))); | - |
1814 | sljit_emit_op2(compiler, (25), (1), (0), (1), (0), (0x200), (ucp_Ll)); | - |
1815 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (1), (0), (0x200), (ucp_Lu - ucp_Ll)); | - |
1816 | sljit_emit_cond_value(compiler, (6), (3), (0), (5)); | - |
1817 | sljit_emit_op2(compiler, (25), (1), (0), (1), (0), (0x200), (ucp_Nd - ucp_Ll)); | - |
1818 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (1), (0), (0x200), (ucp_No - ucp_Nd)); | - |
1819 | sljit_emit_cond_value(compiler, (29), (3), (0), (5)); | - |
1820 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
1821 | } | 0 |
1822 | else | - |
1823 | | - |
1824 | { | - |
1825 | | - |
1826 | | - |
1827 | sljit_emit_op1(compiler, (6), (3), (0), (0x200), (0)); | - |
1828 | jump = sljit_emit_cmp(compiler, (4), (1), (0), (0x200), (255)); | - |
1829 | | - |
1830 | | - |
1831 | | - |
1832 | | - |
1833 | | - |
1834 | | - |
1835 | sljit_emit_op1(compiler, (7), (3), (0), ((0x100 | (1))), (common->ctypes)); | - |
1836 | sljit_emit_op2(compiler, (32), (3), (0), (3), (0), (0x200), (4)); | - |
1837 | sljit_emit_op2(compiler, (28), (3), (0), (3), (0), (0x200), (1)); | - |
1838 | | - |
1839 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
1840 | | - |
1841 | | - |
1842 | | - |
1843 | | - |
1844 | } executed: } Execution Count:1 | 1 |
1845 | sljit_set_label((beginend), sljit_emit_label(compiler)); | - |
1846 | | - |
1847 | sljit_emit_op2(compiler, (30 | 0x0200), (0), (0), (3), (0), ((0x100 | (11))), ((1 * sizeof(sljit_w)))); | - |
1848 | sljit_emit_fast_return(compiler, (0x100 | (11)), (0 * sizeof(sljit_w))); | - |
1849 | } executed: } Execution Count:1 | 1 |
1850 | | - |
1851 | static void check_anynewline(compiler_common *common) | - |
1852 | { | - |
1853 | | - |
1854 | struct sljit_compiler *compiler = common->compiler; | - |
1855 | | - |
1856 | sljit_emit_fast_enter(compiler, 4, 0, 1, 5, 5, common->localsize); | - |
1857 | | - |
1858 | sljit_emit_op2(compiler, (25), (1), (0), (1), (0), (0x200), (0x0a)); | - |
1859 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (1), (0), (0x200), (0x0d - 0x0a)); | - |
1860 | sljit_emit_cond_value(compiler, (6), (3), (0), (5)); | - |
1861 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0x85 - 0x0a)); | - |
1862 | | - |
1863 | | - |
1864 | | - |
1865 | | - |
1866 | | - |
1867 | sljit_emit_cond_value(compiler, (29), (3), (0), (0)); | - |
1868 | sljit_emit_op2(compiler, (29), (1), (0), (1), (0), (0x200), (0x1)); | - |
1869 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0x2029 - 0x0a)); | - |
1870 | | - |
1871 | | - |
1872 | | - |
1873 | | - |
1874 | sljit_emit_cond_value(compiler, (29 | 0x0200), (3), (0), (0)); | - |
1875 | sljit_emit_fast_return(compiler, 4, 0); | - |
1876 | } | 0 |
1877 | | - |
1878 | static void check_hspace(compiler_common *common) | - |
1879 | { | - |
1880 | | - |
1881 | struct sljit_compiler *compiler = common->compiler; | - |
1882 | | - |
1883 | sljit_emit_fast_enter(compiler, 4, 0, 1, 5, 5, common->localsize); | - |
1884 | | - |
1885 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0x09)); | - |
1886 | sljit_emit_cond_value(compiler, (6), (3), (0), (0)); | - |
1887 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0x20)); | - |
1888 | sljit_emit_cond_value(compiler, (29), (3), (0), (0)); | - |
1889 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0xa0)); | - |
1890 | | - |
1891 | | - |
1892 | | - |
1893 | | - |
1894 | | - |
1895 | sljit_emit_cond_value(compiler, (29), (3), (0), (0)); | - |
1896 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0x1680)); | - |
1897 | sljit_emit_cond_value(compiler, (29), (3), (0), (0)); | - |
1898 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0x180e)); | - |
1899 | sljit_emit_cond_value(compiler, (29), (3), (0), (0)); | - |
1900 | sljit_emit_op2(compiler, (25), (1), (0), (1), (0), (0x200), (0x2000)); | - |
1901 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (1), (0), (0x200), (0x200A - 0x2000)); | - |
1902 | sljit_emit_cond_value(compiler, (29), (3), (0), (5)); | - |
1903 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0x202f - 0x2000)); | - |
1904 | sljit_emit_cond_value(compiler, (29), (3), (0), (0)); | - |
1905 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0x205f - 0x2000)); | - |
1906 | sljit_emit_cond_value(compiler, (29), (3), (0), (0)); | - |
1907 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0x3000 - 0x2000)); | - |
1908 | | - |
1909 | | - |
1910 | | - |
1911 | | - |
1912 | sljit_emit_cond_value(compiler, (29 | 0x0200), (3), (0), (0)); | - |
1913 | | - |
1914 | sljit_emit_fast_return(compiler, 4, 0); | - |
1915 | } | 0 |
1916 | | - |
1917 | static void check_vspace(compiler_common *common) | - |
1918 | { | - |
1919 | | - |
1920 | struct sljit_compiler *compiler = common->compiler; | - |
1921 | | - |
1922 | sljit_emit_fast_enter(compiler, 4, 0, 1, 5, 5, common->localsize); | - |
1923 | | - |
1924 | sljit_emit_op2(compiler, (25), (1), (0), (1), (0), (0x200), (0x0a)); | - |
1925 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (1), (0), (0x200), (0x0d - 0x0a)); | - |
1926 | sljit_emit_cond_value(compiler, (6), (3), (0), (5)); | - |
1927 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0x85 - 0x0a)); | - |
1928 | | - |
1929 | | - |
1930 | | - |
1931 | | - |
1932 | | - |
1933 | sljit_emit_cond_value(compiler, (29 | 0x0200), (3), (0), (0)); | - |
1934 | sljit_emit_op2(compiler, (29), (1), (0), (1), (0), (0x200), (0x1)); | - |
1935 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0x2029 - 0x0a)); | - |
1936 | | - |
1937 | | - |
1938 | | - |
1939 | | - |
1940 | sljit_emit_cond_value(compiler, (29 | 0x0200), (3), (0), (0)); | - |
1941 | | - |
1942 | sljit_emit_fast_return(compiler, 4, 0); | - |
1943 | } | 0 |
1944 | | - |
1945 | | - |
1946 | | - |
1947 | | - |
1948 | static void do_casefulcmp(compiler_common *common) | - |
1949 | { | - |
1950 | struct sljit_compiler *compiler = common->compiler; | - |
1951 | struct sljit_jump *jump; | - |
1952 | struct sljit_label *label; | - |
1953 | | - |
1954 | sljit_emit_fast_enter(compiler, 4, 0, 1, 5, 5, common->localsize); | - |
1955 | sljit_emit_op2(compiler, (25), (6), (0), (6), (0), (3), (0)); | - |
1956 | sljit_emit_op1(compiler, (6), (5), (0), (7), (0)); | - |
1957 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((0 * sizeof(sljit_w))), (2), (0)); | - |
1958 | sljit_emit_op2(compiler, (25), (1), (0), (1), (0), (0x200), (((1) << 1))); | - |
1959 | sljit_emit_op2(compiler, (25), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
1960 | | - |
1961 | label = sljit_emit_label(compiler); | - |
1962 | sljit_emit_op1(compiler, (16), (7), (0), ((0x100 | (1))), (((1) << 1))); | - |
1963 | sljit_emit_op1(compiler, (16), (2), (0), ((0x100 | (6))), (((1) << 1))); | - |
1964 | jump = sljit_emit_cmp(compiler, (1), (7), (0), (2), (0)); | - |
1965 | sljit_emit_op2(compiler, (25 | 0x0200), (3), (0), (3), (0), (0x200), (((1) << 1))); | - |
1966 | sljit_set_label(sljit_emit_jump(compiler, (1)), (label)); | - |
1967 | | - |
1968 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
1969 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
1970 | sljit_emit_op1(compiler, (6), (7), (0), (5), (0)); | - |
1971 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), ((0 * sizeof(sljit_w)))); | - |
1972 | sljit_emit_fast_return(compiler, 4, 0); | - |
1973 | } | 0 |
1974 | | - |
1975 | | - |
1976 | | - |
1977 | static void do_caselesscmp(compiler_common *common) | - |
1978 | { | - |
1979 | struct sljit_compiler *compiler = common->compiler; | - |
1980 | struct sljit_jump *jump; | - |
1981 | struct sljit_label *label; | - |
1982 | | - |
1983 | sljit_emit_fast_enter(compiler, 4, 0, 1, 5, 5, common->localsize); | - |
1984 | sljit_emit_op2(compiler, (25), (6), (0), (6), (0), (3), (0)); | - |
1985 | | - |
1986 | sljit_emit_op1(compiler, (6), (5), (0), (8), (0)); | - |
1987 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((0 * sizeof(sljit_w))), (7), (0)); | - |
1988 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((1 * sizeof(sljit_w))), (2), (0)); | - |
1989 | sljit_emit_op1(compiler, (6), (8), (0), (0x200), (common->lcc)); | - |
1990 | sljit_emit_op2(compiler, (25), (1), (0), (1), (0), (0x200), (((1) << 1))); | - |
1991 | sljit_emit_op2(compiler, (25), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
1992 | | - |
1993 | label = sljit_emit_label(compiler); | - |
1994 | sljit_emit_op1(compiler, (16), (7), (0), ((0x100 | (1))), (((1) << 1))); | - |
1995 | sljit_emit_op1(compiler, (16), (2), (0), ((0x100 | (6))), (((1) << 1))); | - |
1996 | | - |
1997 | jump = sljit_emit_cmp(compiler, (4), (7), (0), (0x200), (255)); | - |
1998 | | - |
1999 | sljit_emit_op1(compiler, (7), (7), (0), ((0x100 | (8) | ((7) << 4))), (0)); | - |
2000 | | - |
2001 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
2002 | jump = sljit_emit_cmp(compiler, (4), (2), (0), (0x200), (255)); | - |
2003 | | - |
2004 | sljit_emit_op1(compiler, (7), (2), (0), ((0x100 | (8) | ((2) << 4))), (0)); | - |
2005 | | - |
2006 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
2007 | | - |
2008 | jump = sljit_emit_cmp(compiler, (1), (7), (0), (2), (0)); | - |
2009 | sljit_emit_op2(compiler, (25 | 0x0200), (3), (0), (3), (0), (0x200), (((1) << 1))); | - |
2010 | sljit_set_label(sljit_emit_jump(compiler, (1)), (label)); | - |
2011 | | - |
2012 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
2013 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
2014 | sljit_emit_op1(compiler, (6), (8), (0), (5), (0)); | - |
2015 | sljit_emit_op1(compiler, (6), (7), (0), ((0x100 | (11))), ((0 * sizeof(sljit_w)))); | - |
2016 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), ((1 * sizeof(sljit_w)))); | - |
2017 | sljit_emit_fast_return(compiler, 4, 0); | - |
2018 | } | 0 |
2019 | | - |
2020 | | - |
2021 | | - |
2022 | | - |
2023 | | - |
2024 | | - |
2025 | | - |
2026 | static const pcre_uchar * do_utf_caselesscmp(pcre_uchar *src1, jit_arguments *args, pcre_uchar *end1) | - |
2027 | { | - |
2028 | | - |
2029 | int c1, c2; | - |
2030 | const pcre_uchar *src2 = args->ptr; | - |
2031 | const pcre_uchar *end2 = args->end; | - |
2032 | | - |
2033 | while (src1 < end1) never evaluated: src1 < end1 | 0 |
2034 | { | - |
2035 | if (src2 >= end2) never evaluated: src2 >= end2 | 0 |
2036 | return 0; never executed: return 0; | 0 |
2037 | c1 = *src1++; if ((c1 & 0xfc00) == 0xd800) { c1 = (((c1 & 0x3ff) << 10) | (*src1++ & 0x3ff)) + 0x10000; };; never evaluated: (c1 & 0xfc00) == 0xd800 | 0 |
2038 | c2 = *src2++; if ((c2 & 0xfc00) == 0xd800) { c2 = (((c2 & 0x3ff) << 10) | (*src2++ & 0x3ff)) + 0x10000; };; never evaluated: (c2 & 0xfc00) == 0xd800 | 0 |
2039 | if (c1 != c2 && c1 != (c2 + (_pcre16_ucd_records + _pcre16_ucd_stage2[_pcre16_ucd_stage1[(c2) / 128] * 128 + (c2) % 128])->other_case)) return 0; never evaluated: c1 != c2 never evaluated: c1 != (c2 + (_pcre16_ucd_records + _pcre16_ucd_stage2[_pcre16_ucd_stage1[(c2) / 128] * 128 + (c2) % 128])->other_case) never executed: return 0; | 0 |
2040 | } | 0 |
2041 | return src2; never executed: return src2; | 0 |
2042 | } | - |
2043 | | - |
2044 | | - |
2045 | | - |
2046 | static pcre_uchar *byte_sequence_compare(compiler_common *common, BOOL caseless, pcre_uchar *cc, | - |
2047 | compare_context* context, jump_list **fallbacks) | - |
2048 | { | - |
2049 | struct sljit_compiler *compiler = common->compiler; | - |
2050 | unsigned int othercasebit = 0; | - |
2051 | pcre_uchar *othercasechar = ((void *)0); | - |
2052 | | - |
2053 | int utflength; | - |
2054 | | - |
2055 | | - |
2056 | if (caseless && char_has_othercase(common, cc)) partially evaluated: caseless no Evaluation Count:0 | yes Evaluation Count:9 |
never evaluated: char_has_othercase(common, cc) | 0-9 |
2057 | { | - |
2058 | othercasebit = char_get_othercase_bit(common, cc); | - |
2059 | do { } while (0); | 0 |
2060 | | - |
2061 | | - |
2062 | | - |
2063 | | - |
2064 | | - |
2065 | | - |
2066 | othercasechar = cc + (othercasebit >> 9); | - |
2067 | if ((othercasebit & 0x100) != 0) never evaluated: (othercasebit & 0x100) != 0 | 0 |
2068 | othercasebit = (othercasebit & 0xff) << 8; never executed: othercasebit = (othercasebit & 0xff) << 8; | 0 |
2069 | else | - |
2070 | othercasebit &= 0xff; never executed: othercasebit &= 0xff; | 0 |
2071 | | - |
2072 | | - |
2073 | } | - |
2074 | | - |
2075 | if (context->sourcereg == -1) partially evaluated: context->sourcereg == -1 yes Evaluation Count:9 | no Evaluation Count:0 |
| 0-9 |
2076 | { | - |
2077 | if (context->length >= 4) partially evaluated: context->length >= 4 no Evaluation Count:0 | yes Evaluation Count:9 |
| 0-9 |
2078 | sljit_emit_op1(compiler, (12), (1), (0), ((0x100 | (6))), (-context->length)); never executed: sljit_emit_op1(compiler, (12), (1), (0), ((0x100 | (6))), (-context->length)); | 0 |
2079 | else | - |
2080 | | - |
2081 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (-context->length)); executed: sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (-context->length)); Execution Count:9 | 9 |
2082 | | - |
2083 | | - |
2084 | context->sourcereg = 3; | - |
2085 | } executed: } Execution Count:9 | 9 |
2086 | | - |
2087 | | - |
2088 | utflength = 1; | - |
2089 | if (common->utf && (((*cc) & 0xfc00) == 0xd800)) partially evaluated: common->utf yes Evaluation Count:9 | no Evaluation Count:0 |
partially evaluated: (((*cc) & 0xfc00) == 0xd800) no Evaluation Count:0 | yes Evaluation Count:9 |
| 0-9 |
2090 | utflength += 1; never executed: utflength += 1; | 0 |
2091 | | - |
2092 | do | - |
2093 | { | - |
2094 | | - |
2095 | | - |
2096 | context->length -= ((1) << 1); | - |
2097 | | - |
2098 | | - |
2099 | | - |
2100 | if (othercasebit != 0 && othercasechar == cc) partially evaluated: othercasebit != 0 no Evaluation Count:0 | yes Evaluation Count:9 |
never evaluated: othercasechar == cc | 0-9 |
2101 | { | - |
2102 | context->c.asuchars[context->ucharptr] = *cc | othercasebit; | - |
2103 | context->oc.asuchars[context->ucharptr] = othercasebit; | - |
2104 | } | 0 |
2105 | else | - |
2106 | { | - |
2107 | context->c.asuchars[context->ucharptr] = *cc; | - |
2108 | context->oc.asuchars[context->ucharptr] = 0; | - |
2109 | } executed: } Execution Count:9 | 9 |
2110 | context->ucharptr++; | - |
2111 | | - |
2112 | | - |
2113 | | - |
2114 | | - |
2115 | if (context->ucharptr >= 2 || context->length == 0) partially evaluated: context->ucharptr >= 2 no Evaluation Count:0 | yes Evaluation Count:9 |
partially evaluated: context->length == 0 yes Evaluation Count:9 | no Evaluation Count:0 |
| 0-9 |
2116 | | - |
2117 | { | - |
2118 | if (context->length >= 4) partially evaluated: context->length >= 4 no Evaluation Count:0 | yes Evaluation Count:9 |
| 0-9 |
2119 | sljit_emit_op1(compiler, (12), (context->sourcereg), (0), ((0x100 | (6))), (-context->length)); never executed: sljit_emit_op1(compiler, (12), (context->sourcereg), (0), ((0x100 | (6))), (-context->length)); | 0 |
2120 | | - |
2121 | | - |
2122 | | - |
2123 | | - |
2124 | | - |
2125 | | - |
2126 | else if (context->length >= 2) partially evaluated: context->length >= 2 no Evaluation Count:0 | yes Evaluation Count:9 |
| 0-9 |
2127 | sljit_emit_op1(compiler, (9), (context->sourcereg), (0), ((0x100 | (6))), (-context->length)); never executed: sljit_emit_op1(compiler, (9), (context->sourcereg), (0), ((0x100 | (6))), (-context->length)); | 0 |
2128 | | - |
2129 | context->sourcereg = context->sourcereg == 1 ? 3 : 1; partially evaluated: context->sourcereg == 1 no Evaluation Count:0 | yes Evaluation Count:9 |
| 0-9 |
2130 | | - |
2131 | switch(context->ucharptr) | - |
2132 | { | - |
2133 | case 4 / sizeof(pcre_uchar): | - |
2134 | if (context->oc.asint != 0) never evaluated: context->oc.asint != 0 | 0 |
2135 | sljit_emit_op2(compiler, (29), (context->sourcereg), (0), (context->sourcereg), (0), (0x200), (context->oc.asint)); never executed: sljit_emit_op2(compiler, (29), (context->sourcereg), (0), (context->sourcereg), (0), (0x200), (context->oc.asint)); | 0 |
2136 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (context->sourcereg), (0), (0x200), (context->c.asint | context->oc.asint))); | - |
2137 | break; | 0 |
2138 | | - |
2139 | case 2 / sizeof(pcre_uchar): | - |
2140 | if (context->oc.asushort != 0) partially evaluated: context->oc.asushort != 0 no Evaluation Count:0 | yes Evaluation Count:9 |
| 0-9 |
2141 | sljit_emit_op2(compiler, (29), (context->sourcereg), (0), (context->sourcereg), (0), (0x200), (context->oc.asushort)); never executed: sljit_emit_op2(compiler, (29), (context->sourcereg), (0), (context->sourcereg), (0), (0x200), (context->oc.asushort)); | 0 |
2142 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (context->sourcereg), (0), (0x200), (context->c.asushort | context->oc.asushort))); | - |
2143 | break; executed: break; Execution Count:9 | 9 |
2144 | default: | - |
2145 | do { } while (0); | 0 |
2146 | break; | 0 |
2147 | } | - |
2148 | context->ucharptr = 0; | - |
2149 | } executed: } Execution Count:9 | 9 |
2150 | cc++; | - |
2151 | | - |
2152 | utflength--; | - |
2153 | } executed: } Execution Count:9 | 9 |
2154 | while (utflength > 0); partially evaluated: utflength > 0 no Evaluation Count:0 | yes Evaluation Count:9 |
| 0-9 |
2155 | | - |
2156 | | - |
2157 | return cc; executed: return cc; Execution Count:9 | 9 |
2158 | } | - |
2159 | static void compile_xclass_hotpath(compiler_common *common, pcre_uchar *cc, jump_list **fallbacks) | - |
2160 | { | - |
2161 | struct sljit_compiler *compiler = common->compiler; | - |
2162 | jump_list *found = ((void *)0); | - |
2163 | jump_list **list = (*cc & 0x01) == 0 ? &found : fallbacks; partially evaluated: (*cc & 0x01) == 0 yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
2164 | unsigned int c; | - |
2165 | int compares; | - |
2166 | struct sljit_jump *jump = ((void *)0); | - |
2167 | pcre_uchar *ccbegin; | - |
2168 | | - |
2169 | BOOL needstype = 0, needsscript = 0, needschar = 0; | - |
2170 | BOOL charsaved = 0; | - |
2171 | int typereg = 1, scriptreg = 1; | - |
2172 | unsigned int typeoffset; | - |
2173 | | - |
2174 | int invertcmp, numberofcmps; | - |
2175 | unsigned int charoffset; | - |
2176 | | - |
2177 | | - |
2178 | check_input_end(common, fallbacks); | - |
2179 | read_char(common); | - |
2180 | | - |
2181 | if ((*cc++ & 0x02) != 0) partially evaluated: (*cc++ & 0x02) != 0 no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
2182 | { | - |
2183 | sljit_emit_op1(compiler, (6), (5), (0), (1), (0)); | - |
2184 | | - |
2185 | jump = sljit_emit_cmp(compiler, (4), (1), (0), (0x200), (255)); | - |
2186 | | - |
2187 | | - |
2188 | | - |
2189 | | - |
2190 | | - |
2191 | sljit_emit_op2(compiler, (28), (3), (0), (1), (0), (0x200), (0x7)); | - |
2192 | sljit_emit_op2(compiler, (32), (1), (0), (1), (0), (0x200), (3)); | - |
2193 | sljit_emit_op1(compiler, (7), (1), (0), ((0x100 | (1))), ((sljit_w)cc)); | - |
2194 | sljit_emit_op2(compiler, (31), (3), (0), (0x200), (1), (3), (0)); | - |
2195 | sljit_emit_op2(compiler, (28 | 0x0200), (0), (0), (1), (0), (3), (0)); | - |
2196 | add_jump(compiler, list, sljit_emit_jump(compiler, (1))); | - |
2197 | | - |
2198 | | - |
2199 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
2200 | | - |
2201 | | - |
2202 | | - |
2203 | | - |
2204 | sljit_emit_op1(compiler, (6), (1), (0), (5), (0)); | - |
2205 | | - |
2206 | charsaved = 1; | - |
2207 | | - |
2208 | cc += 32 / sizeof(pcre_uchar); | - |
2209 | } | 0 |
2210 | | - |
2211 | | - |
2212 | ccbegin = cc; | - |
2213 | compares = 0; | - |
2214 | while (*cc != 0) evaluated: *cc != 0 yes Evaluation Count:1 | yes Evaluation Count:1 |
| 1 |
2215 | { | - |
2216 | compares++; | - |
2217 | if (*cc == 1) partially evaluated: *cc == 1 no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
2218 | { | - |
2219 | cc += 2; | - |
2220 | | - |
2221 | if (common->utf && (((cc[-1]) & 0xfc00) == 0xd800)) cc += 1; never evaluated: common->utf never evaluated: (((cc[-1]) & 0xfc00) == 0xd800) | 0 |
2222 | | - |
2223 | | - |
2224 | needschar = 1; | - |
2225 | | - |
2226 | } | 0 |
2227 | else if (*cc == 2) partially evaluated: *cc == 2 yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
2228 | { | - |
2229 | cc += 2; | - |
2230 | | - |
2231 | if (common->utf && (((cc[-1]) & 0xfc00) == 0xd800)) cc += 1; partially evaluated: common->utf yes Evaluation Count:1 | no Evaluation Count:0 |
partially evaluated: (((cc[-1]) & 0xfc00) == 0xd800) no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
2232 | | - |
2233 | cc++; | - |
2234 | | - |
2235 | if (common->utf && (((cc[-1]) & 0xfc00) == 0xd800)) cc += 1; partially evaluated: common->utf yes Evaluation Count:1 | no Evaluation Count:0 |
partially evaluated: (((cc[-1]) & 0xfc00) == 0xd800) no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
2236 | | - |
2237 | | - |
2238 | needschar = 1; | - |
2239 | | - |
2240 | } executed: } Execution Count:1 | 1 |
2241 | | - |
2242 | else | - |
2243 | { | - |
2244 | do { } while (0); | 0 |
2245 | cc++; | - |
2246 | switch(*cc) | - |
2247 | { | - |
2248 | case 0: | - |
2249 | break; | 0 |
2250 | | - |
2251 | case 1: | - |
2252 | case 2: | - |
2253 | case 3: | - |
2254 | case 5: | - |
2255 | needstype = 1; | - |
2256 | break; | 0 |
2257 | | - |
2258 | case 4: | - |
2259 | needsscript = 1; | - |
2260 | break; | 0 |
2261 | | - |
2262 | case 6: | - |
2263 | case 7: | - |
2264 | case 8: | - |
2265 | needstype = 1; | - |
2266 | needschar = 1; | - |
2267 | break; | 0 |
2268 | | - |
2269 | default: | - |
2270 | do { } while (0); | 0 |
2271 | break; | 0 |
2272 | } | - |
2273 | cc += 2; | - |
2274 | } | 0 |
2275 | | - |
2276 | } | - |
2277 | | - |
2278 | | - |
2279 | | - |
2280 | if (needstype || needsscript) partially evaluated: needstype no Evaluation Count:0 | yes Evaluation Count:1 |
partially evaluated: needsscript no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
2281 | { | - |
2282 | if (needschar && !charsaved) never evaluated: needschar never evaluated: !charsaved | 0 |
2283 | sljit_emit_op1(compiler, (6), (5), (0), (1), (0)); never executed: sljit_emit_op1(compiler, (6), (5), (0), (1), (0)); | 0 |
2284 | add_jump(compiler, &common->getucd, sljit_emit_jump(compiler, (23))); | - |
2285 | if (needschar) never evaluated: needschar | 0 |
2286 | { | - |
2287 | if (needstype) never evaluated: needstype | 0 |
2288 | { | - |
2289 | sljit_emit_op1(compiler, (6), (4), (0), (1), (0)); | - |
2290 | typereg = 4; | - |
2291 | } | 0 |
2292 | | - |
2293 | if (needsscript) never evaluated: needsscript | 0 |
2294 | scriptreg = 5; never executed: scriptreg = 5; | 0 |
2295 | sljit_emit_op1(compiler, (6), (1), (0), (5), (0)); | - |
2296 | } | 0 |
2297 | else if (needstype && needsscript) never evaluated: needstype never evaluated: needsscript | 0 |
2298 | scriptreg = 5; never executed: scriptreg = 5; | 0 |
2299 | | - |
2300 | | - |
2301 | if (needsscript) never evaluated: needsscript | 0 |
2302 | { | - |
2303 | if (scriptreg == 1) never evaluated: scriptreg == 1 | 0 |
2304 | { | - |
2305 | sljit_emit_op1(compiler, (6), (scriptreg), (0), (0x200), ((sljit_w)_pcre16_ucd_records + ((sljit_w)(&((ucd_record*)0x10)->script) - 0x10))); | - |
2306 | sljit_emit_op1(compiler, (7), (scriptreg), (0), ((0x100 | (scriptreg) | ((3) << 4))), (3)); | - |
2307 | } | 0 |
2308 | else | - |
2309 | { | - |
2310 | sljit_emit_op2(compiler, (31), (3), (0), (3), (0), (0x200), (3)); | - |
2311 | sljit_emit_op2(compiler, (23), (3), (0), (3), (0), (0x200), ((sljit_w)_pcre16_ucd_records + ((sljit_w)(&((ucd_record*)0x10)->script) - 0x10))); | - |
2312 | sljit_emit_op1(compiler, (7), (scriptreg), (0), ((0x100 | (3))), (0)); | - |
2313 | } | 0 |
2314 | } | - |
2315 | } | 0 |
2316 | | - |
2317 | | - |
2318 | | - |
2319 | cc = ccbegin; | - |
2320 | charoffset = 0; | - |
2321 | numberofcmps = 0; | - |
2322 | | - |
2323 | typeoffset = 0; | - |
2324 | | - |
2325 | | - |
2326 | while (*cc != 0) evaluated: *cc != 0 yes Evaluation Count:1 | yes Evaluation Count:1 |
| 1 |
2327 | { | - |
2328 | compares--; | - |
2329 | invertcmp = (compares == 0 && list != fallbacks); partially evaluated: compares == 0 yes Evaluation Count:1 | no Evaluation Count:0 |
partially evaluated: list != fallbacks yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
2330 | jump = ((void *)0); | - |
2331 | | - |
2332 | if (*cc == 1) partially evaluated: *cc == 1 no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
2333 | { | - |
2334 | cc ++; | - |
2335 | | - |
2336 | if (common->utf) never evaluated: common->utf | 0 |
2337 | { | - |
2338 | c = *cc++; if ((c & 0xfc00) == 0xd800) { c = (((c & 0x3ff) << 10) | (*cc++ & 0x3ff)) + 0x10000; };; never evaluated: (c & 0xfc00) == 0xd800 | 0 |
2339 | } | 0 |
2340 | else | - |
2341 | | - |
2342 | c = *cc++; never executed: c = *cc++; | 0 |
2343 | | - |
2344 | if (numberofcmps < 3 && (*cc == 1 || *cc == 2)) never evaluated: numberofcmps < 3 never evaluated: *cc == 1 never evaluated: *cc == 2 | 0 |
2345 | { | - |
2346 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (c - charoffset)); | - |
2347 | sljit_emit_cond_value(compiler, (numberofcmps == 0 ? 6 : 29), (3), (0), (0)); | - |
2348 | numberofcmps++; | - |
2349 | } | 0 |
2350 | else if (numberofcmps > 0) never evaluated: numberofcmps > 0 | 0 |
2351 | { | - |
2352 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (c - charoffset)); | - |
2353 | sljit_emit_cond_value(compiler, (29 | 0x0200), (3), (0), (0)); | - |
2354 | jump = sljit_emit_jump(compiler, (1 ^ invertcmp)); | - |
2355 | numberofcmps = 0; | - |
2356 | } | 0 |
2357 | else | - |
2358 | { | - |
2359 | jump = sljit_emit_cmp(compiler, (0 ^ invertcmp), (1), (0), (0x200), (c - charoffset)); | - |
2360 | numberofcmps = 0; | - |
2361 | } | 0 |
2362 | } | - |
2363 | else if (*cc == 2) partially evaluated: *cc == 2 yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
2364 | { | - |
2365 | cc ++; | - |
2366 | | - |
2367 | if (common->utf) partially evaluated: common->utf yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
2368 | { | - |
2369 | c = *cc++; if ((c & 0xfc00) == 0xd800) { c = (((c & 0x3ff) << 10) | (*cc++ & 0x3ff)) + 0x10000; };; partially evaluated: (c & 0xfc00) == 0xd800 no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
2370 | } executed: } Execution Count:1 | 1 |
2371 | else | - |
2372 | | - |
2373 | c = *cc++; never executed: c = *cc++; | 0 |
2374 | if ((c) != charoffset) { if ((c) > charoffset) sljit_emit_op2(compiler, (25), (1), (0), (1), (0), (0x200), ((c) - charoffset)); else sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (charoffset - (c))); } charoffset = (c);; partially evaluated: (c) != charoffset no Evaluation Count:0 | yes Evaluation Count:1 |
never evaluated: (c) > charoffset never executed: sljit_emit_op2(compiler, (25), (1), (0), (1), (0), (0x200), ((c) - charoffset)); never executed: sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (charoffset - (c))); | 0-1 |
2375 | | - |
2376 | if (common->utf) partially evaluated: common->utf yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
2377 | { | - |
2378 | c = *cc++; if ((c & 0xfc00) == 0xd800) { c = (((c & 0x3ff) << 10) | (*cc++ & 0x3ff)) + 0x10000; };; partially evaluated: (c & 0xfc00) == 0xd800 no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
2379 | } executed: } Execution Count:1 | 1 |
2380 | else | - |
2381 | | - |
2382 | c = *cc++; never executed: c = *cc++; | 0 |
2383 | if (numberofcmps < 3 && (*cc == 1 || *cc == 2)) partially evaluated: numberofcmps < 3 yes Evaluation Count:1 | no Evaluation Count:0 |
partially evaluated: *cc == 1 no Evaluation Count:0 | yes Evaluation Count:1 |
partially evaluated: *cc == 2 no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
2384 | { | - |
2385 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (1), (0), (0x200), (c - charoffset)); | - |
2386 | sljit_emit_cond_value(compiler, (numberofcmps == 0 ? 6 : 29), (3), (0), (5)); | - |
2387 | numberofcmps++; | - |
2388 | } | 0 |
2389 | else if (numberofcmps > 0) partially evaluated: numberofcmps > 0 no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
2390 | { | - |
2391 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (1), (0), (0x200), (c - charoffset)); | - |
2392 | sljit_emit_cond_value(compiler, (29 | 0x0200), (3), (0), (5)); | - |
2393 | jump = sljit_emit_jump(compiler, (1 ^ invertcmp)); | - |
2394 | numberofcmps = 0; | - |
2395 | } | 0 |
2396 | else | - |
2397 | { | - |
2398 | jump = sljit_emit_cmp(compiler, (5 ^ invertcmp), (1), (0), (0x200), (c - charoffset)); | - |
2399 | numberofcmps = 0; | - |
2400 | } executed: } Execution Count:1 | 1 |
2401 | } | - |
2402 | | - |
2403 | else | - |
2404 | { | - |
2405 | if (*cc == 4) never evaluated: *cc == 4 | 0 |
2406 | invertcmp ^= 0x1; never executed: invertcmp ^= 0x1; | 0 |
2407 | cc++; | - |
2408 | switch(*cc) | - |
2409 | { | - |
2410 | case 0: | - |
2411 | if (list != fallbacks) never evaluated: list != fallbacks | 0 |
2412 | { | - |
2413 | if ((cc[-1] == 4 && compares > 0) || (cc[-1] == 3 && compares == 0)) never evaluated: cc[-1] == 4 never evaluated: compares > 0 never evaluated: cc[-1] == 3 never evaluated: compares == 0 | 0 |
2414 | continue; never executed: continue; | 0 |
2415 | } | 0 |
2416 | else if (cc[-1] == 4) never evaluated: cc[-1] == 4 | 0 |
2417 | continue; never executed: continue; | 0 |
2418 | jump = sljit_emit_jump(compiler, (22)); | - |
2419 | break; | 0 |
2420 | | - |
2421 | case 1: | - |
2422 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (typereg), (0), (0x200), (ucp_Lu - typeoffset)); | - |
2423 | sljit_emit_cond_value(compiler, (6), (3), (0), (0)); | - |
2424 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (typereg), (0), (0x200), (ucp_Ll - typeoffset)); | - |
2425 | sljit_emit_cond_value(compiler, (29), (3), (0), (0)); | - |
2426 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (typereg), (0), (0x200), (ucp_Lt - typeoffset)); | - |
2427 | sljit_emit_cond_value(compiler, (29 | 0x0200), (3), (0), (0)); | - |
2428 | jump = sljit_emit_jump(compiler, (1 ^ invertcmp)); | - |
2429 | break; | 0 |
2430 | | - |
2431 | case 2: | - |
2432 | c = _pcre16_ucp_typerange[(int)cc[1] * 2]; | - |
2433 | if ((c) != typeoffset) { if ((c) > typeoffset) sljit_emit_op2(compiler, (25), (typereg), (0), (typereg), (0), (0x200), ((c) - typeoffset)); else sljit_emit_op2(compiler, (23), (typereg), (0), (typereg), (0), (0x200), (typeoffset - (c))); } typeoffset = (c);; never evaluated: (c) != typeoffset never evaluated: (c) > typeoffset never executed: sljit_emit_op2(compiler, (25), (typereg), (0), (typereg), (0), (0x200), ((c) - typeoffset)); never executed: sljit_emit_op2(compiler, (23), (typereg), (0), (typereg), (0), (0x200), (typeoffset - (c))); | 0 |
2434 | jump = sljit_emit_cmp(compiler, (5 ^ invertcmp), (typereg), (0), (0x200), (_pcre16_ucp_typerange[(int)cc[1] * 2 + 1] - c)); | - |
2435 | break; | 0 |
2436 | | - |
2437 | case 3: | - |
2438 | jump = sljit_emit_cmp(compiler, (0 ^ invertcmp), (typereg), (0), (0x200), ((int)cc[1] - typeoffset)); | - |
2439 | break; | 0 |
2440 | | - |
2441 | case 4: | - |
2442 | jump = sljit_emit_cmp(compiler, (0 ^ invertcmp), (scriptreg), (0), (0x200), ((int)cc[1])); | - |
2443 | break; | 0 |
2444 | | - |
2445 | case 6: | - |
2446 | case 7: | - |
2447 | if (*cc == 6) never evaluated: *cc == 6 | 0 |
2448 | { | - |
2449 | sljit_emit_op1(compiler, (6), (3), (0), (0x200), (0)); | - |
2450 | jump = sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (11 - charoffset)); | - |
2451 | } | 0 |
2452 | if ((9) != charoffset) { if ((9) > charoffset) sljit_emit_op2(compiler, (25), (1), (0), (1), (0), (0x200), ((9) - charoffset)); else sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (charoffset - (9))); } charoffset = (9);; never evaluated: (9) != charoffset never evaluated: (9) > charoffset never executed: sljit_emit_op2(compiler, (25), (1), (0), (1), (0), (0x200), ((9) - charoffset)); never executed: sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (charoffset - (9))); | 0 |
2453 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (1), (0), (0x200), (13 - 9)); | - |
2454 | sljit_emit_cond_value(compiler, (6), (3), (0), (5)); | - |
2455 | if (*cc == 6) never evaluated: *cc == 6 | 0 |
2456 | sljit_set_label((jump), sljit_emit_label(compiler)); never executed: sljit_set_label((jump), sljit_emit_label(compiler)); | 0 |
2457 | | - |
2458 | if ((ucp_Zl) != typeoffset) { if ((ucp_Zl) > typeoffset) sljit_emit_op2(compiler, (25), (typereg), (0), (typereg), (0), (0x200), ((ucp_Zl) - typeoffset)); else sljit_emit_op2(compiler, (23), (typereg), (0), (typereg), (0), (0x200), (typeoffset - (ucp_Zl))); } typeoffset = (ucp_Zl);; never evaluated: (ucp_Zl) != typeoffset never evaluated: (ucp_Zl) > typeoffset never executed: sljit_emit_op2(compiler, (25), (typereg), (0), (typereg), (0), (0x200), ((ucp_Zl) - typeoffset)); never executed: sljit_emit_op2(compiler, (23), (typereg), (0), (typereg), (0), (0x200), (typeoffset - (ucp_Zl))); | 0 |
2459 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (typereg), (0), (0x200), (ucp_Zs - ucp_Zl)); | - |
2460 | sljit_emit_cond_value(compiler, (29 | 0x0200), (3), (0), (5)); | - |
2461 | jump = sljit_emit_jump(compiler, (1 ^ invertcmp)); | - |
2462 | break; | 0 |
2463 | | - |
2464 | case 8: | - |
2465 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), ('\137' - charoffset)); | - |
2466 | sljit_emit_cond_value(compiler, (6), (3), (0), (0)); | - |
2467 | | - |
2468 | | - |
2469 | case 5: code before this statement never executed: case 5: | 0 |
2470 | if ((ucp_Ll) != typeoffset) { if ((ucp_Ll) > typeoffset) sljit_emit_op2(compiler, (25), (typereg), (0), (typereg), (0), (0x200), ((ucp_Ll) - typeoffset)); else sljit_emit_op2(compiler, (23), (typereg), (0), (typereg), (0), (0x200), (typeoffset - (ucp_Ll))); } typeoffset = (ucp_Ll);; never evaluated: (ucp_Ll) != typeoffset never evaluated: (ucp_Ll) > typeoffset never executed: sljit_emit_op2(compiler, (25), (typereg), (0), (typereg), (0), (0x200), ((ucp_Ll) - typeoffset)); never executed: sljit_emit_op2(compiler, (23), (typereg), (0), (typereg), (0), (0x200), (typeoffset - (ucp_Ll))); | 0 |
2471 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (typereg), (0), (0x200), (ucp_Lu - ucp_Ll)); | - |
2472 | sljit_emit_cond_value(compiler, ((*cc == 5) ? 6 : 29), (3), (0), (5)); | - |
2473 | if ((ucp_Nd) != typeoffset) { if ((ucp_Nd) > typeoffset) sljit_emit_op2(compiler, (25), (typereg), (0), (typereg), (0), (0x200), ((ucp_Nd) - typeoffset)); else sljit_emit_op2(compiler, (23), (typereg), (0), (typereg), (0), (0x200), (typeoffset - (ucp_Nd))); } typeoffset = (ucp_Nd);; never evaluated: (ucp_Nd) != typeoffset never evaluated: (ucp_Nd) > typeoffset never executed: sljit_emit_op2(compiler, (25), (typereg), (0), (typereg), (0), (0x200), ((ucp_Nd) - typeoffset)); never executed: sljit_emit_op2(compiler, (23), (typereg), (0), (typereg), (0), (0x200), (typeoffset - (ucp_Nd))); | 0 |
2474 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (typereg), (0), (0x200), (ucp_No - ucp_Nd)); | - |
2475 | sljit_emit_cond_value(compiler, (29 | 0x0200), (3), (0), (5)); | - |
2476 | jump = sljit_emit_jump(compiler, (1 ^ invertcmp)); | - |
2477 | break; | 0 |
2478 | } | - |
2479 | cc += 2; | - |
2480 | } | 0 |
2481 | | - |
2482 | | - |
2483 | if (jump != ((void *)0)) partially evaluated: jump != ((void *)0) yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
2484 | add_jump(compiler, compares > 0 ? list : fallbacks, jump); executed: add_jump(compiler, compares > 0 ? list : fallbacks, jump); Execution Count:1 | 1 |
2485 | } executed: } Execution Count:1 | 1 |
2486 | | - |
2487 | if (found != ((void *)0)) partially evaluated: found != ((void *)0) no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
2488 | set_jumps(found, sljit_emit_label(compiler)); never executed: set_jumps(found, sljit_emit_label(compiler)); | 0 |
2489 | } executed: } Execution Count:1 | 1 |
2490 | | - |
2491 | | - |
2492 | | - |
2493 | | - |
2494 | | - |
2495 | | - |
2496 | static pcre_uchar *compile_char1_hotpath(compiler_common *common, pcre_uchar type, pcre_uchar *cc, jump_list **fallbacks) | - |
2497 | { | - |
2498 | struct sljit_compiler *compiler = common->compiler; | - |
2499 | int length; | - |
2500 | unsigned int c, oc, bit; | - |
2501 | compare_context context; | - |
2502 | struct sljit_jump *jump[4]; | - |
2503 | | - |
2504 | struct sljit_label *label; | - |
2505 | | - |
2506 | pcre_uchar propdata[5]; | - |
2507 | | - |
2508 | | - |
2509 | | - |
2510 | switch(type) | - |
2511 | { | - |
2512 | case OP_SOD: | - |
2513 | sljit_emit_op1(compiler, (6), (1), (0), (9), (0)); | - |
2514 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->begin) - 0x10))); | - |
2515 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (6), (0), (1), (0))); | - |
2516 | return cc; never executed: return cc; | 0 |
2517 | | - |
2518 | case OP_SOM: | - |
2519 | sljit_emit_op1(compiler, (6), (1), (0), (9), (0)); | - |
2520 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->str) - 0x10))); | - |
2521 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (6), (0), (1), (0))); | - |
2522 | return cc; never executed: return cc; | 0 |
2523 | | - |
2524 | case OP_NOT_WORD_BOUNDARY: | - |
2525 | case OP_WORD_BOUNDARY: | - |
2526 | add_jump(compiler, &common->wordboundary, sljit_emit_jump(compiler, (23))); | - |
2527 | add_jump(compiler, fallbacks, sljit_emit_jump(compiler, (type == OP_NOT_WORD_BOUNDARY ? 1 : 0))); | - |
2528 | return cc; executed: return cc; Execution Count:1 | 1 |
2529 | | - |
2530 | case OP_NOT_DIGIT: | - |
2531 | case OP_DIGIT: | - |
2532 | check_input_end(common, fallbacks); | - |
2533 | read_char8_type(common); | - |
2534 | sljit_emit_op2(compiler, (28 | 0x0200), (0), (0), (1), (0), (0x200), (0x04)); | - |
2535 | add_jump(compiler, fallbacks, sljit_emit_jump(compiler, (type == OP_DIGIT ? 0 : 1))); | - |
2536 | return cc; never executed: return cc; | 0 |
2537 | | - |
2538 | case OP_NOT_WHITESPACE: | - |
2539 | case OP_WHITESPACE: | - |
2540 | check_input_end(common, fallbacks); | - |
2541 | read_char8_type(common); | - |
2542 | sljit_emit_op2(compiler, (28 | 0x0200), (0), (0), (1), (0), (0x200), (0x01)); | - |
2543 | add_jump(compiler, fallbacks, sljit_emit_jump(compiler, (type == OP_WHITESPACE ? 0 : 1))); | - |
2544 | return cc; never executed: return cc; | 0 |
2545 | | - |
2546 | case OP_NOT_WORDCHAR: | - |
2547 | case OP_WORDCHAR: | - |
2548 | check_input_end(common, fallbacks); | - |
2549 | read_char8_type(common); | - |
2550 | sljit_emit_op2(compiler, (28 | 0x0200), (0), (0), (1), (0), (0x200), (0x10)); | - |
2551 | add_jump(compiler, fallbacks, sljit_emit_jump(compiler, (type == OP_WORDCHAR ? 0 : 1))); | - |
2552 | return cc; never executed: return cc; | 0 |
2553 | | - |
2554 | case OP_ANY: | - |
2555 | check_input_end(common, fallbacks); | - |
2556 | read_char(common); | - |
2557 | if (common->nltype == 0 && common->newline > 255) evaluated: common->nltype == 0 yes Evaluation Count:4 | yes Evaluation Count:1 |
evaluated: common->newline > 255 yes Evaluation Count:2 | yes Evaluation Count:2 |
| 1-4 |
2558 | { | - |
2559 | jump[0] = sljit_emit_cmp(compiler, (1), (1), (0), (0x200), ((common->newline >> 8) & 0xff)); | - |
2560 | jump[1] = sljit_emit_cmp(compiler, (3), (6), (0), (7), (0)); | - |
2561 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (0)); | - |
2562 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (common->newline & 0xff))); | - |
2563 | sljit_set_label((jump[1]), sljit_emit_label(compiler)); | - |
2564 | sljit_set_label((jump[0]), sljit_emit_label(compiler)); | - |
2565 | } executed: } Execution Count:2 | 2 |
2566 | else | - |
2567 | check_newlinechar(common, common->nltype, fallbacks, 1); executed: check_newlinechar(common, common->nltype, fallbacks, 1); Execution Count:3 | 3 |
2568 | return cc; executed: return cc; Execution Count:5 | 5 |
2569 | | - |
2570 | case OP_ALLANY: | - |
2571 | check_input_end(common, fallbacks); | - |
2572 | | - |
2573 | if (common->utf) never evaluated: common->utf | 0 |
2574 | { | - |
2575 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (0)); | - |
2576 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
2577 | | - |
2578 | | - |
2579 | | - |
2580 | | - |
2581 | | - |
2582 | | - |
2583 | jump[0] = sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (0xd800)); | - |
2584 | sljit_emit_op2(compiler, (28), (1), (0), (1), (0), (0x200), (0xfc00)); | - |
2585 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (0xd800)); | - |
2586 | sljit_emit_cond_value(compiler, (6), (1), (0), (0)); | - |
2587 | sljit_emit_op2(compiler, (31), (1), (0), (1), (0), (0x200), (1)); | - |
2588 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (1), (0)); | - |
2589 | | - |
2590 | | - |
2591 | sljit_set_label((jump[0]), sljit_emit_label(compiler)); | - |
2592 | return cc; never executed: return cc; | 0 |
2593 | } | - |
2594 | | - |
2595 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
2596 | return cc; never executed: return cc; | 0 |
2597 | | - |
2598 | case OP_ANYBYTE: | - |
2599 | check_input_end(common, fallbacks); | - |
2600 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
2601 | return cc; never executed: return cc; | 0 |
2602 | | - |
2603 | | - |
2604 | | - |
2605 | case OP_NOTPROP: | - |
2606 | case OP_PROP: | - |
2607 | propdata[0] = 0; | - |
2608 | propdata[1] = type == OP_NOTPROP ? 4 : 3; never evaluated: type == OP_NOTPROP | 0 |
2609 | propdata[2] = cc[0]; | - |
2610 | propdata[3] = cc[1]; | - |
2611 | propdata[4] = 0; | - |
2612 | compile_xclass_hotpath(common, propdata, fallbacks); | - |
2613 | return cc + 2; never executed: return cc + 2; | 0 |
2614 | | - |
2615 | | - |
2616 | | - |
2617 | case OP_ANYNL: | - |
2618 | check_input_end(common, fallbacks); | - |
2619 | read_char(common); | - |
2620 | jump[0] = sljit_emit_cmp(compiler, (1), (1), (0), (0x200), ('\015')); | - |
2621 | jump[1] = sljit_emit_cmp(compiler, (3), (6), (0), (7), (0)); | - |
2622 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (0)); | - |
2623 | jump[2] = sljit_emit_cmp(compiler, (1), (1), (0), (0x200), ('\012')); | - |
2624 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((1) << 1))); | - |
2625 | jump[3] = sljit_emit_jump(compiler, (22)); | - |
2626 | sljit_set_label((jump[0]), sljit_emit_label(compiler)); | - |
2627 | check_newlinechar(common, common->bsr_nltype, fallbacks, 0); | - |
2628 | sljit_set_label((jump[1]), sljit_emit_label(compiler)); | - |
2629 | sljit_set_label((jump[2]), sljit_emit_label(compiler)); | - |
2630 | sljit_set_label((jump[3]), sljit_emit_label(compiler)); | - |
2631 | return cc; never executed: return cc; | 0 |
2632 | | - |
2633 | case OP_NOT_HSPACE: | - |
2634 | case OP_HSPACE: | - |
2635 | check_input_end(common, fallbacks); | - |
2636 | read_char(common); | - |
2637 | add_jump(compiler, &common->hspace, sljit_emit_jump(compiler, (23))); | - |
2638 | add_jump(compiler, fallbacks, sljit_emit_jump(compiler, (type == OP_NOT_HSPACE ? 1 : 0))); | - |
2639 | return cc; never executed: return cc; | 0 |
2640 | | - |
2641 | case OP_NOT_VSPACE: | - |
2642 | case OP_VSPACE: | - |
2643 | check_input_end(common, fallbacks); | - |
2644 | read_char(common); | - |
2645 | add_jump(compiler, &common->vspace, sljit_emit_jump(compiler, (23))); | - |
2646 | add_jump(compiler, fallbacks, sljit_emit_jump(compiler, (type == OP_NOT_VSPACE ? 1 : 0))); | - |
2647 | return cc; never executed: return cc; | 0 |
2648 | | - |
2649 | | - |
2650 | case OP_EXTUNI: | - |
2651 | check_input_end(common, fallbacks); | - |
2652 | read_char(common); | - |
2653 | add_jump(compiler, &common->getucd, sljit_emit_jump(compiler, (23))); | - |
2654 | sljit_emit_op2(compiler, (25), (1), (0), (1), (0), (0x200), (ucp_Mc)); | - |
2655 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (5), (1), (0), (0x200), (ucp_Mn - ucp_Mc))); | - |
2656 | | - |
2657 | label = sljit_emit_label(compiler); | - |
2658 | jump[0] = sljit_emit_cmp(compiler, (3), (6), (0), (7), (0)); | - |
2659 | sljit_emit_op1(compiler, (6), (5), (0), (6), (0)); | - |
2660 | read_char(common); | - |
2661 | add_jump(compiler, &common->getucd, sljit_emit_jump(compiler, (23))); | - |
2662 | sljit_emit_op2(compiler, (25), (1), (0), (1), (0), (0x200), (ucp_Mc)); | - |
2663 | sljit_set_label(sljit_emit_cmp(compiler, (5), (1), (0), (0x200), (ucp_Mn - ucp_Mc)), (label)); | - |
2664 | | - |
2665 | sljit_emit_op1(compiler, (6), (6), (0), (5), (0)); | - |
2666 | sljit_set_label((jump[0]), sljit_emit_label(compiler)); | - |
2667 | return cc; never executed: return cc; | 0 |
2668 | | - |
2669 | | - |
2670 | case OP_EODN: | - |
2671 | jump[0] = sljit_emit_cmp(compiler, (3), (6), (0), (7), (0)); | - |
2672 | if (common->nltype == 0 && common->newline > 255) never evaluated: common->nltype == 0 never evaluated: common->newline > 255 | 0 |
2673 | { | - |
2674 | sljit_emit_op2(compiler, (23), (3), (0), (6), (0), (0x200), (((2) << 1))); | - |
2675 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (((0) << 1))); | - |
2676 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (3), (0), (7), (0))); | - |
2677 | sljit_emit_op1(compiler, (9), (3), (0), ((0x100 | (6))), (((1) << 1))); | - |
2678 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (1), (0), (0x200), ((common->newline >> 8) & 0xff))); | - |
2679 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (3), (0), (0x200), (common->newline & 0xff))); | - |
2680 | } | 0 |
2681 | else if (common->nltype == 0) never evaluated: common->nltype == 0 | 0 |
2682 | { | - |
2683 | sljit_emit_op2(compiler, (23), (3), (0), (6), (0), (0x200), (((1) << 1))); | - |
2684 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (((0) << 1))); | - |
2685 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (3), (0), (7), (0))); | - |
2686 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (1), (0), (0x200), (common->newline))); | - |
2687 | } | 0 |
2688 | else | - |
2689 | { | - |
2690 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (((0) << 1))); | - |
2691 | jump[1] = sljit_emit_cmp(compiler, (1), (1), (0), (0x200), ('\015')); | - |
2692 | sljit_emit_op2(compiler, (23), (3), (0), (6), (0), (0x200), (((2) << 1))); | - |
2693 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (3), (0), (7), (0)); | - |
2694 | jump[2] = sljit_emit_jump(compiler, (4)); | - |
2695 | add_jump(compiler, fallbacks, sljit_emit_jump(compiler, (2))); | - |
2696 | | - |
2697 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (((1) << 1))); | - |
2698 | jump[3] = sljit_emit_cmp(compiler, (0), (1), (0), (0x200), ('\012')); | - |
2699 | add_jump(compiler, fallbacks, sljit_emit_jump(compiler, (22))); | - |
2700 | | - |
2701 | sljit_set_label((jump[1]), sljit_emit_label(compiler)); | - |
2702 | if (common->nltype == 2) never evaluated: common->nltype == 2 | 0 |
2703 | { | - |
2704 | sljit_emit_op2(compiler, (23), (3), (0), (6), (0), (0x200), (((1) << 1))); | - |
2705 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (2), (3), (0), (7), (0))); | - |
2706 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (1), (0), (0x200), ('\012'))); | - |
2707 | } | 0 |
2708 | else | - |
2709 | { | - |
2710 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((1 * sizeof(sljit_w))), (6), (0)); | - |
2711 | read_char(common); | - |
2712 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (6), (0), (7), (0))); | - |
2713 | add_jump(compiler, &common->anynewline, sljit_emit_jump(compiler, (23))); | - |
2714 | add_jump(compiler, fallbacks, sljit_emit_jump(compiler, (0))); | - |
2715 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (11))), ((1 * sizeof(sljit_w)))); | - |
2716 | } | 0 |
2717 | sljit_set_label((jump[2]), sljit_emit_label(compiler)); | - |
2718 | sljit_set_label((jump[3]), sljit_emit_label(compiler)); | - |
2719 | } | 0 |
2720 | sljit_set_label((jump[0]), sljit_emit_label(compiler)); | - |
2721 | return cc; never executed: return cc; | 0 |
2722 | | - |
2723 | case OP_EOD: | - |
2724 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (6), (0), (7), (0))); | - |
2725 | return cc; never executed: return cc; | 0 |
2726 | | - |
2727 | case OP_CIRC: | - |
2728 | sljit_emit_op1(compiler, (6), (3), (0), (9), (0)); | - |
2729 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (3))), (((sljit_w)(&((jit_arguments*)0x10)->begin) - 0x10))); | - |
2730 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (4), (6), (0), (1), (0))); | - |
2731 | sljit_emit_op1(compiler, (7), (3), (0), ((0x100 | (3))), (((sljit_w)(&((jit_arguments*)0x10)->notbol) - 0x10))); | - |
2732 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (3), (0), (0x200), (0))); | - |
2733 | return cc; never executed: return cc; | 0 |
2734 | | - |
2735 | case OP_CIRCM: | - |
2736 | sljit_emit_op1(compiler, (6), (3), (0), (9), (0)); | - |
2737 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (3))), (((sljit_w)(&((jit_arguments*)0x10)->begin) - 0x10))); | - |
2738 | jump[1] = sljit_emit_cmp(compiler, (4), (6), (0), (1), (0)); | - |
2739 | sljit_emit_op1(compiler, (7), (3), (0), ((0x100 | (3))), (((sljit_w)(&((jit_arguments*)0x10)->notbol) - 0x10))); | - |
2740 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (3), (0), (0x200), (0))); | - |
2741 | jump[0] = sljit_emit_jump(compiler, (22)); | - |
2742 | sljit_set_label((jump[1]), sljit_emit_label(compiler)); | - |
2743 | | - |
2744 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (0), (6), (0), (7), (0))); | - |
2745 | if (common->nltype == 0 && common->newline > 255) never evaluated: common->nltype == 0 never evaluated: common->newline > 255 | 0 |
2746 | { | - |
2747 | sljit_emit_op2(compiler, (25), (3), (0), (6), (0), (0x200), (((2) << 1))); | - |
2748 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (2), (3), (0), (1), (0))); | - |
2749 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (((-2) << 1))); | - |
2750 | sljit_emit_op1(compiler, (9), (3), (0), ((0x100 | (6))), (((-1) << 1))); | - |
2751 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (1), (0), (0x200), ((common->newline >> 8) & 0xff))); | - |
2752 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (3), (0), (0x200), (common->newline & 0xff))); | - |
2753 | } | 0 |
2754 | else | - |
2755 | { | - |
2756 | skip_char_back(common); | - |
2757 | read_char(common); | - |
2758 | check_newlinechar(common, common->nltype, fallbacks, 0); | - |
2759 | } | 0 |
2760 | sljit_set_label((jump[0]), sljit_emit_label(compiler)); | - |
2761 | return cc; never executed: return cc; | 0 |
2762 | | - |
2763 | case OP_DOLL: | - |
2764 | sljit_emit_op1(compiler, (6), (3), (0), (9), (0)); | - |
2765 | sljit_emit_op1(compiler, (7), (3), (0), ((0x100 | (3))), (((sljit_w)(&((jit_arguments*)0x10)->noteol) - 0x10))); | - |
2766 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (3), (0), (0x200), (0))); | - |
2767 | | - |
2768 | if (!common->endonly) never evaluated: !common->endonly | 0 |
2769 | compile_char1_hotpath(common, OP_EODN, cc, fallbacks); never executed: compile_char1_hotpath(common, OP_EODN, cc, fallbacks); | 0 |
2770 | else | - |
2771 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (2), (6), (0), (7), (0))); never executed: add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (2), (6), (0), (7), (0))); | 0 |
2772 | return cc; never executed: return cc; | 0 |
2773 | | - |
2774 | case OP_DOLLM: | - |
2775 | jump[1] = sljit_emit_cmp(compiler, (2), (6), (0), (7), (0)); | - |
2776 | sljit_emit_op1(compiler, (6), (3), (0), (9), (0)); | - |
2777 | sljit_emit_op1(compiler, (7), (3), (0), ((0x100 | (3))), (((sljit_w)(&((jit_arguments*)0x10)->noteol) - 0x10))); | - |
2778 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (3), (0), (0x200), (0))); | - |
2779 | jump[0] = sljit_emit_jump(compiler, (22)); | - |
2780 | sljit_set_label((jump[1]), sljit_emit_label(compiler)); | - |
2781 | | - |
2782 | if (common->nltype == 0 && common->newline > 255) never evaluated: common->nltype == 0 never evaluated: common->newline > 255 | 0 |
2783 | { | - |
2784 | sljit_emit_op2(compiler, (23), (3), (0), (6), (0), (0x200), (((2) << 1))); | - |
2785 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (4), (3), (0), (7), (0))); | - |
2786 | sljit_emit_op1(compiler, (9), (1), (0), ((0x100 | (6))), (((0) << 1))); | - |
2787 | sljit_emit_op1(compiler, (9), (3), (0), ((0x100 | (6))), (((1) << 1))); | - |
2788 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (1), (0), (0x200), ((common->newline >> 8) & 0xff))); | - |
2789 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (3), (0), (0x200), (common->newline & 0xff))); | - |
2790 | } | 0 |
2791 | else | - |
2792 | { | - |
2793 | peek_char(common); | - |
2794 | check_newlinechar(common, common->nltype, fallbacks, 0); | - |
2795 | } | 0 |
2796 | sljit_set_label((jump[0]), sljit_emit_label(compiler)); | - |
2797 | return cc; never executed: return cc; | 0 |
2798 | | - |
2799 | case OP_CHAR: | - |
2800 | case OP_CHARI: | - |
2801 | length = 1; | - |
2802 | | - |
2803 | if (common->utf && (((*cc) & 0xfc00) == 0xd800)) length += 1; partially evaluated: common->utf yes Evaluation Count:2 | no Evaluation Count:0 |
partially evaluated: (((*cc) & 0xfc00) == 0xd800) no Evaluation Count:0 | yes Evaluation Count:2 |
never executed: length += 1; | 0-2 |
2804 | | - |
2805 | if (type == OP_CHAR || !char_has_othercase(common, cc) || char_get_othercase_bit(common, cc) != 0) partially evaluated: type == OP_CHAR yes Evaluation Count:2 | no Evaluation Count:0 |
never evaluated: !char_has_othercase(common, cc) never evaluated: char_get_othercase_bit(common, cc) != 0 | 0-2 |
2806 | { | - |
2807 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (((length) << 1))); | - |
2808 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (4), (6), (0), (7), (0))); | - |
2809 | | - |
2810 | context.length = ((length) << 1); | - |
2811 | context.sourcereg = -1; | - |
2812 | | - |
2813 | context.ucharptr = 0; | - |
2814 | | - |
2815 | return byte_sequence_compare(common, type == OP_CHARI, cc, &context, fallbacks); executed: return byte_sequence_compare(common, type == OP_CHARI, cc, &context, fallbacks); Execution Count:2 | 2 |
2816 | } | - |
2817 | check_input_end(common, fallbacks); | - |
2818 | read_char(common); | - |
2819 | | - |
2820 | if (common->utf) never evaluated: common->utf | 0 |
2821 | { | - |
2822 | c = *cc; if ((c & 0xfc00) == 0xd800) { c = (((c & 0x3ff) << 10) | (cc[1] & 0x3ff)) + 0x10000; };; never evaluated: (c & 0xfc00) == 0xd800 | 0 |
2823 | } | 0 |
2824 | else | - |
2825 | | - |
2826 | c = *cc; | 0 |
2827 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (c)); | - |
2828 | sljit_emit_cond_value(compiler, (6), (3), (0), (0)); | - |
2829 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), (0x200), (char_othercase(common, c))); | - |
2830 | sljit_emit_cond_value(compiler, (29 | 0x0200), (3), (0), (0)); | - |
2831 | add_jump(compiler, fallbacks, sljit_emit_jump(compiler, (0))); | - |
2832 | return cc + length; never executed: return cc + length; | 0 |
2833 | | - |
2834 | case OP_NOT: | - |
2835 | case OP_NOTI: | - |
2836 | check_input_end(common, fallbacks); | - |
2837 | length = 1; | - |
2838 | | - |
2839 | if (common->utf) never evaluated: common->utf | 0 |
2840 | { | - |
2841 | { | - |
2842 | c = *cc; if ((c & 0xfc00) == 0xd800) { c = (((c & 0x3ff) << 10) | (cc[1] & 0x3ff)) + 0x10000; length++; };; never evaluated: (c & 0xfc00) == 0xd800 | 0 |
2843 | read_char(common); | - |
2844 | } | - |
2845 | } | 0 |
2846 | else | - |
2847 | | - |
2848 | { | - |
2849 | read_char(common); | - |
2850 | c = *cc; | - |
2851 | } | 0 |
2852 | | - |
2853 | if (type == OP_NOT || !char_has_othercase(common, cc)) never evaluated: type == OP_NOT never evaluated: !char_has_othercase(common, cc) | 0 |
2854 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (c))); never executed: add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (c))); | 0 |
2855 | else | - |
2856 | { | - |
2857 | oc = char_othercase(common, c); | - |
2858 | bit = c ^ oc; | - |
2859 | if (ispowerof2(bit)) never evaluated: ispowerof2(bit) | 0 |
2860 | { | - |
2861 | sljit_emit_op2(compiler, (29), (1), (0), (1), (0), (0x200), (bit)); | - |
2862 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (c | bit))); | - |
2863 | } | 0 |
2864 | else | - |
2865 | { | - |
2866 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (c))); | - |
2867 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (oc))); | - |
2868 | } | 0 |
2869 | } | - |
2870 | return cc + 1; never executed: return cc + 1; | 0 |
2871 | | - |
2872 | case OP_CLASS: | - |
2873 | case OP_NCLASS: | - |
2874 | check_input_end(common, fallbacks); | - |
2875 | read_char(common); | - |
2876 | | - |
2877 | jump[0] = ((void *)0); | - |
2878 | | - |
2879 | | - |
2880 | | - |
2881 | | - |
2882 | | - |
2883 | { | - |
2884 | jump[0] = sljit_emit_cmp(compiler, (4), (1), (0), (0x200), (255)); | - |
2885 | if (type == OP_CLASS) never evaluated: type == OP_CLASS | 0 |
2886 | { | - |
2887 | add_jump(compiler, fallbacks, jump[0]); | - |
2888 | jump[0] = ((void *)0); | - |
2889 | } | 0 |
2890 | } | - |
2891 | | - |
2892 | sljit_emit_op2(compiler, (28), (3), (0), (1), (0), (0x200), (0x7)); | - |
2893 | sljit_emit_op2(compiler, (32), (1), (0), (1), (0), (0x200), (3)); | - |
2894 | sljit_emit_op1(compiler, (7), (1), (0), ((0x100 | (1))), ((sljit_w)cc)); | - |
2895 | sljit_emit_op2(compiler, (31), (3), (0), (0x200), (1), (3), (0)); | - |
2896 | sljit_emit_op2(compiler, (28 | 0x0200), (0), (0), (1), (0), (3), (0)); | - |
2897 | add_jump(compiler, fallbacks, sljit_emit_jump(compiler, (0))); | - |
2898 | | - |
2899 | if (jump[0] != ((void *)0)) never evaluated: jump[0] != ((void *)0) | 0 |
2900 | sljit_set_label((jump[0]), sljit_emit_label(compiler)); never executed: sljit_set_label((jump[0]), sljit_emit_label(compiler)); | 0 |
2901 | | - |
2902 | return cc + 32 / sizeof(pcre_uchar); never executed: return cc + 32 / sizeof(pcre_uchar); | 0 |
2903 | | - |
2904 | | - |
2905 | case OP_XCLASS: | - |
2906 | compile_xclass_hotpath(common, cc + 1, fallbacks); | - |
2907 | return cc + (cc[0]) - 1; executed: return cc + (cc[0]) - 1; Execution Count:1 | 1 |
2908 | | - |
2909 | | - |
2910 | case OP_REVERSE: | - |
2911 | length = (cc[0]); | - |
2912 | do { } while (0); | 0 |
2913 | sljit_emit_op1(compiler, (6), (1), (0), (9), (0)); | - |
2914 | | - |
2915 | if (common->utf) never evaluated: common->utf | 0 |
2916 | { | - |
2917 | sljit_emit_op1(compiler, (6), (5), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->begin) - 0x10))); | - |
2918 | sljit_emit_op1(compiler, (6), (3), (0), (0x200), (length)); | - |
2919 | label = sljit_emit_label(compiler); | - |
2920 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (5), (6), (0), (5), (0))); | - |
2921 | skip_char_back(common); | - |
2922 | sljit_emit_op2(compiler, (25 | 0x0200), (3), (0), (3), (0), (0x200), (1)); | - |
2923 | sljit_set_label(sljit_emit_jump(compiler, (1)), (label)); | - |
2924 | return cc + 1; never executed: return cc + 1; | 0 |
2925 | } | - |
2926 | | - |
2927 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->begin) - 0x10))); | - |
2928 | sljit_emit_op2(compiler, (25), (6), (0), (6), (0), (0x200), (((length) << 1))); | - |
2929 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (2), (6), (0), (1), (0))); | - |
2930 | return cc + 1; never executed: return cc + 1; | 0 |
2931 | } | - |
2932 | do { } while (0); | 0 |
2933 | return cc; never executed: return cc; | 0 |
2934 | } | - |
2935 | | - |
2936 | static __inline pcre_uchar *compile_charn_hotpath(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend, jump_list **fallbacks) | - |
2937 | { | - |
2938 | | - |
2939 | | - |
2940 | struct sljit_compiler *compiler = common->compiler; | - |
2941 | pcre_uchar *ccbegin = cc; | - |
2942 | compare_context context; | - |
2943 | int size; | - |
2944 | | - |
2945 | context.length = 0; | - |
2946 | do | - |
2947 | { | - |
2948 | if (cc >= ccend) evaluated: cc >= ccend yes Evaluation Count:7 | yes Evaluation Count:7 |
| 7 |
2949 | break; executed: break; Execution Count:7 | 7 |
2950 | | - |
2951 | if (*cc == OP_CHAR) partially evaluated: *cc == OP_CHAR yes Evaluation Count:7 | no Evaluation Count:0 |
| 0-7 |
2952 | { | - |
2953 | size = 1; | - |
2954 | | - |
2955 | if (common->utf && (((cc[1]) & 0xfc00) == 0xd800)) partially evaluated: common->utf yes Evaluation Count:7 | no Evaluation Count:0 |
partially evaluated: (((cc[1]) & 0xfc00) == 0xd800) no Evaluation Count:0 | yes Evaluation Count:7 |
| 0-7 |
2956 | size += 1; never executed: size += 1; | 0 |
2957 | | - |
2958 | } executed: } Execution Count:7 | 7 |
2959 | else if (*cc == OP_CHARI) never evaluated: *cc == OP_CHARI | 0 |
2960 | { | - |
2961 | size = 1; | - |
2962 | | - |
2963 | if (common->utf) never evaluated: common->utf | 0 |
2964 | { | - |
2965 | if (char_has_othercase(common, cc + 1) && char_get_othercase_bit(common, cc + 1) == 0) never evaluated: char_has_othercase(common, cc + 1) never evaluated: char_get_othercase_bit(common, cc + 1) == 0 | 0 |
2966 | size = 0; never executed: size = 0; | 0 |
2967 | else if ((((cc[1]) & 0xfc00) == 0xd800)) never evaluated: (((cc[1]) & 0xfc00) == 0xd800) | 0 |
2968 | size += 1; never executed: size += 1; | 0 |
2969 | } | - |
2970 | else | - |
2971 | | - |
2972 | if (char_has_othercase(common, cc + 1) && char_get_othercase_bit(common, cc + 1) == 0) never evaluated: char_has_othercase(common, cc + 1) never evaluated: char_get_othercase_bit(common, cc + 1) == 0 | 0 |
2973 | size = 0; never executed: size = 0; | 0 |
2974 | } | - |
2975 | else | - |
2976 | size = 0; never executed: size = 0; | 0 |
2977 | | - |
2978 | cc += 1 + size; | - |
2979 | context.length += ((size) << 1); | - |
2980 | } executed: } Execution Count:7 | 7 |
2981 | while (size > 0 && context.length <= 128); partially evaluated: size > 0 yes Evaluation Count:7 | no Evaluation Count:0 |
partially evaluated: context.length <= 128 yes Evaluation Count:7 | no Evaluation Count:0 |
| 0-7 |
2982 | | - |
2983 | cc = ccbegin; | - |
2984 | if (context.length > 0) partially evaluated: context.length > 0 yes Evaluation Count:7 | no Evaluation Count:0 |
| 0-7 |
2985 | { | - |
2986 | | - |
2987 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (0x200), (context.length)); | - |
2988 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (4), (6), (0), (7), (0))); | - |
2989 | | - |
2990 | context.sourcereg = -1; | - |
2991 | | - |
2992 | context.ucharptr = 0; | - |
2993 | | - |
2994 | do cc = byte_sequence_compare(common, *cc == OP_CHARI, cc + 1, &context, fallbacks); while (context.length > 0); partially evaluated: context.length > 0 no Evaluation Count:0 | yes Evaluation Count:7 |
executed: cc = byte_sequence_compare(common, *cc == OP_CHARI, cc + 1, &context, fallbacks); Execution Count:7 | 0-7 |
2995 | return cc; executed: return cc; Execution Count:7 | 7 |
2996 | } | - |
2997 | | - |
2998 | | - |
2999 | return compile_char1_hotpath(common, *cc, cc + 1, fallbacks); never executed: return compile_char1_hotpath(common, *cc, cc + 1, fallbacks); | 0 |
3000 | } | - |
3001 | | - |
3002 | static struct sljit_jump *compile_ref_checks(compiler_common *common, pcre_uchar *cc, jump_list **fallbacks) | - |
3003 | { | - |
3004 | struct sljit_compiler *compiler = common->compiler; | - |
3005 | int offset = cc[1] << 1; | - |
3006 | | - |
3007 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset) * sizeof(sljit_w)))); | - |
3008 | if (!common->jscript_compat) never evaluated: !common->jscript_compat | 0 |
3009 | { | - |
3010 | if (fallbacks == ((void *)0)) never evaluated: fallbacks == ((void *)0) | 0 |
3011 | { | - |
3012 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (1) * sizeof(sljit_w)))); | - |
3013 | sljit_emit_cond_value(compiler, (6), (3), (0), (0)); | - |
3014 | sljit_emit_op2(compiler, (25 | 0x0200), (0), (0), (1), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 1) * sizeof(sljit_w)))); | - |
3015 | sljit_emit_cond_value(compiler, (29 | 0x0200), (3), (0), (0)); | - |
3016 | return sljit_emit_jump(compiler, (1)); never executed: return sljit_emit_jump(compiler, (1)); | 0 |
3017 | } | - |
3018 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (0), (1), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (1) * sizeof(sljit_w))))); | - |
3019 | } | 0 |
3020 | return sljit_emit_cmp(compiler, (0), (1), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 1) * sizeof(sljit_w)))); never executed: return sljit_emit_cmp(compiler, (0), (1), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 1) * sizeof(sljit_w)))); | 0 |
3021 | } | - |
3022 | | - |
3023 | | - |
3024 | static void compile_hotpath(compiler_common *, pcre_uchar *, pcre_uchar *, fallback_common *); | - |
3025 | static void compile_fallbackpath(compiler_common *, struct fallback_common *); | - |
3026 | static pcre_uchar *compile_ref_hotpath(compiler_common *common, pcre_uchar *cc, jump_list **fallbacks, BOOL withchecks, BOOL emptyfail) | - |
3027 | { | - |
3028 | struct sljit_compiler *compiler = common->compiler; | - |
3029 | int offset = cc[1] << 1; | - |
3030 | struct sljit_jump *jump = ((void *)0); | - |
3031 | | - |
3032 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset) * sizeof(sljit_w)))); | - |
3033 | if (withchecks && !common->jscript_compat) never evaluated: withchecks never evaluated: !common->jscript_compat | 0 |
3034 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (0), (1), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (1) * sizeof(sljit_w))))); never executed: add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (0), (1), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (1) * sizeof(sljit_w))))); | 0 |
3035 | | - |
3036 | | - |
3037 | if (common->utf && *cc == OP_REFI) never evaluated: common->utf never evaluated: *cc == OP_REFI | 0 |
3038 | { | - |
3039 | do { } while (0); | 0 |
3040 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 1) * sizeof(sljit_w)))); | - |
3041 | if (withchecks) never evaluated: withchecks | 0 |
3042 | jump = sljit_emit_cmp(compiler, (0), (1), (0), (3), (0)); never executed: jump = sljit_emit_cmp(compiler, (0), (1), (0), (3), (0)); | 0 |
3043 | | - |
3044 | | - |
3045 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((0 * sizeof(sljit_w))), (2), (0)); | - |
3046 | sljit_emit_op1(compiler, (6), (2), (0), (9), (0)); | - |
3047 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((sljit_w)(&((jit_arguments*)0x10)->ptr) - 0x10)), (6), (0)); | - |
3048 | sljit_emit_ijump(compiler, 27, 0x200, ((sljit_w)do_utf_caselesscmp)); | - |
3049 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), ((0 * sizeof(sljit_w)))); | - |
3050 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (0))); | - |
3051 | sljit_emit_op1(compiler, (6), (6), (0), (1), (0)); | - |
3052 | } | 0 |
3053 | else | - |
3054 | | - |
3055 | { | - |
3056 | sljit_emit_op2(compiler, (25 | 0x0200), (3), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 1) * sizeof(sljit_w))), (1), (0)); | - |
3057 | if (withchecks) never evaluated: withchecks | 0 |
3058 | jump = sljit_emit_jump(compiler, (0)); never executed: jump = sljit_emit_jump(compiler, (0)); | 0 |
3059 | sljit_emit_op2(compiler, (23), (6), (0), (6), (0), (3), (0)); | - |
3060 | | - |
3061 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (4), (6), (0), (7), (0))); | - |
3062 | add_jump(compiler, *cc == OP_REF ? &common->casefulcmp : &common->caselesscmp, sljit_emit_jump(compiler, (23))); | - |
3063 | add_jump(compiler, fallbacks, sljit_emit_cmp(compiler, (1), (3), (0), (0x200), (0))); | - |
3064 | } | 0 |
3065 | | - |
3066 | if (jump != ((void *)0)) never evaluated: jump != ((void *)0) | 0 |
3067 | { | - |
3068 | if (emptyfail) never evaluated: emptyfail | 0 |
3069 | add_jump(compiler, fallbacks, jump); never executed: add_jump(compiler, fallbacks, jump); | 0 |
3070 | else | - |
3071 | sljit_set_label((jump), sljit_emit_label(compiler)); never executed: sljit_set_label((jump), sljit_emit_label(compiler)); | 0 |
3072 | } | - |
3073 | return cc + 1 + 1; never executed: return cc + 1 + 1; | 0 |
3074 | } | - |
3075 | | - |
3076 | static __inline pcre_uchar *compile_ref_iterator_hotpath(compiler_common *common, pcre_uchar *cc, fallback_common *parent) | - |
3077 | { | - |
3078 | struct sljit_compiler *compiler = common->compiler; | - |
3079 | fallback_common *fallback; | - |
3080 | pcre_uchar type; | - |
3081 | struct sljit_label *label; | - |
3082 | struct sljit_jump *zerolength; | - |
3083 | struct sljit_jump *jump = ((void *)0); | - |
3084 | pcre_uchar *ccbegin = cc; | - |
3085 | int min = 0, max = 0; | - |
3086 | BOOL minimize; | - |
3087 | | - |
3088 | do { fallback = sljit_alloc_memory(compiler, (sizeof(iterator_fallback))); if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) return ((void *)0); memset(fallback, 0, sizeof(iterator_fallback)); fallback->prev = parent->top; fallback->cc = (cc); parent->top = fallback; } while (0); never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) never executed: return ((void *)0); | 0 |
3089 | | - |
3090 | type = cc[1 + 1]; | - |
3091 | minimize = (type & 0x1) != 0; | - |
3092 | switch(type) | - |
3093 | { | - |
3094 | case OP_CRSTAR: | - |
3095 | case OP_CRMINSTAR: | - |
3096 | min = 0; | - |
3097 | max = 0; | - |
3098 | cc += 1 + 1 + 1; | - |
3099 | break; | 0 |
3100 | case OP_CRPLUS: | - |
3101 | case OP_CRMINPLUS: | - |
3102 | min = 1; | - |
3103 | max = 0; | - |
3104 | cc += 1 + 1 + 1; | - |
3105 | break; | 0 |
3106 | case OP_CRQUERY: | - |
3107 | case OP_CRMINQUERY: | - |
3108 | min = 0; | - |
3109 | max = 1; | - |
3110 | cc += 1 + 1 + 1; | - |
3111 | break; | 0 |
3112 | case OP_CRRANGE: | - |
3113 | case OP_CRMINRANGE: | - |
3114 | min = cc[1 + 1 + 1]; | - |
3115 | max = cc[1 + 1 + 1 + 1]; | - |
3116 | cc += 1 + 1 + 1 + 2 * 1; | - |
3117 | break; | 0 |
3118 | default: | - |
3119 | do { } while (0); | 0 |
3120 | break; | 0 |
3121 | } | - |
3122 | | - |
3123 | if (!minimize) never evaluated: !minimize | 0 |
3124 | { | - |
3125 | if (min == 0) never evaluated: min == 0 | 0 |
3126 | { | - |
3127 | allocate_stack(common, 2); | - |
3128 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
3129 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
3130 | | - |
3131 | sljit_emit_op2(compiler, (25), (2), (0), (2), (0), (0x200), (sizeof(sljit_w))); | - |
3132 | zerolength = compile_ref_checks(common, ccbegin, ((void *)0)); | - |
3133 | | - |
3134 | sljit_emit_op2(compiler, (23), (2), (0), (2), (0), (0x200), (sizeof(sljit_w))); | - |
3135 | } | 0 |
3136 | else | - |
3137 | { | - |
3138 | allocate_stack(common, 1); | - |
3139 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
3140 | zerolength = compile_ref_checks(common, ccbegin, &fallback->topfallbacks); | - |
3141 | } | 0 |
3142 | | - |
3143 | if (min > 1 || max > 1) | 0 |
3144 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (0x200), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (0x200), (0)); | 0 |
3145 | | - |
3146 | label = sljit_emit_label(compiler); | - |
3147 | compile_ref_hotpath(common, ccbegin, &fallback->topfallbacks, 0, 0); | - |
3148 | | - |
3149 | if (min > 1 || max > 1) | 0 |
3150 | { | - |
3151 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), ((2 * sizeof(sljit_w)))); | - |
3152 | sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (1)); | - |
3153 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (1), (0)); | - |
3154 | if (min > 1) | 0 |
3155 | sljit_set_label(sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (min)), (label)); never executed: sljit_set_label(sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (min)), (label)); | 0 |
3156 | if (max > 1) | 0 |
3157 | { | - |
3158 | jump = sljit_emit_cmp(compiler, (3), (1), (0), (0x200), (max)); | - |
3159 | allocate_stack(common, 1); | - |
3160 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
3161 | sljit_set_label(sljit_emit_jump(compiler, (22)), (label)); | - |
3162 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
3163 | } | 0 |
3164 | } | 0 |
3165 | | - |
3166 | if (max == 0) never evaluated: max == 0 | 0 |
3167 | { | - |
3168 | | - |
3169 | allocate_stack(common, 1); | - |
3170 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
3171 | sljit_set_label(sljit_emit_jump(compiler, (22)), (label)); | - |
3172 | } | 0 |
3173 | | - |
3174 | sljit_set_label((zerolength), sljit_emit_label(compiler)); | - |
3175 | ((iterator_fallback*)fallback)->hotpath = sljit_emit_label(compiler); | - |
3176 | | - |
3177 | decrease_call_count(common); | - |
3178 | return cc; never executed: return cc; | 0 |
3179 | } | - |
3180 | | - |
3181 | allocate_stack(common, 2); | - |
3182 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
3183 | if (type != OP_CRMINSTAR) never evaluated: type != OP_CRMINSTAR | 0 |
3184 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | 0 |
3185 | | - |
3186 | if (min == 0) never evaluated: min == 0 | 0 |
3187 | { | - |
3188 | zerolength = compile_ref_checks(common, ccbegin, ((void *)0)); | - |
3189 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
3190 | jump = sljit_emit_jump(compiler, (22)); | - |
3191 | } | 0 |
3192 | else | - |
3193 | zerolength = compile_ref_checks(common, ccbegin, &fallback->topfallbacks); never executed: zerolength = compile_ref_checks(common, ccbegin, &fallback->topfallbacks); | 0 |
3194 | | - |
3195 | ((iterator_fallback*)fallback)->hotpath = sljit_emit_label(compiler); | - |
3196 | if (max > 0) | 0 |
3197 | add_jump(compiler, &fallback->topfallbacks, sljit_emit_cmp(compiler, (3), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (0x200), (max))); never executed: add_jump(compiler, &fallback->topfallbacks, sljit_emit_cmp(compiler, (3), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (0x200), (max))); | 0 |
3198 | | - |
3199 | compile_ref_hotpath(common, ccbegin, &fallback->topfallbacks, 1, 1); | - |
3200 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
3201 | | - |
3202 | if (min > 1) | 0 |
3203 | { | - |
3204 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w)))); | - |
3205 | sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (1)); | - |
3206 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (1), (0)); | - |
3207 | sljit_set_label(sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (min)), (((iterator_fallback*)fallback)->hotpath)); | - |
3208 | } | 0 |
3209 | else if (max > 0) | 0 |
3210 | sljit_emit_op2(compiler, (23), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (0x200), (1)); never executed: sljit_emit_op2(compiler, (23), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (0x200), (1)); | 0 |
3211 | | - |
3212 | if (jump != ((void *)0)) never evaluated: jump != ((void *)0) | 0 |
3213 | sljit_set_label((jump), sljit_emit_label(compiler)); never executed: sljit_set_label((jump), sljit_emit_label(compiler)); | 0 |
3214 | sljit_set_label((zerolength), sljit_emit_label(compiler)); | - |
3215 | | - |
3216 | decrease_call_count(common); | - |
3217 | return cc; never executed: return cc; | 0 |
3218 | } | - |
3219 | | - |
3220 | static __inline pcre_uchar *compile_recurse_hotpath(compiler_common *common, pcre_uchar *cc, fallback_common *parent) | - |
3221 | { | - |
3222 | struct sljit_compiler *compiler = common->compiler; | - |
3223 | fallback_common *fallback; | - |
3224 | recurse_entry *entry = common->entries; | - |
3225 | recurse_entry *prev = ((void *)0); | - |
3226 | int start = (cc[1]); | - |
3227 | | - |
3228 | do { fallback = sljit_alloc_memory(compiler, (sizeof(recurse_fallback))); if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) return ((void *)0); memset(fallback, 0, sizeof(recurse_fallback)); fallback->prev = parent->top; fallback->cc = (cc); parent->top = fallback; } while (0); never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) never executed: return ((void *)0); | 0 |
3229 | while (entry != ((void *)0)) never evaluated: entry != ((void *)0) | 0 |
3230 | { | - |
3231 | if (entry->start == start) never evaluated: entry->start == start | 0 |
3232 | break; | 0 |
3233 | prev = entry; | - |
3234 | entry = entry->next; | - |
3235 | } | 0 |
3236 | | - |
3237 | if (entry == ((void *)0)) never evaluated: entry == ((void *)0) | 0 |
3238 | { | - |
3239 | entry = sljit_alloc_memory(compiler, sizeof(recurse_entry)); | - |
3240 | if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) | 0 |
3241 | return ((void *)0); never executed: return ((void *)0); | 0 |
3242 | entry->next = ((void *)0); | - |
3243 | entry->entry = ((void *)0); | - |
3244 | entry->calls = ((void *)0); | - |
3245 | entry->start = start; | - |
3246 | | - |
3247 | if (prev != ((void *)0)) never evaluated: prev != ((void *)0) | 0 |
3248 | prev->next = entry; never executed: prev->next = entry; | 0 |
3249 | else | - |
3250 | common->entries = entry; never executed: common->entries = entry; | 0 |
3251 | } | - |
3252 | | - |
3253 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w)))); | - |
3254 | allocate_stack(common, 1); | - |
3255 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (3), (0)); | - |
3256 | | - |
3257 | if (entry->entry == ((void *)0)) never evaluated: entry->entry == ((void *)0) | 0 |
3258 | add_jump(compiler, &entry->calls, sljit_emit_jump(compiler, (23))); never executed: add_jump(compiler, &entry->calls, sljit_emit_jump(compiler, (23))); | 0 |
3259 | else | - |
3260 | sljit_set_label(sljit_emit_jump(compiler, (23)), (entry->entry)); never executed: sljit_set_label(sljit_emit_jump(compiler, (23)), (entry->entry)); | 0 |
3261 | | - |
3262 | add_jump(compiler, &fallback->topfallbacks, sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (0))); | - |
3263 | return cc + 1 + 1; never executed: return cc + 1 + 1; | 0 |
3264 | } | - |
3265 | | - |
3266 | static pcre_uchar *compile_assert_hotpath(compiler_common *common, pcre_uchar *cc, assert_fallback *fallback, BOOL conditional) | - |
3267 | { | - |
3268 | struct sljit_compiler *compiler = common->compiler; | - |
3269 | int framesize; | - |
3270 | int localptr; | - |
3271 | fallback_common altfallback; | - |
3272 | pcre_uchar *ccbegin; | - |
3273 | pcre_uchar opcode; | - |
3274 | pcre_uchar bra = OP_BRA; | - |
3275 | jump_list *tmp = ((void *)0); | - |
3276 | jump_list **target = (conditional) ? &fallback->condfailed : &fallback->common.topfallbacks; never evaluated: (conditional) | 0 |
3277 | jump_list **found; | - |
3278 | | - |
3279 | struct sljit_label *save_acceptlabel = common->acceptlabel; | - |
3280 | struct sljit_jump *jump; | - |
3281 | struct sljit_jump *brajump = ((void *)0); | - |
3282 | jump_list *save_accept = common->accept; | - |
3283 | | - |
3284 | if (*cc == OP_BRAZERO || *cc == OP_BRAMINZERO) never evaluated: *cc == OP_BRAZERO never evaluated: *cc == OP_BRAMINZERO | 0 |
3285 | { | - |
3286 | do { } while (0); | 0 |
3287 | bra = *cc; | - |
3288 | cc++; | - |
3289 | } | 0 |
3290 | localptr = (common->localptrs[(cc) - common->start]); | - |
3291 | do { } while (0); | 0 |
3292 | framesize = get_framesize(common, cc, 0); | - |
3293 | fallback->framesize = framesize; | - |
3294 | fallback->localptr = localptr; | - |
3295 | opcode = *cc; | - |
3296 | do { } while (0); | 0 |
3297 | found = (opcode == OP_ASSERT || opcode == OP_ASSERTBACK) ? &tmp : target; never evaluated: opcode == OP_ASSERT never evaluated: opcode == OP_ASSERTBACK | 0 |
3298 | ccbegin = cc; | - |
3299 | cc += (cc[1]); | - |
3300 | | - |
3301 | if (bra == OP_BRAMINZERO) never evaluated: bra == OP_BRAMINZERO | 0 |
3302 | { | - |
3303 | | - |
3304 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
3305 | free_stack(common, 1); | - |
3306 | brajump = sljit_emit_cmp(compiler, (0), (6), (0), (0x200), (0)); | - |
3307 | } | 0 |
3308 | | - |
3309 | if (framesize < 0) never evaluated: framesize < 0 | 0 |
3310 | { | - |
3311 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), (2), (0)); | - |
3312 | allocate_stack(common, 1); | - |
3313 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
3314 | } | 0 |
3315 | else | - |
3316 | { | - |
3317 | allocate_stack(common, framesize + 2); | - |
3318 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (localptr)); | - |
3319 | sljit_emit_op2(compiler, (25), (3), (0), (2), (0), (0x200), (-((-(framesize + 1) - 1) * (int)sizeof(sljit_w)))); | - |
3320 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), (3), (0)); | - |
3321 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
3322 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (1), (0)); | - |
3323 | init_frame(common, ccbegin, framesize + 1, 2, 0); | - |
3324 | } | 0 |
3325 | | - |
3326 | memset(&altfallback, 0, sizeof(fallback_common)); | - |
3327 | while (1) | 0 |
3328 | { | - |
3329 | common->acceptlabel = ((void *)0); | - |
3330 | common->accept = ((void *)0); | - |
3331 | altfallback.top = ((void *)0); | - |
3332 | altfallback.topfallbacks = ((void *)0); | - |
3333 | | - |
3334 | if (*ccbegin == OP_ALT) never evaluated: *ccbegin == OP_ALT | 0 |
3335 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); never executed: sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | 0 |
3336 | | - |
3337 | altfallback.cc = ccbegin; | - |
3338 | compile_hotpath(common, ccbegin + 1 + 1, cc, &altfallback); | - |
3339 | if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) | 0 |
3340 | { | - |
3341 | common->acceptlabel = save_acceptlabel; | - |
3342 | common->accept = save_accept; | - |
3343 | return ((void *)0); never executed: return ((void *)0); | 0 |
3344 | } | - |
3345 | common->acceptlabel = sljit_emit_label(compiler); | - |
3346 | if (common->accept != ((void *)0)) never evaluated: common->accept != ((void *)0) | 0 |
3347 | set_jumps(common->accept, common->acceptlabel); never executed: set_jumps(common->accept, common->acceptlabel); | 0 |
3348 | | - |
3349 | | - |
3350 | if (framesize < 0) never evaluated: framesize < 0 | 0 |
3351 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), (localptr)); never executed: sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), (localptr)); | 0 |
3352 | else { | - |
3353 | if ((opcode != OP_ASSERT_NOT && opcode != OP_ASSERTBACK_NOT) || conditional) never evaluated: opcode != OP_ASSERT_NOT never evaluated: opcode != OP_ASSERTBACK_NOT never evaluated: conditional | 0 |
3354 | { | - |
3355 | | - |
3356 | sljit_emit_op2(compiler, (23), (2), (0), ((0x100 | (11))), (localptr), (0x200), ((framesize + 1) * sizeof(sljit_w))); | - |
3357 | } | 0 |
3358 | else | - |
3359 | { | - |
3360 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), (localptr)); | - |
3361 | add_jump(compiler, &common->revertframes, sljit_emit_jump(compiler, (23))); | - |
3362 | } | 0 |
3363 | } | - |
3364 | | - |
3365 | if (opcode == OP_ASSERT_NOT || opcode == OP_ASSERTBACK_NOT) never evaluated: opcode == OP_ASSERT_NOT never evaluated: opcode == OP_ASSERTBACK_NOT | 0 |
3366 | { | - |
3367 | | - |
3368 | if (conditional) never evaluated: conditional | 0 |
3369 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (0)); never executed: sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (0)); | 0 |
3370 | else if (bra == OP_BRAZERO) never evaluated: bra == OP_BRAZERO | 0 |
3371 | { | - |
3372 | if (framesize < 0) never evaluated: framesize < 0 | 0 |
3373 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (0)); never executed: sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (0)); | 0 |
3374 | else | - |
3375 | { | - |
3376 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (framesize * sizeof(sljit_w))); | - |
3377 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), ((framesize + 1) * sizeof(sljit_w))); | - |
3378 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), (1), (0)); | - |
3379 | } | 0 |
3380 | sljit_emit_op2(compiler, (23), (2), (0), (2), (0), (0x200), (sizeof(sljit_w))); | - |
3381 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
3382 | } | 0 |
3383 | else if (framesize >= 0) never evaluated: framesize >= 0 | 0 |
3384 | { | - |
3385 | | - |
3386 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), ((0x100 | (2))), (framesize * sizeof(sljit_w))); | - |
3387 | } | 0 |
3388 | } | - |
3389 | add_jump(compiler, found, sljit_emit_jump(compiler, (22))); | - |
3390 | | - |
3391 | compile_fallbackpath(common, altfallback.top); | - |
3392 | if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) | 0 |
3393 | { | - |
3394 | common->acceptlabel = save_acceptlabel; | - |
3395 | common->accept = save_accept; | - |
3396 | return ((void *)0); never executed: return ((void *)0); | 0 |
3397 | } | - |
3398 | set_jumps(altfallback.topfallbacks, sljit_emit_label(compiler)); | - |
3399 | | - |
3400 | if (*cc != OP_ALT) never evaluated: *cc != OP_ALT | 0 |
3401 | break; | 0 |
3402 | | - |
3403 | ccbegin = cc; | - |
3404 | cc += (cc[1]); | - |
3405 | } | 0 |
3406 | | - |
3407 | | - |
3408 | if (opcode == OP_ASSERT || opcode == OP_ASSERTBACK) never evaluated: opcode == OP_ASSERT never evaluated: opcode == OP_ASSERTBACK | 0 |
3409 | { | - |
3410 | | - |
3411 | if (conditional || bra == OP_BRAZERO) never evaluated: conditional never evaluated: bra == OP_BRAZERO | 0 |
3412 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); never executed: sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | 0 |
3413 | | - |
3414 | if (framesize < 0) never evaluated: framesize < 0 | 0 |
3415 | { | - |
3416 | | - |
3417 | if (bra == OP_BRAZERO) never evaluated: bra == OP_BRAZERO | 0 |
3418 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | 0 |
3419 | else | - |
3420 | free_stack(common, 1); never executed: free_stack(common, 1); | 0 |
3421 | } | - |
3422 | else | - |
3423 | { | - |
3424 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w)))); | - |
3425 | | - |
3426 | if (bra == OP_BRAZERO) never evaluated: bra == OP_BRAZERO | 0 |
3427 | { | - |
3428 | free_stack(common, framesize + 1); | - |
3429 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
3430 | } | 0 |
3431 | else | - |
3432 | free_stack(common, framesize + 2); never executed: free_stack(common, framesize + 2); | 0 |
3433 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), (1), (0)); | - |
3434 | } | 0 |
3435 | jump = sljit_emit_jump(compiler, (22)); | - |
3436 | if (bra != OP_BRAZERO) never evaluated: bra != OP_BRAZERO | 0 |
3437 | add_jump(compiler, target, jump); never executed: add_jump(compiler, target, jump); | 0 |
3438 | | - |
3439 | | - |
3440 | set_jumps(tmp, sljit_emit_label(compiler)); | - |
3441 | if (framesize < 0) never evaluated: framesize < 0 | 0 |
3442 | { | - |
3443 | | - |
3444 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (0)); | - |
3445 | | - |
3446 | if (bra == OP_BRAZERO) never evaluated: bra == OP_BRAZERO | 0 |
3447 | sljit_emit_op2(compiler, (23), (2), (0), (2), (0), (0x200), (sizeof(sljit_w))); never executed: sljit_emit_op2(compiler, (23), (2), (0), (2), (0), (0x200), (sizeof(sljit_w))); | 0 |
3448 | else if (bra == OP_BRAMINZERO) never evaluated: bra == OP_BRAMINZERO | 0 |
3449 | { | - |
3450 | sljit_emit_op2(compiler, (23), (2), (0), (2), (0), (0x200), (sizeof(sljit_w))); | - |
3451 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
3452 | } | 0 |
3453 | } | - |
3454 | else | - |
3455 | { | - |
3456 | if (bra == OP_BRA) never evaluated: bra == OP_BRA | 0 |
3457 | { | - |
3458 | | - |
3459 | sljit_emit_op2(compiler, (23), (2), (0), ((0x100 | (11))), (localptr), (0x200), ((framesize + 1) * sizeof(sljit_w))); | - |
3460 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (0)); | - |
3461 | } | 0 |
3462 | else | - |
3463 | { | - |
3464 | | - |
3465 | sljit_emit_op2(compiler, (23), (2), (0), ((0x100 | (11))), (localptr), (0x200), ((framesize + 2) * sizeof(sljit_w))); | - |
3466 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
3467 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (bra == OP_BRAZERO ? 6 : 0x200), (0)); | - |
3468 | } | 0 |
3469 | } | - |
3470 | | - |
3471 | if (bra == OP_BRAZERO) never evaluated: bra == OP_BRAZERO | 0 |
3472 | { | - |
3473 | fallback->hotpath = sljit_emit_label(compiler); | - |
3474 | sljit_set_label(jump, fallback->hotpath); | - |
3475 | } | 0 |
3476 | else if (bra == OP_BRAMINZERO) never evaluated: bra == OP_BRAMINZERO | 0 |
3477 | { | - |
3478 | sljit_set_label(sljit_emit_jump(compiler, (22)), (fallback->hotpath)); | - |
3479 | sljit_set_label((brajump), sljit_emit_label(compiler)); | - |
3480 | if (framesize >= 0) never evaluated: framesize >= 0 | 0 |
3481 | { | - |
3482 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), (localptr)); | - |
3483 | add_jump(compiler, &common->revertframes, sljit_emit_jump(compiler, (23))); | - |
3484 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), ((0x100 | (2))), (framesize * sizeof(sljit_w))); | - |
3485 | } | 0 |
3486 | set_jumps(fallback->common.topfallbacks, sljit_emit_label(compiler)); | - |
3487 | } | 0 |
3488 | } | - |
3489 | else | - |
3490 | { | - |
3491 | | - |
3492 | if (framesize < 0) never evaluated: framesize < 0 | 0 |
3493 | { | - |
3494 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
3495 | if (bra != OP_BRA) never evaluated: bra != OP_BRA | 0 |
3496 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | 0 |
3497 | else | - |
3498 | free_stack(common, 1); never executed: free_stack(common, 1); | 0 |
3499 | } | - |
3500 | else | - |
3501 | { | - |
3502 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
3503 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w)))); | - |
3504 | | - |
3505 | if (bra != OP_BRA) never evaluated: bra != OP_BRA | 0 |
3506 | { | - |
3507 | free_stack(common, framesize + 1); | - |
3508 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
3509 | } | 0 |
3510 | else | - |
3511 | free_stack(common, framesize + 2); never executed: free_stack(common, framesize + 2); | 0 |
3512 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), (1), (0)); | - |
3513 | } | 0 |
3514 | | - |
3515 | if (bra == OP_BRAZERO) never evaluated: bra == OP_BRAZERO | 0 |
3516 | fallback->hotpath = sljit_emit_label(compiler); never executed: fallback->hotpath = sljit_emit_label(compiler); | 0 |
3517 | else if (bra == OP_BRAMINZERO) never evaluated: bra == OP_BRAMINZERO | 0 |
3518 | { | - |
3519 | sljit_set_label(sljit_emit_jump(compiler, (22)), (fallback->hotpath)); | - |
3520 | sljit_set_label((brajump), sljit_emit_label(compiler)); | - |
3521 | } | 0 |
3522 | | - |
3523 | if (bra != OP_BRA) never evaluated: bra != OP_BRA | 0 |
3524 | { | - |
3525 | do { } while (0); | 0 |
3526 | set_jumps(fallback->common.topfallbacks, sljit_emit_label(compiler)); | - |
3527 | fallback->common.topfallbacks = ((void *)0); | - |
3528 | } | 0 |
3529 | } | 0 |
3530 | | - |
3531 | common->acceptlabel = save_acceptlabel; | - |
3532 | common->accept = save_accept; | - |
3533 | return cc + 1 + 1; never executed: return cc + 1 + 1; | 0 |
3534 | } | - |
3535 | | - |
3536 | static sljit_w do_searchovector(sljit_w refno, sljit_w* locals, pcre_uchar *name_table) | - |
3537 | { | - |
3538 | int condition = 0; | - |
3539 | pcre_uchar *slotA = name_table; | - |
3540 | pcre_uchar *slotB; | - |
3541 | sljit_w name_count = locals[(0 * sizeof(sljit_w)) / sizeof(sljit_w)]; | - |
3542 | sljit_w name_entry_size = locals[(1 * sizeof(sljit_w)) / sizeof(sljit_w)]; | - |
3543 | sljit_w no_capture; | - |
3544 | int i; | - |
3545 | | - |
3546 | locals += (8 * sizeof(sljit_w)) / sizeof(sljit_w); | - |
3547 | no_capture = locals[1]; | - |
3548 | | - |
3549 | for (i = 0; i < name_count; i++) never evaluated: i < name_count | 0 |
3550 | { | - |
3551 | if (slotA[0] == refno) break; never evaluated: slotA[0] == refno | 0 |
3552 | slotA += name_entry_size; | - |
3553 | } | 0 |
3554 | | - |
3555 | if (i < name_count) never evaluated: i < name_count | 0 |
3556 | { | - |
3557 | | - |
3558 | | - |
3559 | | - |
3560 | | - |
3561 | slotB = slotA; | - |
3562 | while (slotB > name_table) never evaluated: slotB > name_table | 0 |
3563 | { | - |
3564 | slotB -= name_entry_size; | - |
3565 | if (_pcre16_strcmp_uc_uc((slotA + 1), (slotB + 1)) == 0) never evaluated: _pcre16_strcmp_uc_uc((slotA + 1), (slotB + 1)) == 0 | 0 |
3566 | { | - |
3567 | condition = locals[slotB[0] << 1] != no_capture; | - |
3568 | if (condition) break; never evaluated: condition | 0 |
3569 | } | 0 |
3570 | else break; | 0 |
3571 | } | - |
3572 | | - |
3573 | | - |
3574 | if (!condition) never evaluated: !condition | 0 |
3575 | { | - |
3576 | slotB = slotA; | - |
3577 | for (i++; i < name_count; i++) never evaluated: i < name_count | 0 |
3578 | { | - |
3579 | slotB += name_entry_size; | - |
3580 | if (_pcre16_strcmp_uc_uc((slotA + 1), (slotB + 1)) == 0) never evaluated: _pcre16_strcmp_uc_uc((slotA + 1), (slotB + 1)) == 0 | 0 |
3581 | { | - |
3582 | condition = locals[slotB[0] << 1] != no_capture; | - |
3583 | if (condition) break; never evaluated: condition | 0 |
3584 | } | 0 |
3585 | else break; | 0 |
3586 | } | - |
3587 | } | 0 |
3588 | } | 0 |
3589 | return condition; never executed: return condition; | 0 |
3590 | } | - |
3591 | | - |
3592 | static sljit_w do_searchgroups(sljit_w recno, sljit_w* locals, pcre_uchar *name_table) | - |
3593 | { | - |
3594 | int condition = 0; | - |
3595 | pcre_uchar *slotA = name_table; | - |
3596 | pcre_uchar *slotB; | - |
3597 | sljit_w name_count = locals[(0 * sizeof(sljit_w)) / sizeof(sljit_w)]; | - |
3598 | sljit_w name_entry_size = locals[(1 * sizeof(sljit_w)) / sizeof(sljit_w)]; | - |
3599 | sljit_w group_num = locals[(2 * sizeof(sljit_w)) / sizeof(sljit_w)]; | - |
3600 | int i; | - |
3601 | | - |
3602 | for (i = 0; i < name_count; i++) never evaluated: i < name_count | 0 |
3603 | { | - |
3604 | if (slotA[0] == recno) break; never evaluated: slotA[0] == recno | 0 |
3605 | slotA += name_entry_size; | - |
3606 | } | 0 |
3607 | | - |
3608 | if (i < name_count) never evaluated: i < name_count | 0 |
3609 | { | - |
3610 | | - |
3611 | | - |
3612 | | - |
3613 | | - |
3614 | slotB = slotA; | - |
3615 | while (slotB > name_table) never evaluated: slotB > name_table | 0 |
3616 | { | - |
3617 | slotB -= name_entry_size; | - |
3618 | if (_pcre16_strcmp_uc_uc((slotA + 1), (slotB + 1)) == 0) never evaluated: _pcre16_strcmp_uc_uc((slotA + 1), (slotB + 1)) == 0 | 0 |
3619 | { | - |
3620 | condition = slotB[0] == group_num; | - |
3621 | if (condition) break; never evaluated: condition | 0 |
3622 | } | 0 |
3623 | else break; | 0 |
3624 | } | - |
3625 | | - |
3626 | | - |
3627 | if (!condition) never evaluated: !condition | 0 |
3628 | { | - |
3629 | slotB = slotA; | - |
3630 | for (i++; i < name_count; i++) never evaluated: i < name_count | 0 |
3631 | { | - |
3632 | slotB += name_entry_size; | - |
3633 | if (_pcre16_strcmp_uc_uc((slotA + 1), (slotB + 1)) == 0) never evaluated: _pcre16_strcmp_uc_uc((slotA + 1), (slotB + 1)) == 0 | 0 |
3634 | { | - |
3635 | condition = slotB[0] == group_num; | - |
3636 | if (condition) break; never evaluated: condition | 0 |
3637 | } | 0 |
3638 | else break; | 0 |
3639 | } | - |
3640 | } | 0 |
3641 | } | 0 |
3642 | return condition; never executed: return condition; | 0 |
3643 | } | - |
3644 | static pcre_uchar *compile_bracket_hotpath(compiler_common *common, pcre_uchar *cc, fallback_common *parent) | - |
3645 | { | - |
3646 | struct sljit_compiler *compiler = common->compiler; | - |
3647 | fallback_common *fallback; | - |
3648 | pcre_uchar opcode; | - |
3649 | int localptr = 0; | - |
3650 | int offset = 0; | - |
3651 | int stacksize; | - |
3652 | pcre_uchar *ccbegin; | - |
3653 | pcre_uchar *hotpath; | - |
3654 | pcre_uchar bra = OP_BRA; | - |
3655 | pcre_uchar ket; | - |
3656 | assert_fallback *assert; | - |
3657 | BOOL has_alternatives; | - |
3658 | struct sljit_jump *jump; | - |
3659 | struct sljit_jump *skip; | - |
3660 | struct sljit_label *rmaxlabel = ((void *)0); | - |
3661 | struct sljit_jump *braminzerojump = ((void *)0); | - |
3662 | | - |
3663 | do { fallback = sljit_alloc_memory(compiler, (sizeof(bracket_fallback))); if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) return ((void *)0); memset(fallback, 0, sizeof(bracket_fallback)); fallback->prev = parent->top; fallback->cc = (cc); parent->top = fallback; } while (0); partially evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:15 |
never executed: return ((void *)0); executed: } Execution Count:15 | 0-15 |
3664 | | - |
3665 | if (*cc == OP_BRAZERO || *cc == OP_BRAMINZERO) partially evaluated: *cc == OP_BRAZERO no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: *cc == OP_BRAMINZERO no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3666 | { | - |
3667 | bra = *cc; | - |
3668 | cc++; | - |
3669 | opcode = *cc; | - |
3670 | } | 0 |
3671 | | - |
3672 | opcode = *cc; | - |
3673 | ccbegin = cc; | - |
3674 | hotpath = ccbegin + 1 + 1; | - |
3675 | | - |
3676 | if ((opcode == OP_COND || opcode == OP_SCOND) && cc[1 + 1] == OP_DEF) partially evaluated: opcode == OP_COND no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: opcode == OP_SCOND no Evaluation Count:0 | yes Evaluation Count:15 |
never evaluated: cc[1 + 1] == OP_DEF | 0-15 |
3677 | { | - |
3678 | | - |
3679 | parent->top = fallback->prev; | - |
3680 | return bracketend(cc); never executed: return bracketend(cc); | 0 |
3681 | } | - |
3682 | | - |
3683 | ket = *(bracketend(cc) - 1 - 1); | - |
3684 | do { } while (0); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:15 |
executed: } Execution Count:15 | 0-15 |
3685 | do { } while (0); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:15 |
executed: } Execution Count:15 | 0-15 |
3686 | cc += (cc[1]); | - |
3687 | | - |
3688 | has_alternatives = *cc == OP_ALT; | - |
3689 | if (__builtin_expect((opcode == OP_COND), 0) || __builtin_expect((opcode == OP_SCOND), 0)) partially evaluated: __builtin_expect((opcode == OP_COND), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: __builtin_expect((opcode == OP_SCOND), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3690 | { | - |
3691 | has_alternatives = (*hotpath == OP_RREF) ? 0 : 1; never evaluated: (*hotpath == OP_RREF) | 0 |
3692 | if (*hotpath == OP_NRREF) never evaluated: *hotpath == OP_NRREF | 0 |
3693 | { | - |
3694 | stacksize = hotpath[1]; | - |
3695 | if (common->currententry == ((void *)0) || stacksize == 0xffff) never evaluated: common->currententry == ((void *)0) never evaluated: stacksize == 0xffff | 0 |
3696 | has_alternatives = 0; never executed: has_alternatives = 0; | 0 |
3697 | else if (common->currententry->start == 0) never evaluated: common->currententry->start == 0 | 0 |
3698 | has_alternatives = stacksize != 0; never executed: has_alternatives = stacksize != 0; | 0 |
3699 | else | - |
3700 | has_alternatives = stacksize != common->start[common->currententry->start + 1 + 1]; never executed: has_alternatives = stacksize != common->start[common->currententry->start + 1 + 1]; | 0 |
3701 | } | - |
3702 | } | 0 |
3703 | | - |
3704 | if (__builtin_expect((opcode == OP_COND), 0) && (*cc == OP_KETRMAX || *cc == OP_KETRMIN)) partially evaluated: __builtin_expect((opcode == OP_COND), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
never evaluated: *cc == OP_KETRMAX never evaluated: *cc == OP_KETRMIN | 0-15 |
3705 | opcode = OP_SCOND; never executed: opcode = OP_SCOND; | 0 |
3706 | if (__builtin_expect((opcode == OP_ONCE_NC), 0)) partially evaluated: __builtin_expect((opcode == OP_ONCE_NC), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3707 | opcode = OP_ONCE; never executed: opcode = OP_ONCE; | 0 |
3708 | | - |
3709 | if (opcode == OP_CBRA || opcode == OP_SCBRA) partially evaluated: opcode == OP_CBRA no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: opcode == OP_SCBRA no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3710 | { | - |
3711 | | - |
3712 | offset = ccbegin[1 + 1]; | - |
3713 | localptr = (common->cbraptr + (offset) * sizeof(sljit_w)); | - |
3714 | offset <<= 1; | - |
3715 | ((bracket_fallback*)fallback)->localptr = localptr; | - |
3716 | hotpath += 1; | - |
3717 | } | 0 |
3718 | else if (opcode == OP_ONCE || opcode == OP_SBRA || opcode == OP_SCOND) partially evaluated: opcode == OP_ONCE no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: opcode == OP_SBRA no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: opcode == OP_SCOND no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3719 | { | - |
3720 | | - |
3721 | localptr = (common->localptrs[(ccbegin) - common->start]); | - |
3722 | do { } while (0); | 0 |
3723 | ((bracket_fallback*)fallback)->localptr = localptr; | - |
3724 | if (opcode == OP_ONCE) never evaluated: opcode == OP_ONCE | 0 |
3725 | ((bracket_fallback*)fallback)->u.framesize = get_framesize(common, ccbegin, 0); never executed: ((bracket_fallback*)fallback)->u.framesize = get_framesize(common, ccbegin, 0); | 0 |
3726 | } | 0 |
3727 | | - |
3728 | | - |
3729 | stacksize = 0; | - |
3730 | if ((ket == OP_KETRMAX) || (ket == OP_KETRMIN && bra != OP_BRAMINZERO)) partially evaluated: (ket == OP_KETRMAX) no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: ket == OP_KETRMIN no Evaluation Count:0 | yes Evaluation Count:15 |
never evaluated: bra != OP_BRAMINZERO | 0-15 |
3731 | stacksize++; never executed: stacksize++; | 0 |
3732 | if (bra == OP_BRAZERO) partially evaluated: bra == OP_BRAZERO no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3733 | stacksize++; never executed: stacksize++; | 0 |
3734 | | - |
3735 | if (stacksize > 0) partially evaluated: stacksize > 0 no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3736 | allocate_stack(common, stacksize); never executed: allocate_stack(common, stacksize); | 0 |
3737 | | - |
3738 | stacksize = 0; | - |
3739 | if ((ket == OP_KETRMAX) || (ket == OP_KETRMIN && bra != OP_BRAMINZERO)) partially evaluated: (ket == OP_KETRMAX) no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: ket == OP_KETRMIN no Evaluation Count:0 | yes Evaluation Count:15 |
never evaluated: bra != OP_BRAMINZERO | 0-15 |
3740 | { | - |
3741 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
3742 | stacksize++; | - |
3743 | } | 0 |
3744 | | - |
3745 | if (bra == OP_BRAZERO) partially evaluated: bra == OP_BRAZERO no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3746 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize) - 1) * (int)sizeof(sljit_w))), (6), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize) - 1) * (int)sizeof(sljit_w))), (6), (0)); | 0 |
3747 | | - |
3748 | if (bra == OP_BRAMINZERO) partially evaluated: bra == OP_BRAMINZERO no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3749 | { | - |
3750 | | - |
3751 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
3752 | if (ket != OP_KETRMIN) never evaluated: ket != OP_KETRMIN | 0 |
3753 | { | - |
3754 | free_stack(common, 1); | - |
3755 | braminzerojump = sljit_emit_cmp(compiler, (0), (6), (0), (0x200), (0)); | - |
3756 | } | 0 |
3757 | else | - |
3758 | { | - |
3759 | if (opcode == OP_ONCE || opcode >= OP_SBRA) never evaluated: opcode == OP_ONCE never evaluated: opcode >= OP_SBRA | 0 |
3760 | { | - |
3761 | jump = sljit_emit_cmp(compiler, (1), (6), (0), (0x200), (0)); | - |
3762 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w)))); | - |
3763 | | - |
3764 | skip = sljit_emit_jump(compiler, (22)); | - |
3765 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
3766 | | - |
3767 | if (opcode != OP_ONCE || ((bracket_fallback*)fallback)->u.framesize < 0) never evaluated: opcode != OP_ONCE never evaluated: ((bracket_fallback*)fallback)->u.framesize < 0 | 0 |
3768 | { | - |
3769 | | - |
3770 | braminzerojump = sljit_emit_cmp(compiler, (0), (6), (0), ((0x100 | (11))), (localptr)); | - |
3771 | } | 0 |
3772 | else | - |
3773 | { | - |
3774 | | - |
3775 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (localptr)); | - |
3776 | braminzerojump = sljit_emit_cmp(compiler, (0), (6), (0), ((0x100 | (1))), ((((bracket_fallback*)fallback)->u.framesize + 1) * sizeof(sljit_w))); | - |
3777 | } | 0 |
3778 | sljit_set_label((skip), sljit_emit_label(compiler)); | - |
3779 | } | 0 |
3780 | else | - |
3781 | { | - |
3782 | jump = sljit_emit_cmp(compiler, (1), (6), (0), (0x200), (0)); | - |
3783 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w)))); | - |
3784 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
3785 | } | 0 |
3786 | } | - |
3787 | } | - |
3788 | | - |
3789 | if (ket == OP_KETRMIN) partially evaluated: ket == OP_KETRMIN no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3790 | ((bracket_fallback*)fallback)->recursivehotpath = sljit_emit_label(compiler); never executed: ((bracket_fallback*)fallback)->recursivehotpath = sljit_emit_label(compiler); | 0 |
3791 | | - |
3792 | if (ket == OP_KETRMAX) partially evaluated: ket == OP_KETRMAX no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3793 | { | - |
3794 | rmaxlabel = sljit_emit_label(compiler); | - |
3795 | if (has_alternatives && opcode != OP_ONCE && opcode < OP_SBRA) never evaluated: has_alternatives never evaluated: opcode != OP_ONCE never evaluated: opcode < OP_SBRA | 0 |
3796 | ((bracket_fallback*)fallback)->althotpath = rmaxlabel; never executed: ((bracket_fallback*)fallback)->althotpath = rmaxlabel; | 0 |
3797 | } | 0 |
3798 | | - |
3799 | | - |
3800 | if (opcode == OP_ONCE) partially evaluated: opcode == OP_ONCE no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3801 | { | - |
3802 | if (((bracket_fallback*)fallback)->u.framesize < 0) never evaluated: ((bracket_fallback*)fallback)->u.framesize < 0 | 0 |
3803 | { | - |
3804 | | - |
3805 | if (ket == OP_KETRMIN) never evaluated: ket == OP_KETRMIN | 0 |
3806 | { | - |
3807 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (11))), (localptr)); | - |
3808 | allocate_stack(common, 2); | - |
3809 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
3810 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (3), (0)); | - |
3811 | sljit_emit_op2(compiler, (25), ((0x100 | (11))), (localptr), (2), (0), (0x200), (sizeof(sljit_w))); | - |
3812 | } | 0 |
3813 | else if (ket == OP_KETRMAX || has_alternatives) never evaluated: ket == OP_KETRMAX never evaluated: has_alternatives | 0 |
3814 | { | - |
3815 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), (2), (0)); | - |
3816 | allocate_stack(common, 1); | - |
3817 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
3818 | } | 0 |
3819 | else | - |
3820 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), (2), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), (2), (0)); | 0 |
3821 | } | - |
3822 | else | - |
3823 | { | - |
3824 | if (ket == OP_KETRMIN || ket == OP_KETRMAX || has_alternatives) never evaluated: ket == OP_KETRMIN never evaluated: ket == OP_KETRMAX never evaluated: has_alternatives | 0 |
3825 | { | - |
3826 | allocate_stack(common, ((bracket_fallback*)fallback)->u.framesize + 2); | - |
3827 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (localptr)); | - |
3828 | sljit_emit_op2(compiler, (25), (3), (0), (2), (0), (0x200), (-((-(((bracket_fallback*)fallback)->u.framesize + 1) - 1) * (int)sizeof(sljit_w)))); | - |
3829 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
3830 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), (3), (0)); | - |
3831 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (1), (0)); | - |
3832 | init_frame(common, ccbegin, ((bracket_fallback*)fallback)->u.framesize + 1, 2, 0); | - |
3833 | } | 0 |
3834 | else | - |
3835 | { | - |
3836 | allocate_stack(common, ((bracket_fallback*)fallback)->u.framesize + 1); | - |
3837 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (localptr)); | - |
3838 | sljit_emit_op2(compiler, (25), (3), (0), (2), (0), (0x200), (-((-(((bracket_fallback*)fallback)->u.framesize) - 1) * (int)sizeof(sljit_w)))); | - |
3839 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), (3), (0)); | - |
3840 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (1), (0)); | - |
3841 | init_frame(common, ccbegin, ((bracket_fallback*)fallback)->u.framesize, 1, 0); | - |
3842 | } | 0 |
3843 | } | - |
3844 | } | - |
3845 | else if (opcode == OP_CBRA || opcode == OP_SCBRA) partially evaluated: opcode == OP_CBRA no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: opcode == OP_SCBRA no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3846 | { | - |
3847 | | - |
3848 | allocate_stack(common, 3); | - |
3849 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset) * sizeof(sljit_w)))); | - |
3850 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 1) * sizeof(sljit_w)))); | - |
3851 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (1), (0)); | - |
3852 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (3), (0)); | - |
3853 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (localptr)); | - |
3854 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), (6), (0)); | - |
3855 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(2) - 1) * (int)sizeof(sljit_w))), (1), (0)); | - |
3856 | } | 0 |
3857 | else if (opcode == OP_SBRA || opcode == OP_SCOND) partially evaluated: opcode == OP_SBRA no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: opcode == OP_SCOND no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3858 | { | - |
3859 | | - |
3860 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (11))), (localptr)); | - |
3861 | allocate_stack(common, 1); | - |
3862 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), (6), (0)); | - |
3863 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (3), (0)); | - |
3864 | } | 0 |
3865 | else if (has_alternatives) evaluated: has_alternatives yes Evaluation Count:1 | yes Evaluation Count:14 |
| 1-14 |
3866 | { | - |
3867 | | - |
3868 | allocate_stack(common, 1); | - |
3869 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
3870 | } executed: } Execution Count:1 | 1 |
3871 | | - |
3872 | | - |
3873 | if (opcode == OP_COND || opcode == OP_SCOND) partially evaluated: opcode == OP_COND no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: opcode == OP_SCOND no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3874 | { | - |
3875 | if (*hotpath == OP_CREF) never evaluated: *hotpath == OP_CREF | 0 |
3876 | { | - |
3877 | do { } while (0); | 0 |
3878 | add_jump(compiler, &(((bracket_fallback*)fallback)->u.condfailed), | - |
3879 | sljit_emit_cmp(compiler, (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (hotpath[1] << 1) * sizeof(sljit_w))), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (1) * sizeof(sljit_w))))); | - |
3880 | hotpath += 1 + 1; | - |
3881 | } | 0 |
3882 | else if (*hotpath == OP_NCREF) never evaluated: *hotpath == OP_NCREF | 0 |
3883 | { | - |
3884 | do { } while (0); | 0 |
3885 | stacksize = hotpath[1]; | - |
3886 | jump = sljit_emit_cmp(compiler, (1), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (stacksize << 1) * sizeof(sljit_w))), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (1) * sizeof(sljit_w)))); | - |
3887 | | - |
3888 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((3 * sizeof(sljit_w))), (2), (0)); | - |
3889 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((0 * sizeof(sljit_w))), (0x200), (common->name_count)); | - |
3890 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((1 * sizeof(sljit_w))), (0x200), (common->name_entry_size)); | - |
3891 | sljit_emit_op1(compiler, (6), (1), (0), (0x200), (stacksize)); | - |
3892 | sljit_emit_op1(compiler, (6), (2), (0), (11), (0)); | - |
3893 | sljit_emit_op1(compiler, (6), (3), (0), (0x200), (common->name_table)); | - |
3894 | sljit_emit_ijump(compiler, 27, 0x200, ((sljit_w)do_searchovector)); | - |
3895 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), ((3 * sizeof(sljit_w)))); | - |
3896 | add_jump(compiler, &(((bracket_fallback*)fallback)->u.condfailed), sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (0))); | - |
3897 | | - |
3898 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
3899 | hotpath += 1 + 1; | - |
3900 | } | 0 |
3901 | else if (*hotpath == OP_RREF || *hotpath == OP_NRREF) never evaluated: *hotpath == OP_RREF never evaluated: *hotpath == OP_NRREF | 0 |
3902 | { | - |
3903 | | - |
3904 | ((bracket_fallback*)fallback)->u.condfailed = ((void *)0); | - |
3905 | | - |
3906 | stacksize = hotpath[1]; | - |
3907 | if (common->currententry == ((void *)0)) never evaluated: common->currententry == ((void *)0) | 0 |
3908 | stacksize = 0; never executed: stacksize = 0; | 0 |
3909 | else if (stacksize == 0xffff) never evaluated: stacksize == 0xffff | 0 |
3910 | stacksize = 1; never executed: stacksize = 1; | 0 |
3911 | else if (common->currententry->start == 0) never evaluated: common->currententry->start == 0 | 0 |
3912 | stacksize = stacksize == 0; never executed: stacksize = stacksize == 0; | 0 |
3913 | else | - |
3914 | stacksize = stacksize == common->start[common->currententry->start + 1 + 1]; never executed: stacksize = stacksize == common->start[common->currententry->start + 1 + 1]; | 0 |
3915 | | - |
3916 | if (*hotpath == OP_RREF || stacksize || common->currententry == ((void *)0)) never evaluated: *hotpath == OP_RREF never evaluated: stacksize never evaluated: common->currententry == ((void *)0) | 0 |
3917 | { | - |
3918 | do { } while (0); | 0 |
3919 | if (stacksize != 0) never evaluated: stacksize != 0 | 0 |
3920 | hotpath += 1 + 1; never executed: hotpath += 1 + 1; | 0 |
3921 | else | - |
3922 | { | - |
3923 | if (*cc == OP_ALT) never evaluated: *cc == OP_ALT | 0 |
3924 | { | - |
3925 | hotpath = cc + 1 + 1; | - |
3926 | cc += (cc[1]); | - |
3927 | } | 0 |
3928 | else | - |
3929 | hotpath = cc; never executed: hotpath = cc; | 0 |
3930 | } | - |
3931 | } | - |
3932 | else | - |
3933 | { | - |
3934 | do { } while (0); | 0 |
3935 | | - |
3936 | stacksize = hotpath[1]; | - |
3937 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((3 * sizeof(sljit_w))), (2), (0)); | - |
3938 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((0 * sizeof(sljit_w))), (0x200), (common->name_count)); | - |
3939 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((1 * sizeof(sljit_w))), (0x200), (common->name_entry_size)); | - |
3940 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (0x200), (common->start[common->currententry->start + 1 + 1])); | - |
3941 | sljit_emit_op1(compiler, (6), (1), (0), (0x200), (stacksize)); | - |
3942 | sljit_emit_op1(compiler, (6), (2), (0), (11), (0)); | - |
3943 | sljit_emit_op1(compiler, (6), (3), (0), (0x200), (common->name_table)); | - |
3944 | sljit_emit_ijump(compiler, 27, 0x200, ((sljit_w)do_searchgroups)); | - |
3945 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), ((3 * sizeof(sljit_w)))); | - |
3946 | add_jump(compiler, &(((bracket_fallback*)fallback)->u.condfailed), sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (0))); | - |
3947 | hotpath += 1 + 1; | - |
3948 | } | 0 |
3949 | } | - |
3950 | else | - |
3951 | { | - |
3952 | do { } while (0); | 0 |
3953 | | - |
3954 | assert = sljit_alloc_memory(compiler, sizeof(assert_fallback)); | - |
3955 | if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) | 0 |
3956 | return ((void *)0); never executed: return ((void *)0); | 0 |
3957 | memset(assert, 0, sizeof(assert_fallback)); | - |
3958 | assert->common.cc = hotpath; | - |
3959 | ((bracket_fallback*)fallback)->u.assert = assert; | - |
3960 | hotpath = compile_assert_hotpath(common, hotpath, assert, 1); | - |
3961 | } | 0 |
3962 | } | - |
3963 | | - |
3964 | compile_hotpath(common, hotpath, cc, fallback); | - |
3965 | if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) partially evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3966 | return ((void *)0); never executed: return ((void *)0); | 0 |
3967 | | - |
3968 | if (opcode == OP_ONCE) partially evaluated: opcode == OP_ONCE no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3969 | { | - |
3970 | if (((bracket_fallback*)fallback)->u.framesize < 0) never evaluated: ((bracket_fallback*)fallback)->u.framesize < 0 | 0 |
3971 | { | - |
3972 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), (localptr)); | - |
3973 | | - |
3974 | if (ket == OP_KETRMAX) never evaluated: ket == OP_KETRMAX | 0 |
3975 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (2))), (0)); never executed: sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (2))), (0)); | 0 |
3976 | else if (ket == OP_KETRMIN) never evaluated: ket == OP_KETRMIN | 0 |
3977 | { | - |
3978 | | - |
3979 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), ((0x100 | (2))), (0)); | - |
3980 | } | 0 |
3981 | } | - |
3982 | else | - |
3983 | { | - |
3984 | stacksize = (ket == OP_KETRMIN || ket == OP_KETRMAX || has_alternatives) ? 2 : 1; never evaluated: ket == OP_KETRMIN never evaluated: ket == OP_KETRMAX never evaluated: has_alternatives | 0 |
3985 | sljit_emit_op2(compiler, (23), (2), (0), ((0x100 | (11))), (localptr), (0x200), ((((bracket_fallback*)fallback)->u.framesize + stacksize) * sizeof(sljit_w))); | - |
3986 | if (ket == OP_KETRMAX) never evaluated: ket == OP_KETRMAX | 0 |
3987 | { | - |
3988 | | - |
3989 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
3990 | } | 0 |
3991 | } | 0 |
3992 | } | - |
3993 | | - |
3994 | stacksize = 0; | - |
3995 | if (ket != OP_KET || bra != OP_BRA) partially evaluated: ket != OP_KET no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: bra != OP_BRA no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
3996 | stacksize++; never executed: stacksize++; | 0 |
3997 | if (has_alternatives && opcode != OP_ONCE) evaluated: has_alternatives yes Evaluation Count:1 | yes Evaluation Count:14 |
partially evaluated: opcode != OP_ONCE yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-14 |
3998 | stacksize++; executed: stacksize++; Execution Count:1 | 1 |
3999 | | - |
4000 | if (stacksize > 0) evaluated: stacksize > 0 yes Evaluation Count:1 | yes Evaluation Count:14 |
| 1-14 |
4001 | allocate_stack(common, stacksize); executed: allocate_stack(common, stacksize); Execution Count:1 | 1 |
4002 | | - |
4003 | stacksize = 0; | - |
4004 | if (ket != OP_KET) partially evaluated: ket != OP_KET no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
4005 | { | - |
4006 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
4007 | stacksize++; | - |
4008 | } | 0 |
4009 | else if (bra != OP_BRA) partially evaluated: bra != OP_BRA no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
4010 | { | - |
4011 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
4012 | stacksize++; | - |
4013 | } | 0 |
4014 | | - |
4015 | if (has_alternatives) evaluated: has_alternatives yes Evaluation Count:1 | yes Evaluation Count:14 |
| 1-14 |
4016 | { | - |
4017 | if (opcode != OP_ONCE) partially evaluated: opcode != OP_ONCE yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
4018 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); executed: sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); Execution Count:1 | 1 |
4019 | if (ket != OP_KETRMAX) partially evaluated: ket != OP_KETRMAX yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
4020 | ((bracket_fallback*)fallback)->althotpath = sljit_emit_label(compiler); executed: ((bracket_fallback*)fallback)->althotpath = sljit_emit_label(compiler); Execution Count:1 | 1 |
4021 | } executed: } Execution Count:1 | 1 |
4022 | | - |
4023 | | - |
4024 | if (offset != 0) partially evaluated: offset != 0 no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
4025 | { | - |
4026 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (localptr)); | - |
4027 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 1) * sizeof(sljit_w))), (6), (0)); | - |
4028 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 0) * sizeof(sljit_w))), (1), (0)); | - |
4029 | } | 0 |
4030 | | - |
4031 | if (ket == OP_KETRMAX) partially evaluated: ket == OP_KETRMAX no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
4032 | { | - |
4033 | if (opcode == OP_ONCE || opcode >= OP_SBRA) never evaluated: opcode == OP_ONCE never evaluated: opcode >= OP_SBRA | 0 |
4034 | { | - |
4035 | if (has_alternatives) never evaluated: has_alternatives | 0 |
4036 | ((bracket_fallback*)fallback)->althotpath = sljit_emit_label(compiler); never executed: ((bracket_fallback*)fallback)->althotpath = sljit_emit_label(compiler); | 0 |
4037 | | - |
4038 | if (opcode != OP_ONCE) never evaluated: opcode != OP_ONCE | 0 |
4039 | sljit_set_label(sljit_emit_cmp(compiler, (1), ((0x100 | (11))), (localptr), (6), (0)), (rmaxlabel)); never executed: sljit_set_label(sljit_emit_cmp(compiler, (1), ((0x100 | (11))), (localptr), (6), (0)), (rmaxlabel)); | 0 |
4040 | else | - |
4041 | | - |
4042 | sljit_set_label(sljit_emit_cmp(compiler, (1), (3), (0), (6), (0)), (rmaxlabel)); never executed: sljit_set_label(sljit_emit_cmp(compiler, (1), (3), (0), (6), (0)), (rmaxlabel)); | 0 |
4043 | } | - |
4044 | else | - |
4045 | sljit_set_label(sljit_emit_jump(compiler, (22)), (rmaxlabel)); never executed: sljit_set_label(sljit_emit_jump(compiler, (22)), (rmaxlabel)); | 0 |
4046 | ((bracket_fallback*)fallback)->recursivehotpath = sljit_emit_label(compiler); | - |
4047 | } | 0 |
4048 | | - |
4049 | if (bra == OP_BRAZERO) partially evaluated: bra == OP_BRAZERO no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
4050 | ((bracket_fallback*)fallback)->zerohotpath = sljit_emit_label(compiler); never executed: ((bracket_fallback*)fallback)->zerohotpath = sljit_emit_label(compiler); | 0 |
4051 | | - |
4052 | if (bra == OP_BRAMINZERO) partially evaluated: bra == OP_BRAMINZERO no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
4053 | { | - |
4054 | | - |
4055 | sljit_set_label(sljit_emit_jump(compiler, (22)), (((braminzero_fallback*)parent)->hotpath)); | - |
4056 | if (braminzerojump != ((void *)0)) never evaluated: braminzerojump != ((void *)0) | 0 |
4057 | { | - |
4058 | sljit_set_label((braminzerojump), sljit_emit_label(compiler)); | - |
4059 | | - |
4060 | | - |
4061 | | - |
4062 | if (opcode == OP_ONCE && ((bracket_fallback*)fallback)->u.framesize >= 0) never evaluated: opcode == OP_ONCE never evaluated: ((bracket_fallback*)fallback)->u.framesize >= 0 | 0 |
4063 | { | - |
4064 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), (localptr)); | - |
4065 | add_jump(compiler, &common->revertframes, sljit_emit_jump(compiler, (23))); | - |
4066 | } | 0 |
4067 | else if (ket == OP_KETRMIN && opcode != OP_ONCE) never evaluated: ket == OP_KETRMIN never evaluated: opcode != OP_ONCE | 0 |
4068 | free_stack(common, 1); never executed: free_stack(common, 1); | 0 |
4069 | } | - |
4070 | | - |
4071 | } | 0 |
4072 | | - |
4073 | if ((ket != OP_KET && bra != OP_BRAMINZERO) || bra == OP_BRAZERO) partially evaluated: ket != OP_KET no Evaluation Count:0 | yes Evaluation Count:15 |
never evaluated: bra != OP_BRAMINZERO partially evaluated: bra == OP_BRAZERO no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
4074 | decrease_call_count(common); never executed: decrease_call_count(common); | 0 |
4075 | | - |
4076 | | - |
4077 | while (*cc == OP_ALT) evaluated: *cc == OP_ALT yes Evaluation Count:1 | yes Evaluation Count:15 |
| 1-15 |
4078 | cc += (cc[1]); executed: cc += (cc[1]); Execution Count:1 | 1 |
4079 | cc += 1 + 1; | - |
4080 | return cc; executed: return cc; Execution Count:15 | 15 |
4081 | } | - |
4082 | | - |
4083 | static pcre_uchar *compile_bracketpos_hotpath(compiler_common *common, pcre_uchar *cc, fallback_common *parent) | - |
4084 | { | - |
4085 | struct sljit_compiler *compiler = common->compiler; | - |
4086 | fallback_common *fallback; | - |
4087 | pcre_uchar opcode; | - |
4088 | int localptr; | - |
4089 | int cbraprivptr = 0; | - |
4090 | int framesize; | - |
4091 | int stacksize; | - |
4092 | int offset = 0; | - |
4093 | BOOL zero = 0; | - |
4094 | pcre_uchar *ccbegin = ((void *)0); | - |
4095 | int stack; | - |
4096 | struct sljit_label *loop = ((void *)0); | - |
4097 | struct jump_list *emptymatch = ((void *)0); | - |
4098 | | - |
4099 | do { fallback = sljit_alloc_memory(compiler, (sizeof(bracketpos_fallback))); if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) return ((void *)0); memset(fallback, 0, sizeof(bracketpos_fallback)); fallback->prev = parent->top; fallback->cc = (cc); parent->top = fallback; } while (0); never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) never executed: return ((void *)0); | 0 |
4100 | if (*cc == OP_BRAPOSZERO) never evaluated: *cc == OP_BRAPOSZERO | 0 |
4101 | { | - |
4102 | zero = 1; | - |
4103 | cc++; | - |
4104 | } | 0 |
4105 | | - |
4106 | opcode = *cc; | - |
4107 | localptr = (common->localptrs[(cc) - common->start]); | - |
4108 | do { } while (0); | 0 |
4109 | ((bracketpos_fallback*)fallback)->localptr = localptr; | - |
4110 | switch(opcode) | - |
4111 | { | - |
4112 | case OP_BRAPOS: | - |
4113 | case OP_SBRAPOS: | - |
4114 | ccbegin = cc + 1 + 1; | - |
4115 | break; | 0 |
4116 | | - |
4117 | case OP_CBRAPOS: | - |
4118 | case OP_SCBRAPOS: | - |
4119 | offset = cc[1 + 1]; | - |
4120 | cbraprivptr = (common->cbraptr + (offset) * sizeof(sljit_w)); | - |
4121 | offset <<= 1; | - |
4122 | ccbegin = cc + 1 + 1 + 1; | - |
4123 | break; | 0 |
4124 | | - |
4125 | default: | - |
4126 | do { } while (0); | 0 |
4127 | break; | 0 |
4128 | } | - |
4129 | | - |
4130 | framesize = get_framesize(common, cc, 0); | - |
4131 | ((bracketpos_fallback*)fallback)->framesize = framesize; | - |
4132 | if (framesize < 0) never evaluated: framesize < 0 | 0 |
4133 | { | - |
4134 | stacksize = (opcode == OP_CBRAPOS || opcode == OP_SCBRAPOS) ? 2 : 1; never evaluated: opcode == OP_CBRAPOS never evaluated: opcode == OP_SCBRAPOS | 0 |
4135 | if (!zero) | 0 |
4136 | stacksize++; never executed: stacksize++; | 0 |
4137 | ((bracketpos_fallback*)fallback)->stacksize = stacksize; | - |
4138 | allocate_stack(common, stacksize); | - |
4139 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), (2), (0)); | - |
4140 | | - |
4141 | if (opcode == OP_CBRAPOS || opcode == OP_SCBRAPOS) never evaluated: opcode == OP_CBRAPOS never evaluated: opcode == OP_SCBRAPOS | 0 |
4142 | { | - |
4143 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset) * sizeof(sljit_w)))); | - |
4144 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 1) * sizeof(sljit_w)))); | - |
4145 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (1), (0)); | - |
4146 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (3), (0)); | - |
4147 | } | 0 |
4148 | else | - |
4149 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | 0 |
4150 | | - |
4151 | if (!zero) | 0 |
4152 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize - 1) - 1) * (int)sizeof(sljit_w))), (0x200), (1)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize - 1) - 1) * (int)sizeof(sljit_w))), (0x200), (1)); | 0 |
4153 | } | 0 |
4154 | else | - |
4155 | { | - |
4156 | stacksize = framesize + 1; | - |
4157 | if (!zero) | 0 |
4158 | stacksize++; never executed: stacksize++; | 0 |
4159 | if (opcode == OP_BRAPOS || opcode == OP_SBRAPOS) never evaluated: opcode == OP_BRAPOS never evaluated: opcode == OP_SBRAPOS | 0 |
4160 | stacksize++; never executed: stacksize++; | 0 |
4161 | ((bracketpos_fallback*)fallback)->stacksize = stacksize; | - |
4162 | allocate_stack(common, stacksize); | - |
4163 | | - |
4164 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (localptr)); | - |
4165 | sljit_emit_op2(compiler, (25), (3), (0), (2), (0), (0x200), (-((-(stacksize - 1) - 1) * (int)sizeof(sljit_w)))); | - |
4166 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), (3), (0)); | - |
4167 | stack = 0; | - |
4168 | if (!zero) | 0 |
4169 | { | - |
4170 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (1)); | - |
4171 | stack++; | - |
4172 | } | 0 |
4173 | if (opcode == OP_BRAPOS || opcode == OP_SBRAPOS) never evaluated: opcode == OP_BRAPOS never evaluated: opcode == OP_SBRAPOS | 0 |
4174 | { | - |
4175 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stack) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
4176 | stack++; | - |
4177 | } | 0 |
4178 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stack) - 1) * (int)sizeof(sljit_w))), (1), (0)); | - |
4179 | init_frame(common, cc, stacksize - 1, stacksize - framesize, 0); | - |
4180 | } | 0 |
4181 | | - |
4182 | if (opcode == OP_CBRAPOS || opcode == OP_SCBRAPOS) never evaluated: opcode == OP_CBRAPOS never evaluated: opcode == OP_SCBRAPOS | 0 |
4183 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (cbraprivptr), (6), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (11))), (cbraprivptr), (6), (0)); | 0 |
4184 | | - |
4185 | loop = sljit_emit_label(compiler); | - |
4186 | while (*cc != OP_KETRPOS) never evaluated: *cc != OP_KETRPOS | 0 |
4187 | { | - |
4188 | fallback->top = ((void *)0); | - |
4189 | fallback->topfallbacks = ((void *)0); | - |
4190 | cc += (cc[1]); | - |
4191 | | - |
4192 | compile_hotpath(common, ccbegin, cc, fallback); | - |
4193 | if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) | 0 |
4194 | return ((void *)0); never executed: return ((void *)0); | 0 |
4195 | | - |
4196 | if (framesize < 0) never evaluated: framesize < 0 | 0 |
4197 | { | - |
4198 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), (localptr)); | - |
4199 | | - |
4200 | if (opcode == OP_CBRAPOS || opcode == OP_SCBRAPOS) never evaluated: opcode == OP_CBRAPOS never evaluated: opcode == OP_SCBRAPOS | 0 |
4201 | { | - |
4202 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (cbraprivptr)); | - |
4203 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 1) * sizeof(sljit_w))), (6), (0)); | - |
4204 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (cbraprivptr), (6), (0)); | - |
4205 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset) * sizeof(sljit_w))), (1), (0)); | - |
4206 | } | 0 |
4207 | else | - |
4208 | { | - |
4209 | if (opcode == OP_SBRAPOS) never evaluated: opcode == OP_SBRAPOS | 0 |
4210 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); never executed: sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | 0 |
4211 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
4212 | } | 0 |
4213 | | - |
4214 | if (opcode == OP_SBRAPOS || opcode == OP_SCBRAPOS) never evaluated: opcode == OP_SBRAPOS never evaluated: opcode == OP_SCBRAPOS | 0 |
4215 | add_jump(compiler, &emptymatch, sljit_emit_cmp(compiler, (0), (1), (0), (6), (0))); never executed: add_jump(compiler, &emptymatch, sljit_emit_cmp(compiler, (0), (1), (0), (6), (0))); | 0 |
4216 | | - |
4217 | if (!zero) | 0 |
4218 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize - 1) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize - 1) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | 0 |
4219 | } | 0 |
4220 | else | - |
4221 | { | - |
4222 | if (opcode == OP_CBRAPOS || opcode == OP_SCBRAPOS) never evaluated: opcode == OP_CBRAPOS never evaluated: opcode == OP_SCBRAPOS | 0 |
4223 | { | - |
4224 | sljit_emit_op2(compiler, (23), (2), (0), ((0x100 | (11))), (localptr), (0x200), (stacksize * sizeof(sljit_w))); | - |
4225 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (cbraprivptr)); | - |
4226 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 1) * sizeof(sljit_w))), (6), (0)); | - |
4227 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (cbraprivptr), (6), (0)); | - |
4228 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset) * sizeof(sljit_w))), (1), (0)); | - |
4229 | } | 0 |
4230 | else | - |
4231 | { | - |
4232 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (11))), (localptr)); | - |
4233 | sljit_emit_op2(compiler, (23), (2), (0), (3), (0), (0x200), (stacksize * sizeof(sljit_w))); | - |
4234 | if (opcode == OP_SBRAPOS) never evaluated: opcode == OP_SBRAPOS | 0 |
4235 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (3))), ((framesize + 1) * sizeof(sljit_w))); never executed: sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (3))), ((framesize + 1) * sizeof(sljit_w))); | 0 |
4236 | sljit_emit_op1(compiler, (6), ((0x100 | (3))), ((framesize + 1) * sizeof(sljit_w)), (6), (0)); | - |
4237 | } | 0 |
4238 | | - |
4239 | if (opcode == OP_SBRAPOS || opcode == OP_SCBRAPOS) never evaluated: opcode == OP_SBRAPOS never evaluated: opcode == OP_SCBRAPOS | 0 |
4240 | add_jump(compiler, &emptymatch, sljit_emit_cmp(compiler, (0), (1), (0), (6), (0))); never executed: add_jump(compiler, &emptymatch, sljit_emit_cmp(compiler, (0), (1), (0), (6), (0))); | 0 |
4241 | | - |
4242 | if (!zero) | 0 |
4243 | { | - |
4244 | if (framesize < 0) never evaluated: framesize < 0 | 0 |
4245 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize - 1) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize - 1) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | 0 |
4246 | else | - |
4247 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | 0 |
4248 | } | - |
4249 | } | 0 |
4250 | sljit_set_label(sljit_emit_jump(compiler, (22)), (loop)); | - |
4251 | flush_stubs(common); | - |
4252 | | - |
4253 | compile_fallbackpath(common, fallback->top); | - |
4254 | if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) | 0 |
4255 | return ((void *)0); never executed: return ((void *)0); | 0 |
4256 | set_jumps(fallback->topfallbacks, sljit_emit_label(compiler)); | - |
4257 | | - |
4258 | if (framesize < 0) never evaluated: framesize < 0 | 0 |
4259 | { | - |
4260 | if (opcode == OP_CBRAPOS || opcode == OP_SCBRAPOS) never evaluated: opcode == OP_CBRAPOS never evaluated: opcode == OP_SCBRAPOS | 0 |
4261 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (11))), (cbraprivptr)); never executed: sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (11))), (cbraprivptr)); | 0 |
4262 | else | - |
4263 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); never executed: sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | 0 |
4264 | } | - |
4265 | else | - |
4266 | { | - |
4267 | if (opcode == OP_CBRAPOS || opcode == OP_SCBRAPOS) never evaluated: opcode == OP_CBRAPOS never evaluated: opcode == OP_SCBRAPOS | 0 |
4268 | { | - |
4269 | | - |
4270 | if (*cc == OP_KETRPOS) never evaluated: *cc == OP_KETRPOS | 0 |
4271 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (11))), (localptr)); never executed: sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (11))), (localptr)); | 0 |
4272 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (11))), (cbraprivptr)); | - |
4273 | } | 0 |
4274 | else | - |
4275 | { | - |
4276 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (11))), (localptr)); | - |
4277 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (3))), ((framesize + 1) * sizeof(sljit_w))); | - |
4278 | } | 0 |
4279 | } | - |
4280 | | - |
4281 | if (*cc == OP_KETRPOS) never evaluated: *cc == OP_KETRPOS | 0 |
4282 | break; | 0 |
4283 | ccbegin = cc + 1 + 1; | - |
4284 | } | 0 |
4285 | | - |
4286 | fallback->topfallbacks = ((void *)0); | - |
4287 | if (!zero) | 0 |
4288 | { | - |
4289 | if (framesize < 0) never evaluated: framesize < 0 | 0 |
4290 | add_jump(compiler, &fallback->topfallbacks, sljit_emit_cmp(compiler, (1), ((0x100 | (2))), (((-(stacksize - 1) - 1) * (int)sizeof(sljit_w))), (0x200), (0))); never executed: add_jump(compiler, &fallback->topfallbacks, sljit_emit_cmp(compiler, (1), ((0x100 | (2))), (((-(stacksize - 1) - 1) * (int)sizeof(sljit_w))), (0x200), (0))); | 0 |
4291 | else | - |
4292 | add_jump(compiler, &fallback->topfallbacks, sljit_emit_cmp(compiler, (1), ((0x100 | (3))), ((stacksize - 1) * sizeof(sljit_w)), (0x200), (0))); never executed: add_jump(compiler, &fallback->topfallbacks, sljit_emit_cmp(compiler, (1), ((0x100 | (3))), ((stacksize - 1) * sizeof(sljit_w)), (0x200), (0))); | 0 |
4293 | } | - |
4294 | | - |
4295 | | - |
4296 | set_jumps(emptymatch, sljit_emit_label(compiler)); | - |
4297 | decrease_call_count(common); | - |
4298 | return cc + 1 + 1; never executed: return cc + 1 + 1; | 0 |
4299 | } | - |
4300 | | - |
4301 | static __inline pcre_uchar *get_iterator_parameters(compiler_common *common, pcre_uchar *cc, pcre_uchar *opcode, pcre_uchar *type, int *arg1, int *arg2, pcre_uchar **end) | - |
4302 | { | - |
4303 | int class_len; | - |
4304 | | - |
4305 | *opcode = *cc; | - |
4306 | if (*opcode >= OP_STAR && *opcode <= OP_POSUPTO) partially evaluated: *opcode >= OP_STAR yes Evaluation Count:16 | no Evaluation Count:0 |
evaluated: *opcode <= OP_POSUPTO yes Evaluation Count:4 | yes Evaluation Count:12 |
| 0-16 |
4307 | { | - |
4308 | cc++; | - |
4309 | *type = OP_CHAR; | - |
4310 | } executed: } Execution Count:4 | 4 |
4311 | else if (*opcode >= OP_STARI && *opcode <= OP_POSUPTOI) partially evaluated: *opcode >= OP_STARI yes Evaluation Count:12 | no Evaluation Count:0 |
partially evaluated: *opcode <= OP_POSUPTOI no Evaluation Count:0 | yes Evaluation Count:12 |
| 0-12 |
4312 | { | - |
4313 | cc++; | - |
4314 | *type = OP_CHARI; | - |
4315 | *opcode -= OP_STARI - OP_STAR; | - |
4316 | } | 0 |
4317 | else if (*opcode >= OP_NOTSTAR && *opcode <= OP_NOTPOSUPTO) partially evaluated: *opcode >= OP_NOTSTAR yes Evaluation Count:12 | no Evaluation Count:0 |
partially evaluated: *opcode <= OP_NOTPOSUPTO no Evaluation Count:0 | yes Evaluation Count:12 |
| 0-12 |
4318 | { | - |
4319 | cc++; | - |
4320 | *type = OP_NOT; | - |
4321 | *opcode -= OP_NOTSTAR - OP_STAR; | - |
4322 | } | 0 |
4323 | else if (*opcode >= OP_NOTSTARI && *opcode <= OP_NOTPOSUPTOI) partially evaluated: *opcode >= OP_NOTSTARI yes Evaluation Count:12 | no Evaluation Count:0 |
partially evaluated: *opcode <= OP_NOTPOSUPTOI no Evaluation Count:0 | yes Evaluation Count:12 |
| 0-12 |
4324 | { | - |
4325 | cc++; | - |
4326 | *type = OP_NOTI; | - |
4327 | *opcode -= OP_NOTSTARI - OP_STAR; | - |
4328 | } | 0 |
4329 | else if (*opcode >= OP_TYPESTAR && *opcode <= OP_TYPEPOSUPTO) partially evaluated: *opcode >= OP_TYPESTAR yes Evaluation Count:12 | no Evaluation Count:0 |
evaluated: *opcode <= OP_TYPEPOSUPTO yes Evaluation Count:10 | yes Evaluation Count:2 |
| 0-12 |
4330 | { | - |
4331 | cc++; | - |
4332 | *opcode -= OP_TYPESTAR - OP_STAR; | - |
4333 | *type = 0; | - |
4334 | } executed: } Execution Count:10 | 10 |
4335 | else | - |
4336 | { | - |
4337 | do { } while (0); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:2 |
executed: } Execution Count:2 | 0-2 |
4338 | *type = *opcode; | - |
4339 | cc++; | - |
4340 | class_len = (*type < OP_XCLASS) ? (int)(1 + (32 / sizeof(pcre_uchar))) : (cc[0]); partially evaluated: (*type < OP_XCLASS) no Evaluation Count:0 | yes Evaluation Count:2 |
| 0-2 |
4341 | *opcode = cc[class_len - 1]; | - |
4342 | if (*opcode >= OP_CRSTAR && *opcode <= OP_CRMINQUERY) partially evaluated: *opcode >= OP_CRSTAR yes Evaluation Count:2 | no Evaluation Count:0 |
partially evaluated: *opcode <= OP_CRMINQUERY yes Evaluation Count:2 | no Evaluation Count:0 |
| 0-2 |
4343 | { | - |
4344 | *opcode -= OP_CRSTAR - OP_STAR; | - |
4345 | if (end != ((void *)0)) evaluated: end != ((void *)0) yes Evaluation Count:1 | yes Evaluation Count:1 |
| 1 |
4346 | *end = cc + class_len; executed: *end = cc + class_len; Execution Count:1 | 1 |
4347 | } executed: } Execution Count:2 | 2 |
4348 | else | - |
4349 | { | - |
4350 | do { } while (0); | 0 |
4351 | *arg1 = cc[(class_len + 1)]; | - |
4352 | *arg2 = cc[class_len]; | - |
4353 | | - |
4354 | if (*arg2 == 0) never evaluated: *arg2 == 0 | 0 |
4355 | { | - |
4356 | do { } while (0); | 0 |
4357 | *opcode = (*opcode == OP_CRRANGE) ? OP_UPTO : OP_MINUPTO; never evaluated: (*opcode == OP_CRRANGE) | 0 |
4358 | } | 0 |
4359 | if (*arg1 == *arg2) never evaluated: *arg1 == *arg2 | 0 |
4360 | *opcode = OP_EXACT; never executed: *opcode = OP_EXACT; | 0 |
4361 | | - |
4362 | if (end != ((void *)0)) never evaluated: end != ((void *)0) | 0 |
4363 | *end = cc + class_len + 2 * 1; never executed: *end = cc + class_len + 2 * 1; | 0 |
4364 | } | 0 |
4365 | return cc; executed: return cc; Execution Count:2 | 2 |
4366 | } | - |
4367 | | - |
4368 | if (*opcode == OP_UPTO || *opcode == OP_MINUPTO || *opcode == OP_EXACT || *opcode == OP_POSUPTO) partially evaluated: *opcode == OP_UPTO no Evaluation Count:0 | yes Evaluation Count:14 |
partially evaluated: *opcode == OP_MINUPTO no Evaluation Count:0 | yes Evaluation Count:14 |
partially evaluated: *opcode == OP_EXACT no Evaluation Count:0 | yes Evaluation Count:14 |
partially evaluated: *opcode == OP_POSUPTO no Evaluation Count:0 | yes Evaluation Count:14 |
| 0-14 |
4369 | { | - |
4370 | *arg1 = cc[0]; | - |
4371 | cc += 1; | - |
4372 | } | 0 |
4373 | | - |
4374 | if (*type == 0) evaluated: *type == 0 yes Evaluation Count:10 | yes Evaluation Count:4 |
| 4-10 |
4375 | { | - |
4376 | *type = *cc; | - |
4377 | if (end != ((void *)0)) evaluated: end != ((void *)0) yes Evaluation Count:5 | yes Evaluation Count:5 |
| 5 |
4378 | *end = next_opcode(common, cc); executed: *end = next_opcode(common, cc); Execution Count:5 | 5 |
4379 | cc++; | - |
4380 | return cc; executed: return cc; Execution Count:10 | 10 |
4381 | } | - |
4382 | | - |
4383 | if (end != ((void *)0)) evaluated: end != ((void *)0) yes Evaluation Count:2 | yes Evaluation Count:2 |
| 2 |
4384 | { | - |
4385 | *end = cc + 1; | - |
4386 | | - |
4387 | if (common->utf && (((*cc) & 0xfc00) == 0xd800)) *end += 1; partially evaluated: common->utf yes Evaluation Count:2 | no Evaluation Count:0 |
partially evaluated: (((*cc) & 0xfc00) == 0xd800) no Evaluation Count:0 | yes Evaluation Count:2 |
never executed: *end += 1; | 0-2 |
4388 | | - |
4389 | } executed: } Execution Count:2 | 2 |
4390 | return cc; executed: return cc; Execution Count:4 | 4 |
4391 | } | - |
4392 | | - |
4393 | static pcre_uchar *compile_iterator_hotpath(compiler_common *common, pcre_uchar *cc, fallback_common *parent) | - |
4394 | { | - |
4395 | struct sljit_compiler *compiler = common->compiler; | - |
4396 | fallback_common *fallback; | - |
4397 | pcre_uchar opcode; | - |
4398 | pcre_uchar type; | - |
4399 | int arg1 = -1, arg2 = -1; | - |
4400 | pcre_uchar* end; | - |
4401 | jump_list *nomatch = ((void *)0); | - |
4402 | struct sljit_jump *jump = ((void *)0); | - |
4403 | struct sljit_label *label; | - |
4404 | | - |
4405 | do { fallback = sljit_alloc_memory(compiler, (sizeof(iterator_fallback))); if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) return ((void *)0); memset(fallback, 0, sizeof(iterator_fallback)); fallback->prev = parent->top; fallback->cc = (cc); parent->top = fallback; } while (0); partially evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) no Evaluation Count:0 | yes Evaluation Count:8 |
partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:8 |
never executed: return ((void *)0); executed: } Execution Count:8 | 0-8 |
4406 | | - |
4407 | cc = get_iterator_parameters(common, cc, &opcode, &type, &arg1, &arg2, &end); | - |
4408 | | - |
4409 | switch(opcode) | - |
4410 | { | - |
4411 | case OP_STAR: | - |
4412 | case OP_PLUS: | - |
4413 | case OP_UPTO: | - |
4414 | case OP_CRRANGE: | - |
4415 | if (type == OP_ANYNL || type == OP_EXTUNI) partially evaluated: type == OP_ANYNL no Evaluation Count:0 | yes Evaluation Count:8 |
partially evaluated: type == OP_EXTUNI no Evaluation Count:0 | yes Evaluation Count:8 |
| 0-8 |
4416 | { | - |
4417 | if (opcode == OP_STAR || opcode == OP_UPTO) never evaluated: opcode == OP_STAR never evaluated: opcode == OP_UPTO | 0 |
4418 | { | - |
4419 | allocate_stack(common, 2); | - |
4420 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
4421 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
4422 | } | 0 |
4423 | else | - |
4424 | { | - |
4425 | allocate_stack(common, 1); | - |
4426 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
4427 | } | 0 |
4428 | if (opcode == OP_UPTO || opcode == OP_CRRANGE) never evaluated: opcode == OP_UPTO never evaluated: opcode == OP_CRRANGE | 0 |
4429 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (0x200), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (0x200), (0)); | 0 |
4430 | | - |
4431 | label = sljit_emit_label(compiler); | - |
4432 | compile_char1_hotpath(common, type, cc, &fallback->topfallbacks); | - |
4433 | if (opcode == OP_UPTO || opcode == OP_CRRANGE) never evaluated: opcode == OP_UPTO never evaluated: opcode == OP_CRRANGE | 0 |
4434 | { | - |
4435 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), ((2 * sizeof(sljit_w)))); | - |
4436 | sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (1)); | - |
4437 | if (opcode == OP_CRRANGE && arg2 > 0) never evaluated: opcode == OP_CRRANGE never evaluated: arg2 > 0 | 0 |
4438 | sljit_set_label(sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (arg2)), (label)); never executed: sljit_set_label(sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (arg2)), (label)); | 0 |
4439 | if (opcode == OP_UPTO || (opcode == OP_CRRANGE && arg1 > 0)) never evaluated: opcode == OP_UPTO never evaluated: opcode == OP_CRRANGE never evaluated: arg1 > 0 | 0 |
4440 | jump = sljit_emit_cmp(compiler, (3), (1), (0), (0x200), (arg1)); never executed: jump = sljit_emit_cmp(compiler, (3), (1), (0), (0x200), (arg1)); | 0 |
4441 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (1), (0)); | - |
4442 | } | 0 |
4443 | | - |
4444 | allocate_stack(common, 1); | - |
4445 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
4446 | sljit_set_label(sljit_emit_jump(compiler, (22)), (label)); | - |
4447 | if (jump != ((void *)0)) never evaluated: jump != ((void *)0) | 0 |
4448 | sljit_set_label((jump), sljit_emit_label(compiler)); never executed: sljit_set_label((jump), sljit_emit_label(compiler)); | 0 |
4449 | } | 0 |
4450 | else | - |
4451 | { | - |
4452 | allocate_stack(common, 2); | - |
4453 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
4454 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (0x200), (1)); | - |
4455 | label = sljit_emit_label(compiler); | - |
4456 | compile_char1_hotpath(common, type, cc, &nomatch); | - |
4457 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
4458 | if (opcode <= OP_PLUS || (opcode == OP_CRRANGE && arg1 == 0)) partially evaluated: opcode <= OP_PLUS yes Evaluation Count:8 | no Evaluation Count:0 |
never evaluated: opcode == OP_CRRANGE never evaluated: arg1 == 0 | 0-8 |
4459 | { | - |
4460 | sljit_emit_op2(compiler, (23), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (0x200), (1)); | - |
4461 | sljit_set_label(sljit_emit_jump(compiler, (22)), (label)); | - |
4462 | } executed: } Execution Count:8 | 8 |
4463 | else | - |
4464 | { | - |
4465 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w)))); | - |
4466 | sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (1)); | - |
4467 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (1), (0)); | - |
4468 | sljit_set_label(sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (arg1 + 1)), (label)); | - |
4469 | } | 0 |
4470 | set_jumps(nomatch, sljit_emit_label(compiler)); | - |
4471 | if (opcode == OP_PLUS || opcode == OP_CRRANGE) partially evaluated: opcode == OP_PLUS no Evaluation Count:0 | yes Evaluation Count:8 |
partially evaluated: opcode == OP_CRRANGE no Evaluation Count:0 | yes Evaluation Count:8 |
| 0-8 |
4472 | add_jump(compiler, &fallback->topfallbacks, | 0 |
4473 | sljit_emit_cmp(compiler, (2), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (0x200), (opcode == OP_PLUS ? 2 : arg2 + 1))); never executed: add_jump(compiler, &fallback->topfallbacks, sljit_emit_cmp(compiler, (2), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (0x200), (opcode == OP_PLUS ? 2 : arg2 + 1))); | 0 |
4474 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
4475 | } executed: } Execution Count:8 | 8 |
4476 | ((iterator_fallback*)fallback)->hotpath = sljit_emit_label(compiler); | - |
4477 | break; executed: break; Execution Count:8 | 8 |
4478 | | - |
4479 | case OP_MINSTAR: | - |
4480 | case OP_MINPLUS: | - |
4481 | allocate_stack(common, 1); | - |
4482 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
4483 | if (opcode == OP_MINPLUS) never evaluated: opcode == OP_MINPLUS | 0 |
4484 | add_jump(compiler, &fallback->topfallbacks, sljit_emit_jump(compiler, (22))); never executed: add_jump(compiler, &fallback->topfallbacks, sljit_emit_jump(compiler, (22))); | 0 |
4485 | ((iterator_fallback*)fallback)->hotpath = sljit_emit_label(compiler); | - |
4486 | break; | 0 |
4487 | | - |
4488 | case OP_MINUPTO: | - |
4489 | case OP_CRMINRANGE: | - |
4490 | allocate_stack(common, 2); | - |
4491 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
4492 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (0x200), (1)); | - |
4493 | if (opcode == OP_CRMINRANGE) never evaluated: opcode == OP_CRMINRANGE | 0 |
4494 | add_jump(compiler, &fallback->topfallbacks, sljit_emit_jump(compiler, (22))); never executed: add_jump(compiler, &fallback->topfallbacks, sljit_emit_jump(compiler, (22))); | 0 |
4495 | ((iterator_fallback*)fallback)->hotpath = sljit_emit_label(compiler); | - |
4496 | break; | 0 |
4497 | | - |
4498 | case OP_QUERY: | - |
4499 | case OP_MINQUERY: | - |
4500 | allocate_stack(common, 1); | - |
4501 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
4502 | if (opcode == OP_QUERY) never evaluated: opcode == OP_QUERY | 0 |
4503 | compile_char1_hotpath(common, type, cc, &fallback->topfallbacks); never executed: compile_char1_hotpath(common, type, cc, &fallback->topfallbacks); | 0 |
4504 | ((iterator_fallback*)fallback)->hotpath = sljit_emit_label(compiler); | - |
4505 | break; | 0 |
4506 | | - |
4507 | case OP_EXACT: | - |
4508 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (0x200), (1)); | - |
4509 | label = sljit_emit_label(compiler); | - |
4510 | compile_char1_hotpath(common, type, cc, &fallback->topfallbacks); | - |
4511 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), ((2 * sizeof(sljit_w)))); | - |
4512 | sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (1)); | - |
4513 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (1), (0)); | - |
4514 | sljit_set_label(sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (arg1 + 1)), (label)); | - |
4515 | break; | 0 |
4516 | | - |
4517 | case OP_POSSTAR: | - |
4518 | case OP_POSPLUS: | - |
4519 | case OP_POSUPTO: | - |
4520 | if (opcode != OP_POSSTAR) never evaluated: opcode != OP_POSSTAR | 0 |
4521 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (0x200), (1)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (0x200), (1)); | 0 |
4522 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((3 * sizeof(sljit_w))), (6), (0)); | - |
4523 | label = sljit_emit_label(compiler); | - |
4524 | compile_char1_hotpath(common, type, cc, &nomatch); | - |
4525 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((3 * sizeof(sljit_w))), (6), (0)); | - |
4526 | if (opcode != OP_POSUPTO) never evaluated: opcode != OP_POSUPTO | 0 |
4527 | { | - |
4528 | if (opcode == OP_POSPLUS) never evaluated: opcode == OP_POSPLUS | 0 |
4529 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (0x200), (2)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (0x200), (2)); | 0 |
4530 | sljit_set_label(sljit_emit_jump(compiler, (22)), (label)); | - |
4531 | } | 0 |
4532 | else | - |
4533 | { | - |
4534 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), ((2 * sizeof(sljit_w)))); | - |
4535 | sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (1)); | - |
4536 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (1), (0)); | - |
4537 | sljit_set_label(sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (arg1 + 1)), (label)); | - |
4538 | } | 0 |
4539 | set_jumps(nomatch, sljit_emit_label(compiler)); | - |
4540 | if (opcode == OP_POSPLUS) never evaluated: opcode == OP_POSPLUS | 0 |
4541 | add_jump(compiler, &fallback->topfallbacks, sljit_emit_cmp(compiler, (2), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (0x200), (2))); never executed: add_jump(compiler, &fallback->topfallbacks, sljit_emit_cmp(compiler, (2), ((0x100 | (11))), ((2 * sizeof(sljit_w))), (0x200), (2))); | 0 |
4542 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (11))), ((3 * sizeof(sljit_w)))); | - |
4543 | break; | 0 |
4544 | | - |
4545 | case OP_POSQUERY: | - |
4546 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((3 * sizeof(sljit_w))), (6), (0)); | - |
4547 | compile_char1_hotpath(common, type, cc, &nomatch); | - |
4548 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((3 * sizeof(sljit_w))), (6), (0)); | - |
4549 | set_jumps(nomatch, sljit_emit_label(compiler)); | - |
4550 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (11))), ((3 * sizeof(sljit_w)))); | - |
4551 | break; | 0 |
4552 | | - |
4553 | default: | - |
4554 | do { } while (0); | 0 |
4555 | break; | 0 |
4556 | } | - |
4557 | | - |
4558 | decrease_call_count(common); | - |
4559 | return end; executed: return end; Execution Count:8 | 8 |
4560 | } | - |
4561 | | - |
4562 | static __inline pcre_uchar *compile_fail_accept_hotpath(compiler_common *common, pcre_uchar *cc, fallback_common *parent) | - |
4563 | { | - |
4564 | struct sljit_compiler *compiler = common->compiler; | - |
4565 | fallback_common *fallback; | - |
4566 | | - |
4567 | do { fallback = sljit_alloc_memory(compiler, (sizeof(bracket_fallback))); if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) return ((void *)0); memset(fallback, 0, sizeof(bracket_fallback)); fallback->prev = parent->top; fallback->cc = (cc); parent->top = fallback; } while (0); never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) never executed: return ((void *)0); | 0 |
4568 | | - |
4569 | if (*cc == OP_FAIL) never evaluated: *cc == OP_FAIL | 0 |
4570 | { | - |
4571 | add_jump(compiler, &fallback->topfallbacks, sljit_emit_jump(compiler, (22))); | - |
4572 | return cc + 1; never executed: return cc + 1; | 0 |
4573 | } | - |
4574 | | - |
4575 | if (*cc == OP_ASSERT_ACCEPT || common->currententry != ((void *)0)) never evaluated: *cc == OP_ASSERT_ACCEPT never evaluated: common->currententry != ((void *)0) | 0 |
4576 | { | - |
4577 | | - |
4578 | if (common->acceptlabel == ((void *)0)) never evaluated: common->acceptlabel == ((void *)0) | 0 |
4579 | add_jump(compiler, &common->accept, sljit_emit_jump(compiler, (22))); never executed: add_jump(compiler, &common->accept, sljit_emit_jump(compiler, (22))); | 0 |
4580 | else | - |
4581 | sljit_set_label(sljit_emit_jump(compiler, (22)), (common->acceptlabel)); never executed: sljit_set_label(sljit_emit_jump(compiler, (22)), (common->acceptlabel)); | 0 |
4582 | return cc + 1; never executed: return cc + 1; | 0 |
4583 | } | - |
4584 | | - |
4585 | if (common->acceptlabel == ((void *)0)) never evaluated: common->acceptlabel == ((void *)0) | 0 |
4586 | add_jump(compiler, &common->accept, sljit_emit_cmp(compiler, (1), (6), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w))))); never executed: add_jump(compiler, &common->accept, sljit_emit_cmp(compiler, (1), (6), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w))))); | 0 |
4587 | else | - |
4588 | sljit_set_label(sljit_emit_cmp(compiler, (1), (6), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w)))), (common->acceptlabel)); never executed: sljit_set_label(sljit_emit_cmp(compiler, (1), (6), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w)))), (common->acceptlabel)); | 0 |
4589 | sljit_emit_op1(compiler, (6), (1), (0), (9), (0)); | - |
4590 | sljit_emit_op1(compiler, (7), (3), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->notempty) - 0x10))); | - |
4591 | add_jump(compiler, &fallback->topfallbacks, sljit_emit_cmp(compiler, (1), (3), (0), (0x200), (0))); | - |
4592 | sljit_emit_op1(compiler, (7), (3), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->notempty_atstart) - 0x10))); | - |
4593 | if (common->acceptlabel == ((void *)0)) never evaluated: common->acceptlabel == ((void *)0) | 0 |
4594 | add_jump(compiler, &common->accept, sljit_emit_cmp(compiler, (0), (3), (0), (0x200), (0))); never executed: add_jump(compiler, &common->accept, sljit_emit_cmp(compiler, (0), (3), (0), (0x200), (0))); | 0 |
4595 | else | - |
4596 | sljit_set_label(sljit_emit_cmp(compiler, (0), (3), (0), (0x200), (0)), (common->acceptlabel)); never executed: sljit_set_label(sljit_emit_cmp(compiler, (0), (3), (0), (0x200), (0)), (common->acceptlabel)); | 0 |
4597 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->str) - 0x10))); | - |
4598 | if (common->acceptlabel == ((void *)0)) never evaluated: common->acceptlabel == ((void *)0) | 0 |
4599 | add_jump(compiler, &common->accept, sljit_emit_cmp(compiler, (1), (3), (0), (6), (0))); never executed: add_jump(compiler, &common->accept, sljit_emit_cmp(compiler, (1), (3), (0), (6), (0))); | 0 |
4600 | else | - |
4601 | sljit_set_label(sljit_emit_cmp(compiler, (1), (3), (0), (6), (0)), (common->acceptlabel)); never executed: sljit_set_label(sljit_emit_cmp(compiler, (1), (3), (0), (6), (0)), (common->acceptlabel)); | 0 |
4602 | add_jump(compiler, &fallback->topfallbacks, sljit_emit_jump(compiler, (22))); | - |
4603 | return cc + 1; never executed: return cc + 1; | 0 |
4604 | } | - |
4605 | | - |
4606 | static __inline pcre_uchar *compile_close_hotpath(compiler_common *common, pcre_uchar *cc) | - |
4607 | { | - |
4608 | struct sljit_compiler *compiler = common->compiler; | - |
4609 | int offset = cc[1]; | - |
4610 | | - |
4611 | | - |
4612 | if (common->currententry != ((void *)0)) never evaluated: common->currententry != ((void *)0) | 0 |
4613 | return cc + 1 + 1; never executed: return cc + 1 + 1; | 0 |
4614 | | - |
4615 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), ((common->cbraptr + (offset) * sizeof(sljit_w)))); | - |
4616 | offset <<= 1; | - |
4617 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 1) * sizeof(sljit_w))), (6), (0)); | - |
4618 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset) * sizeof(sljit_w))), (1), (0)); | - |
4619 | return cc + 1 + 1; never executed: return cc + 1 + 1; | 0 |
4620 | } | - |
4621 | | - |
4622 | static void compile_hotpath(compiler_common *common, pcre_uchar *cc, pcre_uchar *ccend, fallback_common *parent) | - |
4623 | { | - |
4624 | struct sljit_compiler *compiler = common->compiler; | - |
4625 | fallback_common *fallback; | - |
4626 | | - |
4627 | while (cc < ccend) evaluated: cc < ccend yes Evaluation Count:31 | yes Evaluation Count:31 |
| 31 |
4628 | { | - |
4629 | switch(*cc) | - |
4630 | { | - |
4631 | case OP_SOD: | - |
4632 | case OP_SOM: | - |
4633 | case OP_NOT_WORD_BOUNDARY: | - |
4634 | case OP_WORD_BOUNDARY: | - |
4635 | case OP_NOT_DIGIT: | - |
4636 | case OP_DIGIT: | - |
4637 | case OP_NOT_WHITESPACE: | - |
4638 | case OP_WHITESPACE: | - |
4639 | case OP_NOT_WORDCHAR: | - |
4640 | case OP_WORDCHAR: | - |
4641 | case OP_ANY: | - |
4642 | case OP_ALLANY: | - |
4643 | case OP_ANYBYTE: | - |
4644 | case OP_NOTPROP: | - |
4645 | case OP_PROP: | - |
4646 | case OP_ANYNL: | - |
4647 | case OP_NOT_HSPACE: | - |
4648 | case OP_HSPACE: | - |
4649 | case OP_NOT_VSPACE: | - |
4650 | case OP_VSPACE: | - |
4651 | case OP_EXTUNI: | - |
4652 | case OP_EODN: | - |
4653 | case OP_EOD: | - |
4654 | case OP_CIRC: | - |
4655 | case OP_CIRCM: | - |
4656 | case OP_DOLL: | - |
4657 | case OP_DOLLM: | - |
4658 | case OP_NOT: | - |
4659 | case OP_NOTI: | - |
4660 | case OP_REVERSE: | - |
4661 | cc = compile_char1_hotpath(common, *cc, cc + 1, parent->top != ((void *)0) ? &parent->top->nextfallbacks : &parent->topfallbacks); | - |
4662 | break; executed: break; Execution Count:1 | 1 |
4663 | | - |
4664 | case OP_SET_SOM: | - |
4665 | do { fallback = sljit_alloc_memory(compiler, (sizeof(fallback_common))); if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) return; memset(fallback, 0, sizeof(fallback_common)); fallback->prev = parent->top; fallback->cc = (cc); parent->top = fallback; } while (0); never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) | 0 |
4666 | allocate_stack(common, 1); | - |
4667 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w)))); | - |
4668 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w))), (6), (0)); | - |
4669 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (1), (0)); | - |
4670 | cc++; | - |
4671 | break; | 0 |
4672 | | - |
4673 | case OP_CHAR: | - |
4674 | case OP_CHARI: | - |
4675 | cc = compile_charn_hotpath(common, cc, ccend, parent->top != ((void *)0) ? &parent->top->nextfallbacks : &parent->topfallbacks); | - |
4676 | break; executed: break; Execution Count:7 | 7 |
4677 | | - |
4678 | case OP_STAR: | - |
4679 | case OP_MINSTAR: | - |
4680 | case OP_PLUS: | - |
4681 | case OP_MINPLUS: | - |
4682 | case OP_QUERY: | - |
4683 | case OP_MINQUERY: | - |
4684 | case OP_UPTO: | - |
4685 | case OP_MINUPTO: | - |
4686 | case OP_EXACT: | - |
4687 | case OP_POSSTAR: | - |
4688 | case OP_POSPLUS: | - |
4689 | case OP_POSQUERY: | - |
4690 | case OP_POSUPTO: | - |
4691 | case OP_STARI: | - |
4692 | case OP_MINSTARI: | - |
4693 | case OP_PLUSI: | - |
4694 | case OP_MINPLUSI: | - |
4695 | case OP_QUERYI: | - |
4696 | case OP_MINQUERYI: | - |
4697 | case OP_UPTOI: | - |
4698 | case OP_MINUPTOI: | - |
4699 | case OP_EXACTI: | - |
4700 | case OP_POSSTARI: | - |
4701 | case OP_POSPLUSI: | - |
4702 | case OP_POSQUERYI: | - |
4703 | case OP_POSUPTOI: | - |
4704 | case OP_NOTSTAR: | - |
4705 | case OP_NOTMINSTAR: | - |
4706 | case OP_NOTPLUS: | - |
4707 | case OP_NOTMINPLUS: | - |
4708 | case OP_NOTQUERY: | - |
4709 | case OP_NOTMINQUERY: | - |
4710 | case OP_NOTUPTO: | - |
4711 | case OP_NOTMINUPTO: | - |
4712 | case OP_NOTEXACT: | - |
4713 | case OP_NOTPOSSTAR: | - |
4714 | case OP_NOTPOSPLUS: | - |
4715 | case OP_NOTPOSQUERY: | - |
4716 | case OP_NOTPOSUPTO: | - |
4717 | case OP_NOTSTARI: | - |
4718 | case OP_NOTMINSTARI: | - |
4719 | case OP_NOTPLUSI: | - |
4720 | case OP_NOTMINPLUSI: | - |
4721 | case OP_NOTQUERYI: | - |
4722 | case OP_NOTMINQUERYI: | - |
4723 | case OP_NOTUPTOI: | - |
4724 | case OP_NOTMINUPTOI: | - |
4725 | case OP_NOTEXACTI: | - |
4726 | case OP_NOTPOSSTARI: | - |
4727 | case OP_NOTPOSPLUSI: | - |
4728 | case OP_NOTPOSQUERYI: | - |
4729 | case OP_NOTPOSUPTOI: | - |
4730 | case OP_TYPESTAR: | - |
4731 | case OP_TYPEMINSTAR: | - |
4732 | case OP_TYPEPLUS: | - |
4733 | case OP_TYPEMINPLUS: | - |
4734 | case OP_TYPEQUERY: | - |
4735 | case OP_TYPEMINQUERY: | - |
4736 | case OP_TYPEUPTO: | - |
4737 | case OP_TYPEMINUPTO: | - |
4738 | case OP_TYPEEXACT: | - |
4739 | case OP_TYPEPOSSTAR: | - |
4740 | case OP_TYPEPOSPLUS: | - |
4741 | case OP_TYPEPOSQUERY: | - |
4742 | case OP_TYPEPOSUPTO: | - |
4743 | cc = compile_iterator_hotpath(common, cc, parent); | - |
4744 | break; executed: break; Execution Count:7 | 7 |
4745 | | - |
4746 | case OP_CLASS: | - |
4747 | case OP_NCLASS: | - |
4748 | if (cc[1 + (32 / sizeof(pcre_uchar))] >= OP_CRSTAR && cc[1 + (32 / sizeof(pcre_uchar))] <= OP_CRMINRANGE) never evaluated: cc[1 + (32 / sizeof(pcre_uchar))] >= OP_CRSTAR never evaluated: cc[1 + (32 / sizeof(pcre_uchar))] <= OP_CRMINRANGE | 0 |
4749 | cc = compile_iterator_hotpath(common, cc, parent); never executed: cc = compile_iterator_hotpath(common, cc, parent); | 0 |
4750 | else | - |
4751 | cc = compile_char1_hotpath(common, *cc, cc + 1, parent->top != ((void *)0) ? &parent->top->nextfallbacks : &parent->topfallbacks); never executed: cc = compile_char1_hotpath(common, *cc, cc + 1, parent->top != ((void *)0) ? &parent->top->nextfallbacks : &parent->topfallbacks); | 0 |
4752 | break; | 0 |
4753 | | - |
4754 | | - |
4755 | case OP_XCLASS: | - |
4756 | if (*(cc + (cc[1])) >= OP_CRSTAR && *(cc + (cc[1])) <= OP_CRMINRANGE) partially evaluated: *(cc + (cc[1])) >= OP_CRSTAR yes Evaluation Count:1 | no Evaluation Count:0 |
partially evaluated: *(cc + (cc[1])) <= OP_CRMINRANGE yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
4757 | cc = compile_iterator_hotpath(common, cc, parent); executed: cc = compile_iterator_hotpath(common, cc, parent); Execution Count:1 | 1 |
4758 | else | - |
4759 | cc = compile_char1_hotpath(common, *cc, cc + 1, parent->top != ((void *)0) ? &parent->top->nextfallbacks : &parent->topfallbacks); never executed: cc = compile_char1_hotpath(common, *cc, cc + 1, parent->top != ((void *)0) ? &parent->top->nextfallbacks : &parent->topfallbacks); | 0 |
4760 | break; executed: break; Execution Count:1 | 1 |
4761 | | - |
4762 | | - |
4763 | case OP_REF: | - |
4764 | case OP_REFI: | - |
4765 | if (cc[1 + 1] >= OP_CRSTAR && cc[1 + 1] <= OP_CRMINRANGE) never evaluated: cc[1 + 1] >= OP_CRSTAR never evaluated: cc[1 + 1] <= OP_CRMINRANGE | 0 |
4766 | cc = compile_ref_iterator_hotpath(common, cc, parent); never executed: cc = compile_ref_iterator_hotpath(common, cc, parent); | 0 |
4767 | else | - |
4768 | cc = compile_ref_hotpath(common, cc, parent->top != ((void *)0) ? &parent->top->nextfallbacks : &parent->topfallbacks, 1, 0); never executed: cc = compile_ref_hotpath(common, cc, parent->top != ((void *)0) ? &parent->top->nextfallbacks : &parent->topfallbacks, 1, 0); | 0 |
4769 | break; | 0 |
4770 | | - |
4771 | case OP_RECURSE: | - |
4772 | cc = compile_recurse_hotpath(common, cc, parent); | - |
4773 | break; | 0 |
4774 | | - |
4775 | case OP_ASSERT: | - |
4776 | case OP_ASSERT_NOT: | - |
4777 | case OP_ASSERTBACK: | - |
4778 | case OP_ASSERTBACK_NOT: | - |
4779 | do { fallback = sljit_alloc_memory(compiler, (sizeof(assert_fallback))); if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) return; memset(fallback, 0, sizeof(assert_fallback)); fallback->prev = parent->top; fallback->cc = (cc); parent->top = fallback; } while (0); never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) | 0 |
4780 | cc = compile_assert_hotpath(common, cc, ((assert_fallback*)fallback), 0); | - |
4781 | break; | 0 |
4782 | | - |
4783 | case OP_BRAMINZERO: | - |
4784 | do { fallback = sljit_alloc_memory(compiler, (sizeof(braminzero_fallback))); if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) return; memset(fallback, 0, sizeof(braminzero_fallback)); fallback->prev = parent->top; fallback->cc = (cc); parent->top = fallback; } while (0); never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) | 0 |
4785 | cc = bracketend(cc + 1); | - |
4786 | if (*(cc - 1 - 1) != OP_KETRMIN) never evaluated: *(cc - 1 - 1) != OP_KETRMIN | 0 |
4787 | { | - |
4788 | allocate_stack(common, 1); | - |
4789 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
4790 | } | 0 |
4791 | else | - |
4792 | { | - |
4793 | allocate_stack(common, 2); | - |
4794 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
4795 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
4796 | } | 0 |
4797 | ((braminzero_fallback*)fallback)->hotpath = sljit_emit_label(compiler); | - |
4798 | if (cc[1] > OP_ASSERTBACK_NOT) never evaluated: cc[1] > OP_ASSERTBACK_NOT | 0 |
4799 | decrease_call_count(common); never executed: decrease_call_count(common); | 0 |
4800 | break; | 0 |
4801 | | - |
4802 | case OP_ONCE: | - |
4803 | case OP_ONCE_NC: | - |
4804 | case OP_BRA: | - |
4805 | case OP_CBRA: | - |
4806 | case OP_COND: | - |
4807 | case OP_SBRA: | - |
4808 | case OP_SCBRA: | - |
4809 | case OP_SCOND: | - |
4810 | cc = compile_bracket_hotpath(common, cc, parent); | - |
4811 | break; executed: break; Execution Count:15 | 15 |
4812 | | - |
4813 | case OP_BRAZERO: | - |
4814 | if (cc[1] > OP_ASSERTBACK_NOT) never evaluated: cc[1] > OP_ASSERTBACK_NOT | 0 |
4815 | cc = compile_bracket_hotpath(common, cc, parent); never executed: cc = compile_bracket_hotpath(common, cc, parent); | 0 |
4816 | else | - |
4817 | { | - |
4818 | do { fallback = sljit_alloc_memory(compiler, (sizeof(assert_fallback))); if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) return; memset(fallback, 0, sizeof(assert_fallback)); fallback->prev = parent->top; fallback->cc = (cc); parent->top = fallback; } while (0); never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) | 0 |
4819 | cc = compile_assert_hotpath(common, cc, ((assert_fallback*)fallback), 0); | - |
4820 | } | 0 |
4821 | break; | 0 |
4822 | | - |
4823 | case OP_BRAPOS: | - |
4824 | case OP_CBRAPOS: | - |
4825 | case OP_SBRAPOS: | - |
4826 | case OP_SCBRAPOS: | - |
4827 | case OP_BRAPOSZERO: | - |
4828 | cc = compile_bracketpos_hotpath(common, cc, parent); | - |
4829 | break; | 0 |
4830 | | - |
4831 | case OP_FAIL: | - |
4832 | case OP_ACCEPT: | - |
4833 | case OP_ASSERT_ACCEPT: | - |
4834 | cc = compile_fail_accept_hotpath(common, cc, parent); | - |
4835 | break; | 0 |
4836 | | - |
4837 | case OP_CLOSE: | - |
4838 | cc = compile_close_hotpath(common, cc); | - |
4839 | break; | 0 |
4840 | | - |
4841 | case OP_SKIPZERO: | - |
4842 | cc = bracketend(cc + 1); | - |
4843 | break; | 0 |
4844 | | - |
4845 | default: | - |
4846 | do { } while (0); | 0 |
4847 | return; | 0 |
4848 | } | - |
4849 | if (cc == ((void *)0)) partially evaluated: cc == ((void *)0) no Evaluation Count:0 | yes Evaluation Count:31 |
| 0-31 |
4850 | return; | 0 |
4851 | } executed: } Execution Count:31 | 31 |
4852 | do { } while (0); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:31 |
executed: } Execution Count:31 | 0-31 |
4853 | } executed: } Execution Count:31 | 31 |
4854 | static void compile_iterator_fallbackpath(compiler_common *common, struct fallback_common *current) | - |
4855 | { | - |
4856 | struct sljit_compiler *compiler = common->compiler; | - |
4857 | pcre_uchar *cc = current->cc; | - |
4858 | pcre_uchar opcode; | - |
4859 | pcre_uchar type; | - |
4860 | int arg1 = -1, arg2 = -1; | - |
4861 | struct sljit_label *label = ((void *)0); | - |
4862 | struct sljit_jump *jump = ((void *)0); | - |
4863 | | - |
4864 | cc = get_iterator_parameters(common, cc, &opcode, &type, &arg1, &arg2, ((void *)0)); | - |
4865 | | - |
4866 | switch(opcode) | - |
4867 | { | - |
4868 | case OP_STAR: | - |
4869 | case OP_PLUS: | - |
4870 | case OP_UPTO: | - |
4871 | case OP_CRRANGE: | - |
4872 | if (type == OP_ANYNL || type == OP_EXTUNI) partially evaluated: type == OP_ANYNL no Evaluation Count:0 | yes Evaluation Count:8 |
partially evaluated: type == OP_EXTUNI no Evaluation Count:0 | yes Evaluation Count:8 |
| 0-8 |
4873 | { | - |
4874 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
4875 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
4876 | free_stack(common, 1); | - |
4877 | sljit_set_label(sljit_emit_cmp(compiler, (1), (6), (0), (0x200), (0)), (((iterator_fallback*)current)->hotpath)); | - |
4878 | } | 0 |
4879 | else | - |
4880 | { | - |
4881 | if (opcode == OP_STAR || opcode == OP_UPTO) partially evaluated: opcode == OP_STAR yes Evaluation Count:8 | no Evaluation Count:0 |
never evaluated: opcode == OP_UPTO | 0-8 |
4882 | arg2 = 0; executed: arg2 = 0; Execution Count:8 | 8 |
4883 | else if (opcode == OP_PLUS) never evaluated: opcode == OP_PLUS | 0 |
4884 | arg2 = 1; never executed: arg2 = 1; | 0 |
4885 | jump = sljit_emit_cmp(compiler, (5), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (0x200), (arg2 + 1)); | - |
4886 | sljit_emit_op2(compiler, (25), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (0x200), (1)); | - |
4887 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
4888 | skip_char_back(common); | - |
4889 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
4890 | sljit_set_label(sljit_emit_jump(compiler, (22)), (((iterator_fallback*)current)->hotpath)); | - |
4891 | if (opcode == OP_PLUS || opcode == OP_CRRANGE) partially evaluated: opcode == OP_PLUS no Evaluation Count:0 | yes Evaluation Count:8 |
partially evaluated: opcode == OP_CRRANGE no Evaluation Count:0 | yes Evaluation Count:8 |
| 0-8 |
4892 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); never executed: set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | 0 |
4893 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
4894 | free_stack(common, 2); | - |
4895 | } executed: } Execution Count:8 | 8 |
4896 | break; executed: break; Execution Count:8 | 8 |
4897 | | - |
4898 | case OP_MINSTAR: | - |
4899 | case OP_MINPLUS: | - |
4900 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
4901 | if (opcode == OP_MINPLUS) never evaluated: opcode == OP_MINPLUS | 0 |
4902 | { | - |
4903 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
4904 | current->topfallbacks = ((void *)0); | - |
4905 | } | 0 |
4906 | compile_char1_hotpath(common, type, cc, ¤t->topfallbacks); | - |
4907 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
4908 | sljit_set_label(sljit_emit_jump(compiler, (22)), (((iterator_fallback*)current)->hotpath)); | - |
4909 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
4910 | free_stack(common, 1); | - |
4911 | break; | 0 |
4912 | | - |
4913 | case OP_MINUPTO: | - |
4914 | case OP_CRMINRANGE: | - |
4915 | if (opcode == OP_CRMINRANGE) never evaluated: opcode == OP_CRMINRANGE | 0 |
4916 | { | - |
4917 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
4918 | current->topfallbacks = ((void *)0); | - |
4919 | label = sljit_emit_label(compiler); | - |
4920 | } | 0 |
4921 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
4922 | compile_char1_hotpath(common, type, cc, ¤t->topfallbacks); | - |
4923 | | - |
4924 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w)))); | - |
4925 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | - |
4926 | sljit_emit_op2(compiler, (23), (1), (0), (1), (0), (0x200), (1)); | - |
4927 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w))), (1), (0)); | - |
4928 | | - |
4929 | if (opcode == OP_CRMINRANGE) never evaluated: opcode == OP_CRMINRANGE | 0 |
4930 | sljit_set_label(sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (arg2 + 1)), (label)); never executed: sljit_set_label(sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (arg2 + 1)), (label)); | 0 |
4931 | | - |
4932 | if (opcode == OP_CRMINRANGE && arg1 == 0) never evaluated: opcode == OP_CRMINRANGE never evaluated: arg1 == 0 | 0 |
4933 | sljit_set_label(sljit_emit_jump(compiler, (22)), (((iterator_fallback*)current)->hotpath)); never executed: sljit_set_label(sljit_emit_jump(compiler, (22)), (((iterator_fallback*)current)->hotpath)); | 0 |
4934 | else | - |
4935 | sljit_set_label(sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (arg1 + 2)), (((iterator_fallback*)current)->hotpath)); never executed: sljit_set_label(sljit_emit_cmp(compiler, (2), (1), (0), (0x200), (arg1 + 2)), (((iterator_fallback*)current)->hotpath)); | 0 |
4936 | | - |
4937 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
4938 | free_stack(common, 2); | - |
4939 | break; | 0 |
4940 | | - |
4941 | case OP_QUERY: | - |
4942 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
4943 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
4944 | sljit_set_label(sljit_emit_cmp(compiler, (1), (6), (0), (0x200), (0)), (((iterator_fallback*)current)->hotpath)); | - |
4945 | jump = sljit_emit_jump(compiler, (22)); | - |
4946 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
4947 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
4948 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
4949 | sljit_set_label(sljit_emit_jump(compiler, (22)), (((iterator_fallback*)current)->hotpath)); | - |
4950 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
4951 | free_stack(common, 1); | - |
4952 | break; | 0 |
4953 | | - |
4954 | case OP_MINQUERY: | - |
4955 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
4956 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
4957 | jump = sljit_emit_cmp(compiler, (0), (6), (0), (0x200), (0)); | - |
4958 | compile_char1_hotpath(common, type, cc, ¤t->topfallbacks); | - |
4959 | sljit_set_label(sljit_emit_jump(compiler, (22)), (((iterator_fallback*)current)->hotpath)); | - |
4960 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
4961 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
4962 | free_stack(common, 1); | - |
4963 | break; | 0 |
4964 | | - |
4965 | case OP_EXACT: | - |
4966 | case OP_POSPLUS: | - |
4967 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
4968 | break; | 0 |
4969 | | - |
4970 | case OP_POSSTAR: | - |
4971 | case OP_POSQUERY: | - |
4972 | case OP_POSUPTO: | - |
4973 | break; | 0 |
4974 | | - |
4975 | default: | - |
4976 | do { } while (0); | 0 |
4977 | break; | 0 |
4978 | } | - |
4979 | } executed: } Execution Count:8 | 8 |
4980 | | - |
4981 | static void compile_ref_iterator_fallbackpath(compiler_common *common, struct fallback_common *current) | - |
4982 | { | - |
4983 | struct sljit_compiler *compiler = common->compiler; | - |
4984 | pcre_uchar *cc = current->cc; | - |
4985 | pcre_uchar type; | - |
4986 | | - |
4987 | type = cc[1 + 1]; | - |
4988 | if ((type & 0x1) == 0) never evaluated: (type & 0x1) == 0 | 0 |
4989 | { | - |
4990 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
4991 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
4992 | free_stack(common, 1); | - |
4993 | sljit_set_label(sljit_emit_cmp(compiler, (1), (6), (0), (0x200), (0)), (((iterator_fallback*)current)->hotpath)); | - |
4994 | return; | 0 |
4995 | } | - |
4996 | | - |
4997 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
4998 | sljit_set_label(sljit_emit_cmp(compiler, (1), (6), (0), (0x200), (0)), (((iterator_fallback*)current)->hotpath)); | - |
4999 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
5000 | free_stack(common, 2); | - |
5001 | } | 0 |
5002 | | - |
5003 | static void compile_recurse_fallbackpath(compiler_common *common, struct fallback_common *current) | - |
5004 | { | - |
5005 | struct sljit_compiler *compiler = common->compiler; | - |
5006 | | - |
5007 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
5008 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
5009 | free_stack(common, 1); | - |
5010 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w))), (3), (0)); | - |
5011 | } | 0 |
5012 | | - |
5013 | static void compile_assert_fallbackpath(compiler_common *common, struct fallback_common *current) | - |
5014 | { | - |
5015 | struct sljit_compiler *compiler = common->compiler; | - |
5016 | pcre_uchar *cc = current->cc; | - |
5017 | pcre_uchar bra = OP_BRA; | - |
5018 | struct sljit_jump *brajump = ((void *)0); | - |
5019 | | - |
5020 | do { } while (0); | 0 |
5021 | if (*cc == OP_BRAZERO) never evaluated: *cc == OP_BRAZERO | 0 |
5022 | { | - |
5023 | bra = *cc; | - |
5024 | cc++; | - |
5025 | } | 0 |
5026 | | - |
5027 | if (bra == OP_BRAZERO) never evaluated: bra == OP_BRAZERO | 0 |
5028 | { | - |
5029 | do { } while (0); | 0 |
5030 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
5031 | } | 0 |
5032 | | - |
5033 | if (((assert_fallback*)current)->framesize < 0) never evaluated: ((assert_fallback*)current)->framesize < 0 | 0 |
5034 | { | - |
5035 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
5036 | | - |
5037 | if (bra == OP_BRAZERO) never evaluated: bra == OP_BRAZERO | 0 |
5038 | { | - |
5039 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
5040 | sljit_set_label(sljit_emit_cmp(compiler, (1), (6), (0), (0x200), (0)), (((assert_fallback*)current)->hotpath)); | - |
5041 | free_stack(common, 1); | - |
5042 | } | 0 |
5043 | return; | 0 |
5044 | } | - |
5045 | | - |
5046 | if (bra == OP_BRAZERO) never evaluated: bra == OP_BRAZERO | 0 |
5047 | { | - |
5048 | if (*cc == OP_ASSERT_NOT || *cc == OP_ASSERTBACK_NOT) never evaluated: *cc == OP_ASSERT_NOT never evaluated: *cc == OP_ASSERTBACK_NOT | 0 |
5049 | { | - |
5050 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
5051 | sljit_set_label(sljit_emit_cmp(compiler, (1), (6), (0), (0x200), (0)), (((assert_fallback*)current)->hotpath)); | - |
5052 | free_stack(common, 1); | - |
5053 | return; | 0 |
5054 | } | - |
5055 | free_stack(common, 1); | - |
5056 | brajump = sljit_emit_cmp(compiler, (0), (6), (0), (0x200), (0)); | - |
5057 | } | 0 |
5058 | | - |
5059 | if (*cc == OP_ASSERT || *cc == OP_ASSERTBACK) never evaluated: *cc == OP_ASSERT never evaluated: *cc == OP_ASSERTBACK | 0 |
5060 | { | - |
5061 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), (((assert_fallback*)current)->localptr)); | - |
5062 | add_jump(compiler, &common->revertframes, sljit_emit_jump(compiler, (23))); | - |
5063 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((assert_fallback*)current)->localptr), ((0x100 | (2))), (((assert_fallback*)current)->framesize * sizeof(sljit_w))); | - |
5064 | | - |
5065 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
5066 | } | 0 |
5067 | else | - |
5068 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); never executed: set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | 0 |
5069 | | - |
5070 | if (bra == OP_BRAZERO) never evaluated: bra == OP_BRAZERO | 0 |
5071 | { | - |
5072 | | - |
5073 | sljit_emit_op2(compiler, (23), (2), (0), (2), (0), (0x200), (sizeof(sljit_w))); | - |
5074 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | - |
5075 | sljit_set_label(sljit_emit_jump(compiler, (22)), (((assert_fallback*)current)->hotpath)); | - |
5076 | sljit_set_label((brajump), sljit_emit_label(compiler)); | - |
5077 | } | 0 |
5078 | } | 0 |
5079 | | - |
5080 | static void compile_bracket_fallbackpath(compiler_common *common, struct fallback_common *current) | - |
5081 | { | - |
5082 | struct sljit_compiler *compiler = common->compiler; | - |
5083 | int opcode; | - |
5084 | int offset = 0; | - |
5085 | int localptr = ((bracket_fallback*)current)->localptr; | - |
5086 | int stacksize; | - |
5087 | int count; | - |
5088 | pcre_uchar *cc = current->cc; | - |
5089 | pcre_uchar *ccbegin; | - |
5090 | pcre_uchar *ccprev; | - |
5091 | jump_list *jumplist = ((void *)0); | - |
5092 | jump_list *jumplistitem = ((void *)0); | - |
5093 | pcre_uchar bra = OP_BRA; | - |
5094 | pcre_uchar ket; | - |
5095 | assert_fallback *assert; | - |
5096 | BOOL has_alternatives; | - |
5097 | struct sljit_jump *brazero = ((void *)0); | - |
5098 | struct sljit_jump *once = ((void *)0); | - |
5099 | struct sljit_jump *cond = ((void *)0); | - |
5100 | struct sljit_label *rminlabel = ((void *)0); | - |
5101 | | - |
5102 | if (*cc == OP_BRAZERO || *cc == OP_BRAMINZERO) partially evaluated: *cc == OP_BRAZERO no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: *cc == OP_BRAMINZERO no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5103 | { | - |
5104 | bra = *cc; | - |
5105 | cc++; | - |
5106 | } | 0 |
5107 | | - |
5108 | opcode = *cc; | - |
5109 | ccbegin = cc; | - |
5110 | ket = *(bracketend(ccbegin) - 1 - 1); | - |
5111 | cc += (cc[1]); | - |
5112 | has_alternatives = *cc == OP_ALT; | - |
5113 | if (__builtin_expect((opcode == OP_COND), 0) || __builtin_expect((opcode == OP_SCOND), 0)) partially evaluated: __builtin_expect((opcode == OP_COND), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: __builtin_expect((opcode == OP_SCOND), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5114 | has_alternatives = (ccbegin[1 + 1] >= OP_ASSERT && ccbegin[1 + 1] <= OP_ASSERTBACK_NOT) || ((bracket_fallback*)current)->u.condfailed != ((void *)0); never evaluated: ccbegin[1 + 1] >= OP_ASSERT never evaluated: ccbegin[1 + 1] <= OP_ASSERTBACK_NOT never evaluated: ((bracket_fallback*)current)->u.condfailed != ((void *)0) never executed: has_alternatives = (ccbegin[1 + 1] >= OP_ASSERT && ccbegin[1 + 1] <= OP_ASSERTBACK_NOT) || ((bracket_fallback*)current)->u.condfailed != ((void *)0); | 0 |
5115 | if (opcode == OP_CBRA || opcode == OP_SCBRA) partially evaluated: opcode == OP_CBRA no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: opcode == OP_SCBRA no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5116 | offset = (ccbegin[1 + 1]) << 1; never executed: offset = (ccbegin[1 + 1]) << 1; | 0 |
5117 | if (__builtin_expect((opcode == OP_COND), 0) && (*cc == OP_KETRMAX || *cc == OP_KETRMIN)) partially evaluated: __builtin_expect((opcode == OP_COND), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
never evaluated: *cc == OP_KETRMAX never evaluated: *cc == OP_KETRMIN | 0-15 |
5118 | opcode = OP_SCOND; never executed: opcode = OP_SCOND; | 0 |
5119 | if (__builtin_expect((opcode == OP_ONCE_NC), 0)) partially evaluated: __builtin_expect((opcode == OP_ONCE_NC), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5120 | opcode = OP_ONCE; never executed: opcode = OP_ONCE; | 0 |
5121 | | - |
5122 | if (ket == OP_KETRMAX) partially evaluated: ket == OP_KETRMAX no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5123 | { | - |
5124 | if (bra != OP_BRAZERO) never evaluated: bra != OP_BRAZERO | 0 |
5125 | free_stack(common, 1); never executed: free_stack(common, 1); | 0 |
5126 | else | - |
5127 | { | - |
5128 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
5129 | free_stack(common, 1); | - |
5130 | brazero = sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (0)); | - |
5131 | } | 0 |
5132 | } | - |
5133 | else if (ket == OP_KETRMIN) partially evaluated: ket == OP_KETRMIN no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5134 | { | - |
5135 | if (bra != OP_BRAMINZERO) never evaluated: bra != OP_BRAMINZERO | 0 |
5136 | { | - |
5137 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
5138 | if (opcode >= OP_SBRA || opcode == OP_ONCE) never evaluated: opcode >= OP_SBRA never evaluated: opcode == OP_ONCE | 0 |
5139 | { | - |
5140 | | - |
5141 | if (opcode != OP_ONCE || ((bracket_fallback*)current)->u.framesize < 0) never evaluated: opcode != OP_ONCE never evaluated: ((bracket_fallback*)current)->u.framesize < 0 | 0 |
5142 | sljit_set_label(sljit_emit_cmp(compiler, (1), (6), (0), ((0x100 | (11))), (localptr)), (((bracket_fallback*)current)->recursivehotpath)); never executed: sljit_set_label(sljit_emit_cmp(compiler, (1), (6), (0), ((0x100 | (11))), (localptr)), (((bracket_fallback*)current)->recursivehotpath)); | 0 |
5143 | else | - |
5144 | { | - |
5145 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (localptr)); | - |
5146 | sljit_set_label(sljit_emit_cmp(compiler, (1), (6), (0), ((0x100 | (1))), ((((bracket_fallback*)current)->u.framesize + 1) * sizeof(sljit_w))), (((bracket_fallback*)current)->recursivehotpath)); | - |
5147 | } | 0 |
5148 | if (opcode != OP_ONCE) never evaluated: opcode != OP_ONCE | 0 |
5149 | free_stack(common, 1); never executed: free_stack(common, 1); | 0 |
5150 | } | 0 |
5151 | else | - |
5152 | sljit_set_label(sljit_emit_jump(compiler, (22)), (((bracket_fallback*)current)->recursivehotpath)); never executed: sljit_set_label(sljit_emit_jump(compiler, (22)), (((bracket_fallback*)current)->recursivehotpath)); | 0 |
5153 | } | - |
5154 | rminlabel = sljit_emit_label(compiler); | - |
5155 | } | 0 |
5156 | else if (bra == OP_BRAZERO) partially evaluated: bra == OP_BRAZERO no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5157 | { | - |
5158 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
5159 | free_stack(common, 1); | - |
5160 | brazero = sljit_emit_cmp(compiler, (1), (1), (0), (0x200), (0)); | - |
5161 | } | 0 |
5162 | | - |
5163 | if (__builtin_expect((opcode == OP_ONCE), 0)) partially evaluated: __builtin_expect((opcode == OP_ONCE), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5164 | { | - |
5165 | if (((bracket_fallback*)current)->u.framesize >= 0) never evaluated: ((bracket_fallback*)current)->u.framesize >= 0 | 0 |
5166 | { | - |
5167 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), (localptr)); | - |
5168 | add_jump(compiler, &common->revertframes, sljit_emit_jump(compiler, (23))); | - |
5169 | } | 0 |
5170 | once = sljit_emit_jump(compiler, (22)); | - |
5171 | } | 0 |
5172 | else if (__builtin_expect((opcode == OP_COND), 0) || __builtin_expect((opcode == OP_SCOND), 0)) partially evaluated: __builtin_expect((opcode == OP_COND), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: __builtin_expect((opcode == OP_SCOND), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5173 | { | - |
5174 | if (has_alternatives) never evaluated: has_alternatives | 0 |
5175 | { | - |
5176 | | - |
5177 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
5178 | free_stack(common, 1); | - |
5179 | | - |
5180 | jumplistitem = sljit_alloc_memory(compiler, sizeof(jump_list)); | - |
5181 | if (__builtin_expect((!jumplistitem), 0)) never evaluated: __builtin_expect((!jumplistitem), 0) | 0 |
5182 | return; | 0 |
5183 | jumplist = jumplistitem; | - |
5184 | jumplistitem->next = ((void *)0); | - |
5185 | jumplistitem->jump = sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (1)); | - |
5186 | } | 0 |
5187 | } | 0 |
5188 | else if (*cc == OP_ALT) evaluated: *cc == OP_ALT yes Evaluation Count:1 | yes Evaluation Count:14 |
| 1-14 |
5189 | { | - |
5190 | | - |
5191 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
5192 | free_stack(common, 1); | - |
5193 | count = 1; | - |
5194 | do | - |
5195 | { | - |
5196 | | - |
5197 | if (jumplist != ((void *)0)) partially evaluated: jumplist != ((void *)0) no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
5198 | { | - |
5199 | jumplistitem->next = sljit_alloc_memory(compiler, sizeof(jump_list)); | - |
5200 | jumplistitem = jumplistitem->next; | - |
5201 | } | 0 |
5202 | else | - |
5203 | { | - |
5204 | jumplistitem = sljit_alloc_memory(compiler, sizeof(jump_list)); | - |
5205 | jumplist = jumplistitem; | - |
5206 | } executed: } Execution Count:1 | 1 |
5207 | | - |
5208 | if (__builtin_expect((!jumplistitem), 0)) partially evaluated: __builtin_expect((!jumplistitem), 0) no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
5209 | return; | 0 |
5210 | | - |
5211 | jumplistitem->next = ((void *)0); | - |
5212 | jumplistitem->jump = sljit_emit_cmp(compiler, (0), (1), (0), (0x200), (count++)); | - |
5213 | cc += (cc[1]); | - |
5214 | } executed: } Execution Count:1 | 1 |
5215 | while (*cc == OP_ALT); partially evaluated: *cc == OP_ALT no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
5216 | | - |
5217 | cc = ccbegin + (ccbegin[1]); | - |
5218 | } executed: } Execution Count:1 | 1 |
5219 | | - |
5220 | do { compile_fallbackpath(common, (current->top)); if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) return; } while (0); partially evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:15 |
executed: } Execution Count:15 | 0-15 |
5221 | if (current->topfallbacks) evaluated: current->topfallbacks yes Evaluation Count:7 | yes Evaluation Count:8 |
| 7-8 |
5222 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); executed: set_jumps(current->topfallbacks, sljit_emit_label(compiler)); Execution Count:7 | 7 |
5223 | | - |
5224 | if (__builtin_expect((opcode == OP_COND), 0) || __builtin_expect((opcode == OP_SCOND), 0)) partially evaluated: __builtin_expect((opcode == OP_COND), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: __builtin_expect((opcode == OP_SCOND), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5225 | { | - |
5226 | | - |
5227 | if (ccbegin[1 + 1] >= OP_ASSERT && ccbegin[1 + 1] <= OP_ASSERTBACK_NOT) never evaluated: ccbegin[1 + 1] >= OP_ASSERT never evaluated: ccbegin[1 + 1] <= OP_ASSERTBACK_NOT | 0 |
5228 | { | - |
5229 | do { } while (0); | 0 |
5230 | assert = ((bracket_fallback*)current)->u.assert; | - |
5231 | if (assert->framesize >= 0 && (ccbegin[1 + 1] == OP_ASSERT || ccbegin[1 + 1] == OP_ASSERTBACK)) never evaluated: assert->framesize >= 0 never evaluated: ccbegin[1 + 1] == OP_ASSERT never evaluated: ccbegin[1 + 1] == OP_ASSERTBACK | 0 |
5232 | { | - |
5233 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), (assert->localptr)); | - |
5234 | add_jump(compiler, &common->revertframes, sljit_emit_jump(compiler, (23))); | - |
5235 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (assert->localptr), ((0x100 | (2))), (assert->framesize * sizeof(sljit_w))); | - |
5236 | } | 0 |
5237 | cond = sljit_emit_jump(compiler, (22)); | - |
5238 | set_jumps(((bracket_fallback*)current)->u.assert->condfailed, sljit_emit_label(compiler)); | - |
5239 | } | 0 |
5240 | else if (((bracket_fallback*)current)->u.condfailed != ((void *)0)) never evaluated: ((bracket_fallback*)current)->u.condfailed != ((void *)0) | 0 |
5241 | { | - |
5242 | do { } while (0); | 0 |
5243 | cond = sljit_emit_jump(compiler, (22)); | - |
5244 | set_jumps(((bracket_fallback*)current)->u.condfailed, sljit_emit_label(compiler)); | - |
5245 | } | 0 |
5246 | else | - |
5247 | do { } while (0); | 0 |
5248 | } | - |
5249 | | - |
5250 | if (has_alternatives) evaluated: has_alternatives yes Evaluation Count:1 | yes Evaluation Count:14 |
| 1-14 |
5251 | { | - |
5252 | count = 1; | - |
5253 | do | - |
5254 | { | - |
5255 | current->top = ((void *)0); | - |
5256 | current->topfallbacks = ((void *)0); | - |
5257 | current->nextfallbacks = ((void *)0); | - |
5258 | if (*cc == OP_ALT) partially evaluated: *cc == OP_ALT yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
5259 | { | - |
5260 | ccprev = cc + 1 + 1; | - |
5261 | cc += (cc[1]); | - |
5262 | if (opcode != OP_COND && opcode != OP_SCOND) partially evaluated: opcode != OP_COND yes Evaluation Count:1 | no Evaluation Count:0 |
partially evaluated: opcode != OP_SCOND yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
5263 | { | - |
5264 | if (localptr != 0 && opcode != OP_ONCE) partially evaluated: localptr != 0 no Evaluation Count:0 | yes Evaluation Count:1 |
never evaluated: opcode != OP_ONCE | 0-1 |
5265 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (11))), (localptr)); never executed: sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (11))), (localptr)); | 0 |
5266 | else | - |
5267 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); executed: sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); Execution Count:1 | 1 |
5268 | } | - |
5269 | compile_hotpath(common, ccprev, cc, current); | - |
5270 | if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) partially evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
5271 | return; | 0 |
5272 | } executed: } Execution Count:1 | 1 |
5273 | | - |
5274 | | - |
5275 | | - |
5276 | if (opcode == OP_ONCE) partially evaluated: opcode == OP_ONCE no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
5277 | { | - |
5278 | if (((bracket_fallback*)current)->u.framesize < 0) never evaluated: ((bracket_fallback*)current)->u.framesize < 0 | 0 |
5279 | { | - |
5280 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), (localptr)); | - |
5281 | | - |
5282 | if (ket == OP_KETRMAX) never evaluated: ket == OP_KETRMAX | 0 |
5283 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (2))), (0)); never executed: sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (2))), (0)); | 0 |
5284 | else if (ket == OP_KETRMIN) never evaluated: ket == OP_KETRMIN | 0 |
5285 | { | - |
5286 | | - |
5287 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), ((0x100 | (2))), (0)); | - |
5288 | } | 0 |
5289 | } | - |
5290 | else | - |
5291 | { | - |
5292 | sljit_emit_op2(compiler, (23), (2), (0), ((0x100 | (11))), (localptr), (0x200), ((((bracket_fallback*)current)->u.framesize + 2) * sizeof(sljit_w))); | - |
5293 | if (ket == OP_KETRMAX) never evaluated: ket == OP_KETRMAX | 0 |
5294 | { | - |
5295 | | - |
5296 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
5297 | } | 0 |
5298 | } | 0 |
5299 | } | - |
5300 | | - |
5301 | stacksize = 0; | - |
5302 | if (opcode != OP_ONCE) partially evaluated: opcode != OP_ONCE yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
5303 | stacksize++; executed: stacksize++; Execution Count:1 | 1 |
5304 | if (ket != OP_KET || bra != OP_BRA) partially evaluated: ket != OP_KET no Evaluation Count:0 | yes Evaluation Count:1 |
partially evaluated: bra != OP_BRA no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
5305 | stacksize++; never executed: stacksize++; | 0 |
5306 | | - |
5307 | if (stacksize > 0) { partially evaluated: stacksize > 0 yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
5308 | if (opcode != OP_ONCE || ((bracket_fallback*)current)->u.framesize >= 0) partially evaluated: opcode != OP_ONCE yes Evaluation Count:1 | no Evaluation Count:0 |
never evaluated: ((bracket_fallback*)current)->u.framesize >= 0 | 0-1 |
5309 | allocate_stack(common, stacksize); executed: allocate_stack(common, stacksize); Execution Count:1 | 1 |
5310 | else | - |
5311 | { | - |
5312 | | - |
5313 | do { } while (0); | 0 |
5314 | sljit_emit_op2(compiler, (23), (2), (0), (2), (0), (0x200), (sizeof(sljit_w))); | - |
5315 | } | 0 |
5316 | } | - |
5317 | | - |
5318 | stacksize = 0; | - |
5319 | if (ket != OP_KET || bra != OP_BRA) partially evaluated: ket != OP_KET no Evaluation Count:0 | yes Evaluation Count:1 |
partially evaluated: bra != OP_BRA no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
5320 | { | - |
5321 | if (ket != OP_KET) never evaluated: ket != OP_KET | 0 |
5322 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize) - 1) * (int)sizeof(sljit_w))), (6), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize) - 1) * (int)sizeof(sljit_w))), (6), (0)); | 0 |
5323 | else | - |
5324 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize) - 1) * (int)sizeof(sljit_w))), (0x200), (0)); | 0 |
5325 | stacksize++; | - |
5326 | } | 0 |
5327 | | - |
5328 | if (opcode != OP_ONCE) partially evaluated: opcode != OP_ONCE yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
5329 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize) - 1) * (int)sizeof(sljit_w))), (0x200), (count++)); executed: sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(stacksize) - 1) * (int)sizeof(sljit_w))), (0x200), (count++)); Execution Count:1 | 1 |
5330 | | - |
5331 | if (offset != 0) partially evaluated: offset != 0 no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
5332 | { | - |
5333 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (11))), (localptr)); | - |
5334 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 1) * sizeof(sljit_w))), (6), (0)); | - |
5335 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 0) * sizeof(sljit_w))), (1), (0)); | - |
5336 | } | 0 |
5337 | | - |
5338 | sljit_set_label(sljit_emit_jump(compiler, (22)), (((bracket_fallback*)current)->althotpath)); | - |
5339 | | - |
5340 | if (opcode != OP_ONCE) partially evaluated: opcode != OP_ONCE yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
5341 | { | - |
5342 | do { } while (0); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:1 |
executed: } Execution Count:1 | 0-1 |
5343 | sljit_set_label((jumplist->jump), sljit_emit_label(compiler)); | - |
5344 | jumplist = jumplist->next; | - |
5345 | } executed: } Execution Count:1 | 1 |
5346 | | - |
5347 | do { compile_fallbackpath(common, (current->top)); if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) return; } while (0); partially evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) no Evaluation Count:0 | yes Evaluation Count:1 |
partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:1 |
executed: } Execution Count:1 | 0-1 |
5348 | if (current->topfallbacks) partially evaluated: current->topfallbacks yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
5349 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); executed: set_jumps(current->topfallbacks, sljit_emit_label(compiler)); Execution Count:1 | 1 |
5350 | do { } while (0); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:1 |
executed: } Execution Count:1 | 0-1 |
5351 | } executed: } Execution Count:1 | 1 |
5352 | while (*cc == OP_ALT); partially evaluated: *cc == OP_ALT no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
5353 | do { } while (0); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:1 |
executed: } Execution Count:1 | 0-1 |
5354 | | - |
5355 | if (cond != ((void *)0)) partially evaluated: cond != ((void *)0) no Evaluation Count:0 | yes Evaluation Count:1 |
| 0-1 |
5356 | { | - |
5357 | do { } while (0); | 0 |
5358 | assert = ((bracket_fallback*)current)->u.assert; | - |
5359 | if ((ccbegin[1 + 1] == OP_ASSERT_NOT || ccbegin[1 + 1] == OP_ASSERTBACK_NOT) && assert->framesize >= 0) never evaluated: ccbegin[1 + 1] == OP_ASSERT_NOT never evaluated: ccbegin[1 + 1] == OP_ASSERTBACK_NOT never evaluated: assert->framesize >= 0 | 0 |
5360 | | - |
5361 | { | - |
5362 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), (assert->localptr)); | - |
5363 | add_jump(compiler, &common->revertframes, sljit_emit_jump(compiler, (23))); | - |
5364 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (assert->localptr), ((0x100 | (2))), (assert->framesize * sizeof(sljit_w))); | - |
5365 | } | 0 |
5366 | sljit_set_label((cond), sljit_emit_label(compiler)); | - |
5367 | } | 0 |
5368 | | - |
5369 | | - |
5370 | if (localptr == 0) partially evaluated: localptr == 0 yes Evaluation Count:1 | no Evaluation Count:0 |
| 0-1 |
5371 | free_stack(common, 1); executed: free_stack(common, 1); Execution Count:1 | 1 |
5372 | } executed: } Execution Count:1 | 1 |
5373 | | - |
5374 | if (offset != 0) partially evaluated: offset != 0 no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5375 | { | - |
5376 | | - |
5377 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
5378 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w)))); | - |
5379 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset) * sizeof(sljit_w))), (1), (0)); | - |
5380 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 1) * sizeof(sljit_w))), (3), (0)); | - |
5381 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), ((0x100 | (2))), (((-(2) - 1) * (int)sizeof(sljit_w)))); | - |
5382 | free_stack(common, 3); | - |
5383 | } | 0 |
5384 | else if (opcode == OP_SBRA || opcode == OP_SCOND) partially evaluated: opcode == OP_SBRA no Evaluation Count:0 | yes Evaluation Count:15 |
partially evaluated: opcode == OP_SCOND no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5385 | { | - |
5386 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
5387 | free_stack(common, 1); | - |
5388 | } | 0 |
5389 | else if (opcode == OP_ONCE) partially evaluated: opcode == OP_ONCE no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5390 | { | - |
5391 | cc = ccbegin + (ccbegin[1]); | - |
5392 | if (((bracket_fallback*)current)->u.framesize >= 0) never evaluated: ((bracket_fallback*)current)->u.framesize >= 0 | 0 |
5393 | { | - |
5394 | | - |
5395 | stacksize = (ket == OP_KETRMAX || ket == OP_KETRMIN || *cc == OP_ALT) ? 2 : 1; never evaluated: ket == OP_KETRMAX never evaluated: ket == OP_KETRMIN never evaluated: *cc == OP_ALT | 0 |
5396 | free_stack(common, ((bracket_fallback*)current)->u.framesize + stacksize); | - |
5397 | } | 0 |
5398 | else if (ket == OP_KETRMAX || (*cc == OP_ALT && ket != OP_KETRMIN)) never evaluated: ket == OP_KETRMAX never evaluated: *cc == OP_ALT never evaluated: ket != OP_KETRMIN | 0 |
5399 | { | - |
5400 | | - |
5401 | free_stack(common, 1); | - |
5402 | } | 0 |
5403 | | - |
5404 | sljit_set_label((once), sljit_emit_label(compiler)); | - |
5405 | | - |
5406 | if (((bracket_fallback*)current)->u.framesize >= 0) never evaluated: ((bracket_fallback*)current)->u.framesize >= 0 | 0 |
5407 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), ((0x100 | (2))), (((bracket_fallback*)current)->u.framesize * sizeof(sljit_w))); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), ((0x100 | (2))), (((bracket_fallback*)current)->u.framesize * sizeof(sljit_w))); | 0 |
5408 | else if (ket == OP_KETRMIN) never evaluated: ket == OP_KETRMIN | 0 |
5409 | { | - |
5410 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w)))); | - |
5411 | | - |
5412 | free_stack(common, 2); | - |
5413 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (localptr), (1), (0)); | - |
5414 | } | 0 |
5415 | } | - |
5416 | | - |
5417 | if (ket == OP_KETRMAX) partially evaluated: ket == OP_KETRMAX no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5418 | { | - |
5419 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
5420 | sljit_set_label(sljit_emit_cmp(compiler, (1), (6), (0), (0x200), (0)), (((bracket_fallback*)current)->recursivehotpath)); | - |
5421 | if (bra == OP_BRAZERO) never evaluated: bra == OP_BRAZERO | 0 |
5422 | { | - |
5423 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w)))); | - |
5424 | sljit_set_label(sljit_emit_jump(compiler, (22)), (((bracket_fallback*)current)->zerohotpath)); | - |
5425 | sljit_set_label((brazero), sljit_emit_label(compiler)); | - |
5426 | } | 0 |
5427 | free_stack(common, 1); | - |
5428 | } | 0 |
5429 | else if (ket == OP_KETRMIN) partially evaluated: ket == OP_KETRMIN no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5430 | { | - |
5431 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
5432 | | - |
5433 | | - |
5434 | | - |
5435 | | - |
5436 | if (opcode != OP_ONCE) never evaluated: opcode != OP_ONCE | 0 |
5437 | free_stack(common, 1); never executed: free_stack(common, 1); | 0 |
5438 | sljit_set_label(sljit_emit_cmp(compiler, (1), (1), (0), (0x200), (0)), (rminlabel)); | - |
5439 | if (opcode == OP_ONCE) never evaluated: opcode == OP_ONCE | 0 |
5440 | free_stack(common, bra == OP_BRAMINZERO ? 2 : 1); never executed: free_stack(common, bra == OP_BRAMINZERO ? 2 : 1); | 0 |
5441 | else if (bra == OP_BRAMINZERO) never evaluated: bra == OP_BRAMINZERO | 0 |
5442 | free_stack(common, 1); never executed: free_stack(common, 1); | 0 |
5443 | } | - |
5444 | else if (bra == OP_BRAZERO) partially evaluated: bra == OP_BRAZERO no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5445 | { | - |
5446 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
5447 | sljit_set_label(sljit_emit_jump(compiler, (22)), (((bracket_fallback*)current)->zerohotpath)); | - |
5448 | sljit_set_label((brazero), sljit_emit_label(compiler)); | - |
5449 | } | 0 |
5450 | } | - |
5451 | | - |
5452 | static void compile_bracketpos_fallbackpath(compiler_common *common, struct fallback_common *current) | - |
5453 | { | - |
5454 | struct sljit_compiler *compiler = common->compiler; | - |
5455 | int offset; | - |
5456 | struct sljit_jump *jump; | - |
5457 | | - |
5458 | if (((bracketpos_fallback*)current)->framesize < 0) never evaluated: ((bracketpos_fallback*)current)->framesize < 0 | 0 |
5459 | { | - |
5460 | if (*current->cc == OP_CBRAPOS || *current->cc == OP_SCBRAPOS) never evaluated: *current->cc == OP_CBRAPOS never evaluated: *current->cc == OP_SCBRAPOS | 0 |
5461 | { | - |
5462 | offset = (current->cc[1 + 1]) << 1; | - |
5463 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
5464 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (2))), (((-(1) - 1) * (int)sizeof(sljit_w)))); | - |
5465 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset) * sizeof(sljit_w))), (1), (0)); | - |
5466 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (offset + 1) * sizeof(sljit_w))), (3), (0)); | - |
5467 | } | 0 |
5468 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
5469 | free_stack(common, ((bracketpos_fallback*)current)->stacksize); | - |
5470 | return; | 0 |
5471 | } | - |
5472 | | - |
5473 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), (((bracketpos_fallback*)current)->localptr)); | - |
5474 | add_jump(compiler, &common->revertframes, sljit_emit_jump(compiler, (23))); | - |
5475 | | - |
5476 | if (current->topfallbacks) never evaluated: current->topfallbacks | 0 |
5477 | { | - |
5478 | jump = sljit_emit_jump(compiler, (22)); | - |
5479 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
5480 | | - |
5481 | free_stack(common, ((bracketpos_fallback*)current)->stacksize); | - |
5482 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
5483 | } | 0 |
5484 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((bracketpos_fallback*)current)->localptr), ((0x100 | (2))), (((bracketpos_fallback*)current)->framesize * sizeof(sljit_w))); | - |
5485 | } | 0 |
5486 | | - |
5487 | static void compile_braminzero_fallbackpath(compiler_common *common, struct fallback_common *current) | - |
5488 | { | - |
5489 | assert_fallback fallback; | - |
5490 | | - |
5491 | current->top = ((void *)0); | - |
5492 | current->topfallbacks = ((void *)0); | - |
5493 | current->nextfallbacks = ((void *)0); | - |
5494 | if (current->cc[1] > OP_ASSERTBACK_NOT) never evaluated: current->cc[1] > OP_ASSERTBACK_NOT | 0 |
5495 | { | - |
5496 | | - |
5497 | compile_bracket_hotpath(common, current->cc, current); | - |
5498 | compile_bracket_fallbackpath(common, current->top); | - |
5499 | } | 0 |
5500 | else | - |
5501 | { | - |
5502 | memset(&fallback, 0, sizeof(fallback)); | - |
5503 | fallback.common.cc = current->cc; | - |
5504 | fallback.hotpath = ((braminzero_fallback*)current)->hotpath; | - |
5505 | | - |
5506 | compile_assert_hotpath(common, current->cc, &fallback, 0); | - |
5507 | } | 0 |
5508 | do { } while (0); | 0 |
5509 | } | 0 |
5510 | | - |
5511 | static void compile_fallbackpath(compiler_common *common, struct fallback_common *current) | - |
5512 | { | - |
5513 | struct sljit_compiler *compiler = common->compiler; | - |
5514 | | - |
5515 | while (current) evaluated: current yes Evaluation Count:23 | yes Evaluation Count:31 |
| 23-31 |
5516 | { | - |
5517 | if (current->nextfallbacks != ((void *)0)) partially evaluated: current->nextfallbacks != ((void *)0) no Evaluation Count:0 | yes Evaluation Count:23 |
| 0-23 |
5518 | set_jumps(current->nextfallbacks, sljit_emit_label(compiler)); never executed: set_jumps(current->nextfallbacks, sljit_emit_label(compiler)); | 0 |
5519 | switch(*current->cc) | - |
5520 | { | - |
5521 | case OP_SET_SOM: | - |
5522 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | - |
5523 | free_stack(common, 1); | - |
5524 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w))), (1), (0)); | - |
5525 | break; | 0 |
5526 | | - |
5527 | case OP_STAR: | - |
5528 | case OP_MINSTAR: | - |
5529 | case OP_PLUS: | - |
5530 | case OP_MINPLUS: | - |
5531 | case OP_QUERY: | - |
5532 | case OP_MINQUERY: | - |
5533 | case OP_UPTO: | - |
5534 | case OP_MINUPTO: | - |
5535 | case OP_EXACT: | - |
5536 | case OP_POSSTAR: | - |
5537 | case OP_POSPLUS: | - |
5538 | case OP_POSQUERY: | - |
5539 | case OP_POSUPTO: | - |
5540 | case OP_STARI: | - |
5541 | case OP_MINSTARI: | - |
5542 | case OP_PLUSI: | - |
5543 | case OP_MINPLUSI: | - |
5544 | case OP_QUERYI: | - |
5545 | case OP_MINQUERYI: | - |
5546 | case OP_UPTOI: | - |
5547 | case OP_MINUPTOI: | - |
5548 | case OP_EXACTI: | - |
5549 | case OP_POSSTARI: | - |
5550 | case OP_POSPLUSI: | - |
5551 | case OP_POSQUERYI: | - |
5552 | case OP_POSUPTOI: | - |
5553 | case OP_NOTSTAR: | - |
5554 | case OP_NOTMINSTAR: | - |
5555 | case OP_NOTPLUS: | - |
5556 | case OP_NOTMINPLUS: | - |
5557 | case OP_NOTQUERY: | - |
5558 | case OP_NOTMINQUERY: | - |
5559 | case OP_NOTUPTO: | - |
5560 | case OP_NOTMINUPTO: | - |
5561 | case OP_NOTEXACT: | - |
5562 | case OP_NOTPOSSTAR: | - |
5563 | case OP_NOTPOSPLUS: | - |
5564 | case OP_NOTPOSQUERY: | - |
5565 | case OP_NOTPOSUPTO: | - |
5566 | case OP_NOTSTARI: | - |
5567 | case OP_NOTMINSTARI: | - |
5568 | case OP_NOTPLUSI: | - |
5569 | case OP_NOTMINPLUSI: | - |
5570 | case OP_NOTQUERYI: | - |
5571 | case OP_NOTMINQUERYI: | - |
5572 | case OP_NOTUPTOI: | - |
5573 | case OP_NOTMINUPTOI: | - |
5574 | case OP_NOTEXACTI: | - |
5575 | case OP_NOTPOSSTARI: | - |
5576 | case OP_NOTPOSPLUSI: | - |
5577 | case OP_NOTPOSQUERYI: | - |
5578 | case OP_NOTPOSUPTOI: | - |
5579 | case OP_TYPESTAR: | - |
5580 | case OP_TYPEMINSTAR: | - |
5581 | case OP_TYPEPLUS: | - |
5582 | case OP_TYPEMINPLUS: | - |
5583 | case OP_TYPEQUERY: | - |
5584 | case OP_TYPEMINQUERY: | - |
5585 | case OP_TYPEUPTO: | - |
5586 | case OP_TYPEMINUPTO: | - |
5587 | case OP_TYPEEXACT: | - |
5588 | case OP_TYPEPOSSTAR: | - |
5589 | case OP_TYPEPOSPLUS: | - |
5590 | case OP_TYPEPOSQUERY: | - |
5591 | case OP_TYPEPOSUPTO: | - |
5592 | case OP_CLASS: | - |
5593 | case OP_NCLASS: | - |
5594 | | - |
5595 | case OP_XCLASS: | - |
5596 | | - |
5597 | compile_iterator_fallbackpath(common, current); | - |
5598 | break; executed: break; Execution Count:8 | 8 |
5599 | | - |
5600 | case OP_REF: | - |
5601 | case OP_REFI: | - |
5602 | compile_ref_iterator_fallbackpath(common, current); | - |
5603 | break; | 0 |
5604 | | - |
5605 | case OP_RECURSE: | - |
5606 | compile_recurse_fallbackpath(common, current); | - |
5607 | break; | 0 |
5608 | | - |
5609 | case OP_ASSERT: | - |
5610 | case OP_ASSERT_NOT: | - |
5611 | case OP_ASSERTBACK: | - |
5612 | case OP_ASSERTBACK_NOT: | - |
5613 | compile_assert_fallbackpath(common, current); | - |
5614 | break; | 0 |
5615 | | - |
5616 | case OP_ONCE: | - |
5617 | case OP_ONCE_NC: | - |
5618 | case OP_BRA: | - |
5619 | case OP_CBRA: | - |
5620 | case OP_COND: | - |
5621 | case OP_SBRA: | - |
5622 | case OP_SCBRA: | - |
5623 | case OP_SCOND: | - |
5624 | compile_bracket_fallbackpath(common, current); | - |
5625 | break; executed: break; Execution Count:15 | 15 |
5626 | | - |
5627 | case OP_BRAZERO: | - |
5628 | if (current->cc[1] > OP_ASSERTBACK_NOT) never evaluated: current->cc[1] > OP_ASSERTBACK_NOT | 0 |
5629 | compile_bracket_fallbackpath(common, current); never executed: compile_bracket_fallbackpath(common, current); | 0 |
5630 | else | - |
5631 | compile_assert_fallbackpath(common, current); never executed: compile_assert_fallbackpath(common, current); | 0 |
5632 | break; | 0 |
5633 | | - |
5634 | case OP_BRAPOS: | - |
5635 | case OP_CBRAPOS: | - |
5636 | case OP_SBRAPOS: | - |
5637 | case OP_SCBRAPOS: | - |
5638 | case OP_BRAPOSZERO: | - |
5639 | compile_bracketpos_fallbackpath(common, current); | - |
5640 | break; | 0 |
5641 | | - |
5642 | case OP_BRAMINZERO: | - |
5643 | compile_braminzero_fallbackpath(common, current); | - |
5644 | break; | 0 |
5645 | | - |
5646 | case OP_FAIL: | - |
5647 | case OP_ACCEPT: | - |
5648 | case OP_ASSERT_ACCEPT: | - |
5649 | set_jumps(current->topfallbacks, sljit_emit_label(compiler)); | - |
5650 | break; | 0 |
5651 | | - |
5652 | default: | - |
5653 | do { } while (0); | 0 |
5654 | break; | 0 |
5655 | } | - |
5656 | current = current->prev; | - |
5657 | } executed: } Execution Count:23 | 23 |
5658 | } executed: } Execution Count:31 | 31 |
5659 | | - |
5660 | static __inline void compile_recurse(compiler_common *common) | - |
5661 | { | - |
5662 | struct sljit_compiler *compiler = common->compiler; | - |
5663 | pcre_uchar *cc = common->start + common->currententry->start; | - |
5664 | pcre_uchar *ccbegin = cc + 1 + 1 + (*cc == OP_BRA ? 0 : 1); never evaluated: *cc == OP_BRA | 0 |
5665 | pcre_uchar *ccend = bracketend(cc); | - |
5666 | int localsize = get_localsize(common, ccbegin, ccend); | - |
5667 | int framesize = get_framesize(common, cc, 1); | - |
5668 | int alternativesize; | - |
5669 | BOOL needsframe; | - |
5670 | fallback_common altfallback; | - |
5671 | struct sljit_jump *jump; | - |
5672 | | - |
5673 | do { } while (0); | 0 |
5674 | needsframe = framesize >= 0; | - |
5675 | if (!needsframe) never evaluated: !needsframe | 0 |
5676 | framesize = 0; never executed: framesize = 0; | 0 |
5677 | alternativesize = *(cc + (cc[1])) == OP_ALT ? 1 : 0; never evaluated: *(cc + (cc[1])) == OP_ALT | 0 |
5678 | | - |
5679 | do { } while (0); | 0 |
5680 | common->currententry->entry = sljit_emit_label(compiler); | - |
5681 | set_jumps(common->currententry->calls, common->currententry->entry); | - |
5682 | | - |
5683 | sljit_emit_fast_enter(compiler, 3, 0, 1, 5, 5, common->localsize); | - |
5684 | allocate_stack(common, localsize + framesize + alternativesize); | - |
5685 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(localsize + framesize + alternativesize - 1) - 1) * (int)sizeof(sljit_w))), (3), (0)); | - |
5686 | copy_locals(common, ccbegin, ccend, 1, localsize + framesize + alternativesize, framesize + alternativesize); | - |
5687 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((4 * sizeof(sljit_w))), (2), (0)); | - |
5688 | if (needsframe) never evaluated: needsframe | 0 |
5689 | init_frame(common, cc, framesize + alternativesize - 1, alternativesize, 0); never executed: init_frame(common, cc, framesize + alternativesize - 1, alternativesize, 0); | 0 |
5690 | | - |
5691 | if (alternativesize > 0) never evaluated: alternativesize > 0 | 0 |
5692 | sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w))), (6), (0)); | 0 |
5693 | | - |
5694 | memset(&altfallback, 0, sizeof(fallback_common)); | - |
5695 | common->acceptlabel = ((void *)0); | - |
5696 | common->accept = ((void *)0); | - |
5697 | altfallback.cc = ccbegin; | - |
5698 | cc += (cc[1]); | - |
5699 | while (1) | 0 |
5700 | { | - |
5701 | altfallback.top = ((void *)0); | - |
5702 | altfallback.topfallbacks = ((void *)0); | - |
5703 | | - |
5704 | if (altfallback.cc != ccbegin) never evaluated: altfallback.cc != ccbegin | 0 |
5705 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); never executed: sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (2))), (((-(0) - 1) * (int)sizeof(sljit_w)))); | 0 |
5706 | | - |
5707 | compile_hotpath(common, altfallback.cc, cc, &altfallback); | - |
5708 | if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) | 0 |
5709 | return; | 0 |
5710 | | - |
5711 | add_jump(compiler, &common->accept, sljit_emit_jump(compiler, (22))); | - |
5712 | | - |
5713 | compile_fallbackpath(common, altfallback.top); | - |
5714 | if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) | 0 |
5715 | return; | 0 |
5716 | set_jumps(altfallback.topfallbacks, sljit_emit_label(compiler)); | - |
5717 | | - |
5718 | if (*cc != OP_ALT) never evaluated: *cc != OP_ALT | 0 |
5719 | break; | 0 |
5720 | | - |
5721 | altfallback.cc = cc + 1 + 1; | - |
5722 | cc += (cc[1]); | - |
5723 | } | 0 |
5724 | | - |
5725 | sljit_emit_op1(compiler, (6), (5), (0), (0x200), (0)); | - |
5726 | jump = sljit_emit_jump(compiler, (22)); | - |
5727 | | - |
5728 | set_jumps(common->accept, sljit_emit_label(compiler)); | - |
5729 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (11))), ((4 * sizeof(sljit_w)))); | - |
5730 | if (needsframe) never evaluated: needsframe | 0 |
5731 | { | - |
5732 | sljit_emit_op1(compiler, (6), (5), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w)))); | - |
5733 | sljit_emit_op2(compiler, (25), (2), (0), (2), (0), (0x200), ((framesize + alternativesize) * sizeof(sljit_w))); | - |
5734 | add_jump(compiler, &common->revertframes, sljit_emit_jump(compiler, (23))); | - |
5735 | sljit_emit_op2(compiler, (23), (2), (0), (2), (0), (0x200), ((framesize + alternativesize) * sizeof(sljit_w))); | - |
5736 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w))), (5), (0)); | - |
5737 | } | 0 |
5738 | sljit_emit_op1(compiler, (6), (5), (0), (0x200), (1)); | - |
5739 | | - |
5740 | sljit_set_label((jump), sljit_emit_label(compiler)); | - |
5741 | copy_locals(common, ccbegin, ccend, 0, localsize + framesize + alternativesize, framesize + alternativesize); | - |
5742 | free_stack(common, localsize + framesize + alternativesize); | - |
5743 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (2))), (sizeof(sljit_w))); | - |
5744 | sljit_emit_op1(compiler, (6), (1), (0), (5), (0)); | - |
5745 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((4 * sizeof(sljit_w))), (3), (0)); | - |
5746 | sljit_emit_fast_return(compiler, (0x100 | (2)), 0); | - |
5747 | } | 0 |
5748 | | - |
5749 | | - |
5750 | | - |
5751 | | - |
5752 | void | - |
5753 | _pcre16_jit_compile(const real_pcre16 *re, pcre16_extra *extra) | - |
5754 | { | - |
5755 | struct sljit_compiler *compiler; | - |
5756 | fallback_common rootfallback; | - |
5757 | compiler_common common_data; | - |
5758 | compiler_common *common = &common_data; | - |
5759 | const pcre_uint8 *tables = re->tables; | - |
5760 | pcre_study_data *study; | - |
5761 | pcre_uchar *ccend; | - |
5762 | executable_function *function; | - |
5763 | void *executable_func; | - |
5764 | sljit_uw executable_size; | - |
5765 | struct sljit_label *leave; | - |
5766 | struct sljit_label *mainloop = ((void *)0); | - |
5767 | struct sljit_label *empty_match_found; | - |
5768 | struct sljit_label *empty_match_fallback; | - |
5769 | struct sljit_jump *alloc_error; | - |
5770 | struct sljit_jump *reqbyte_notfound = ((void *)0); | - |
5771 | struct sljit_jump *empty_match; | - |
5772 | | - |
5773 | do { } while (0); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:15 |
executed: } Execution Count:15 | 0-15 |
5774 | study = extra->study_data; | - |
5775 | | - |
5776 | if (!tables) partially evaluated: !tables yes Evaluation Count:15 | no Evaluation Count:0 |
| 0-15 |
5777 | tables = _pcre16_default_tables; executed: tables = _pcre16_default_tables; Execution Count:15 | 15 |
5778 | | - |
5779 | memset(&rootfallback, 0, sizeof(fallback_common)); | - |
5780 | rootfallback.cc = (pcre_uchar *)re + re->name_table_offset + re->name_count * re->name_entry_size; | - |
5781 | | - |
5782 | common->compiler = ((void *)0); | - |
5783 | common->start = rootfallback.cc; | - |
5784 | common->cbraptr = (8 * sizeof(sljit_w)) + (re->top_bracket + 1) * 2 * sizeof(sljit_w); | - |
5785 | common->fcc = tables + 256; | - |
5786 | common->lcc = (sljit_w)(tables + 0); | - |
5787 | common->nltype = 0; | - |
5788 | switch(re->options & (0x00100000|0x00200000|0x00400000| 0x00500000)) | - |
5789 | { | - |
5790 | case 0: | - |
5791 | | - |
5792 | switch (10) | - |
5793 | { | - |
5794 | case -1: common->newline = ('\015' << 8) | '\012'; common->nltype = 1; break; | 0 |
5795 | case -2: common->newline = ('\015' << 8) | '\012'; common->nltype = 2; break; | 0 |
5796 | default: common->newline = 10; break; executed: break; Execution Count:12 | 12 |
5797 | } | - |
5798 | break; executed: break; Execution Count:12 | 12 |
5799 | case 0x00100000: common->newline = '\015'; break; | 0 |
5800 | case 0x00200000: common->newline = '\012'; break; | 0 |
5801 | case 0x00100000 + | - |
5802 | 0x00200000: common->newline = ('\015' << 8) | '\012'; break; executed: break; Execution Count:2 | 2 |
5803 | case 0x00400000: common->newline = ('\015' << 8) | '\012'; common->nltype = 1; break; | 0 |
5804 | case 0x00500000: common->newline = ('\015' << 8) | '\012'; common->nltype = 2; break; executed: break; Execution Count:1 | 1 |
5805 | default: return; | 0 |
5806 | } | - |
5807 | if ((re->options & 0x00800000) != 0) partially evaluated: (re->options & 0x00800000) != 0 no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5808 | common->bsr_nltype = 2; never executed: common->bsr_nltype = 2; | 0 |
5809 | else if ((re->options & 0x01000000) != 0) partially evaluated: (re->options & 0x01000000) != 0 no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5810 | common->bsr_nltype = 1; never executed: common->bsr_nltype = 1; | 0 |
5811 | else | - |
5812 | { | - |
5813 | | - |
5814 | | - |
5815 | | - |
5816 | common->bsr_nltype = 1; | - |
5817 | | - |
5818 | } executed: } Execution Count:15 | 15 |
5819 | common->endonly = (re->options & 0x00000020) != 0; | - |
5820 | common->ctypes = (sljit_w)(tables + (512 + 320)); | - |
5821 | common->name_table = (sljit_w)((pcre_uchar *)re + re->name_table_offset); | - |
5822 | common->name_count = re->name_count; | - |
5823 | common->name_entry_size = re->name_entry_size; | - |
5824 | common->acceptlabel = ((void *)0); | - |
5825 | common->stubs = ((void *)0); | - |
5826 | common->entries = ((void *)0); | - |
5827 | common->currententry = ((void *)0); | - |
5828 | common->accept = ((void *)0); | - |
5829 | common->calllimit = ((void *)0); | - |
5830 | common->stackalloc = ((void *)0); | - |
5831 | common->revertframes = ((void *)0); | - |
5832 | common->wordboundary = ((void *)0); | - |
5833 | common->anynewline = ((void *)0); | - |
5834 | common->hspace = ((void *)0); | - |
5835 | common->vspace = ((void *)0); | - |
5836 | common->casefulcmp = ((void *)0); | - |
5837 | common->caselesscmp = ((void *)0); | - |
5838 | common->jscript_compat = (re->options & 0x02000000) != 0; | - |
5839 | | - |
5840 | | - |
5841 | common->utf = (re->options & 0x00000800) != 0; | - |
5842 | | - |
5843 | common->use_ucp = (re->options & 0x20000000) != 0; | - |
5844 | | - |
5845 | common->utfreadchar = ((void *)0); | - |
5846 | | - |
5847 | | - |
5848 | | - |
5849 | | - |
5850 | | - |
5851 | common->getucd = ((void *)0); | - |
5852 | | - |
5853 | ccend = bracketend(rootfallback.cc); | - |
5854 | do { } while (0); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:15 |
executed: } Execution Count:15 | 0-15 |
5855 | common->localsize = get_localspace(common, rootfallback.cc, ccend); | - |
5856 | if (common->localsize < 0) partially evaluated: common->localsize < 0 no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5857 | return; | 0 |
5858 | common->localsize += common->cbraptr + (re->top_bracket + 1) * sizeof(sljit_w); | - |
5859 | if (common->localsize > 65536) partially evaluated: common->localsize > 65536 no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5860 | return; | 0 |
5861 | common->localptrs = (int*)(pcre16_malloc)((ccend - rootfallback.cc) * sizeof(int)); | - |
5862 | if (!common->localptrs) partially evaluated: !common->localptrs no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5863 | return; | 0 |
5864 | memset(common->localptrs, 0, (ccend - rootfallback.cc) * sizeof(int)); | - |
5865 | set_localptrs(common, common->cbraptr + (re->top_bracket + 1) * sizeof(sljit_w), ccend); | - |
5866 | | - |
5867 | compiler = sljit_create_compiler(); | - |
5868 | if (!compiler) partially evaluated: !compiler no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5869 | { | - |
5870 | (pcre16_free)(common->localptrs); | - |
5871 | return; | 0 |
5872 | } | - |
5873 | common->compiler = compiler; | - |
5874 | | - |
5875 | | - |
5876 | sljit_emit_enter(compiler, 1, 5, 5, common->localsize); | - |
5877 | | - |
5878 | | - |
5879 | reset_ovector(common, (re->top_bracket + 1) * 2); | - |
5880 | if ((re->flags & 0x0040) != 0) partially evaluated: (re->flags & 0x0040) != 0 no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5881 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((6 * sizeof(sljit_w))), (1), (0)); never executed: sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((6 * sizeof(sljit_w))), (1), (0)); | 0 |
5882 | | - |
5883 | sljit_emit_op1(compiler, (6), (9), (0), (6), (0)); | - |
5884 | sljit_emit_op1(compiler, (6), (1), (0), (6), (0)); | - |
5885 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->str) - 0x10))); | - |
5886 | sljit_emit_op1(compiler, (6), (7), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->end) - 0x10))); | - |
5887 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->stack) - 0x10))); | - |
5888 | sljit_emit_op1(compiler, (12), (1), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->calllimit) - 0x10))); | - |
5889 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (3))), (((sljit_w)(&((struct sljit_stack*)0x10)->base) - 0x10))); | - |
5890 | sljit_emit_op1(compiler, (6), (8), (0), ((0x100 | (3))), (((sljit_w)(&((struct sljit_stack*)0x10)->limit) - 0x10))); | - |
5891 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((5 * sizeof(sljit_w))), (1), (0)); | - |
5892 | | - |
5893 | | - |
5894 | if ((re->options & 0x00000010) == 0) partially evaluated: (re->options & 0x00000010) == 0 yes Evaluation Count:15 | no Evaluation Count:0 |
| 0-15 |
5895 | { | - |
5896 | mainloop = mainloop_entry(common, (re->flags & 0x0800) != 0, (re->options & 0x00040000) != 0); | - |
5897 | | - |
5898 | if ((re->flags & 0x0010) != 0) evaluated: (re->flags & 0x0010) != 0 yes Evaluation Count:6 | yes Evaluation Count:9 |
| 6-9 |
5899 | fast_forward_first_char(common, re->first_char, (re->flags & 0x0020) != 0, (re->options & 0x00040000) != 0); executed: fast_forward_first_char(common, re->first_char, (re->flags & 0x0020) != 0, (re->options & 0x00040000) != 0); Execution Count:6 | 6 |
5900 | else if ((re->flags & 0x0100) != 0) evaluated: (re->flags & 0x0100) != 0 yes Evaluation Count:5 | yes Evaluation Count:4 |
| 4-5 |
5901 | fast_forward_newline(common, (re->options & 0x00040000) != 0); executed: fast_forward_newline(common, (re->options & 0x00040000) != 0); Execution Count:5 | 5 |
5902 | else if ((re->flags & 0x0100) == 0 && study != ((void *)0) && (study->flags & 0x0001) != 0) partially evaluated: (re->flags & 0x0100) == 0 yes Evaluation Count:4 | no Evaluation Count:0 |
partially evaluated: study != ((void *)0) yes Evaluation Count:4 | no Evaluation Count:0 |
partially evaluated: (study->flags & 0x0001) != 0 no Evaluation Count:0 | yes Evaluation Count:4 |
| 0-4 |
5903 | fast_forward_start_bits(common, (sljit_uw)study->start_bits, (re->options & 0x00040000) != 0); never executed: fast_forward_start_bits(common, (sljit_uw)study->start_bits, (re->options & 0x00040000) != 0); | 0 |
5904 | } | - |
5905 | if ((re->flags & 0x0040) != 0) partially evaluated: (re->flags & 0x0040) != 0 no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5906 | reqbyte_notfound = search_requested_char(common, re->req_char, (re->flags & 0x0080) != 0, (re->flags & 0x0010) != 0); never executed: reqbyte_notfound = search_requested_char(common, re->req_char, (re->flags & 0x0080) != 0, (re->flags & 0x0010) != 0); | 0 |
5907 | | - |
5908 | | - |
5909 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w))), (6), (0)); | - |
5910 | | - |
5911 | sljit_emit_op1(compiler, (6), (10), (0), ((0x100 | (11))), ((5 * sizeof(sljit_w)))); | - |
5912 | | - |
5913 | compile_hotpath(common, rootfallback.cc, ccend, &rootfallback); | - |
5914 | if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) partially evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5915 | { | - |
5916 | sljit_free_compiler(compiler); | - |
5917 | (pcre16_free)(common->localptrs); | - |
5918 | return; | 0 |
5919 | } | - |
5920 | | - |
5921 | empty_match = sljit_emit_cmp(compiler, (0), (6), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w)))); | - |
5922 | empty_match_found = sljit_emit_label(compiler); | - |
5923 | | - |
5924 | common->acceptlabel = sljit_emit_label(compiler); | - |
5925 | if (common->accept != ((void *)0)) partially evaluated: common->accept != ((void *)0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5926 | set_jumps(common->accept, common->acceptlabel); never executed: set_jumps(common->accept, common->acceptlabel); | 0 |
5927 | | - |
5928 | | - |
5929 | copy_ovector(common, re->top_bracket + 1); | - |
5930 | leave = sljit_emit_label(compiler); | - |
5931 | sljit_emit_return(compiler, 6, 1, 0); | - |
5932 | | - |
5933 | empty_match_fallback = sljit_emit_label(compiler); | - |
5934 | compile_fallbackpath(common, rootfallback.top); | - |
5935 | if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) partially evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5936 | { | - |
5937 | sljit_free_compiler(compiler); | - |
5938 | (pcre16_free)(common->localptrs); | - |
5939 | return; | 0 |
5940 | } | - |
5941 | | - |
5942 | do { } while (0); partially evaluated: 0 no Evaluation Count:0 | yes Evaluation Count:15 |
executed: } Execution Count:15 | 0-15 |
5943 | | - |
5944 | | - |
5945 | sljit_emit_op1(compiler, (6), (6), (0), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w)))); | - |
5946 | | - |
5947 | if ((re->options & 0x00000010) == 0) partially evaluated: (re->options & 0x00000010) == 0 yes Evaluation Count:15 | no Evaluation Count:0 |
| 0-15 |
5948 | { | - |
5949 | if ((re->options & 0x00040000) == 0) partially evaluated: (re->options & 0x00040000) == 0 yes Evaluation Count:15 | no Evaluation Count:0 |
| 0-15 |
5950 | { | - |
5951 | if (study != ((void *)0) && study->minlength > 1) partially evaluated: study != ((void *)0) yes Evaluation Count:15 | no Evaluation Count:0 |
partially evaluated: study->minlength > 1 no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5952 | { | - |
5953 | sljit_emit_op2(compiler, (23), (1), (0), (6), (0), (0x200), (((study->minlength) << 1))); | - |
5954 | sljit_set_label(sljit_emit_cmp(compiler, (5), (1), (0), (7), (0)), (mainloop)); | - |
5955 | } | 0 |
5956 | else | - |
5957 | sljit_set_label(sljit_emit_cmp(compiler, (2), (6), (0), (7), (0)), (mainloop)); executed: sljit_set_label(sljit_emit_cmp(compiler, (2), (6), (0), (7), (0)), (mainloop)); Execution Count:15 | 15 |
5958 | } | - |
5959 | else | - |
5960 | { | - |
5961 | if (study != ((void *)0) && study->minlength > 1) never evaluated: study != ((void *)0) never evaluated: study->minlength > 1 | 0 |
5962 | { | - |
5963 | sljit_emit_op2(compiler, (23), (1), (0), (6), (0), (0x200), (((study->minlength) << 1))); | - |
5964 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (1), (0), (7), (0)); | - |
5965 | sljit_emit_cond_value(compiler, (6), (3), (0), (4)); | - |
5966 | sljit_emit_op2(compiler, (25 | 0x0800), (0), (0), (6), (0), ((0x100 | (11))), ((7 * sizeof(sljit_w)))); | - |
5967 | sljit_emit_cond_value(compiler, (29 | 0x0200), (3), (0), (3)); | - |
5968 | sljit_set_label(sljit_emit_jump(compiler, (0)), (mainloop)); | - |
5969 | } | 0 |
5970 | else | - |
5971 | sljit_set_label(sljit_emit_cmp(compiler, (2), (6), (0), ((0x100 | (11))), ((7 * sizeof(sljit_w)))), (mainloop)); never executed: sljit_set_label(sljit_emit_cmp(compiler, (2), (6), (0), ((0x100 | (11))), ((7 * sizeof(sljit_w)))), (mainloop)); | 0 |
5972 | } | - |
5973 | } | - |
5974 | | - |
5975 | if (reqbyte_notfound != ((void *)0)) partially evaluated: reqbyte_notfound != ((void *)0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5976 | sljit_set_label((reqbyte_notfound), sljit_emit_label(compiler)); never executed: sljit_set_label((reqbyte_notfound), sljit_emit_label(compiler)); | 0 |
5977 | | - |
5978 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (0) * sizeof(sljit_w))), ((0x100 | (11))), (((8 * sizeof(sljit_w)) + (1) * sizeof(sljit_w)))); | - |
5979 | sljit_emit_op1(compiler, (6), (1), (0), (0x200), ((-1))); | - |
5980 | sljit_set_label(sljit_emit_jump(compiler, (22)), (leave)); | - |
5981 | | - |
5982 | flush_stubs(common); | - |
5983 | | - |
5984 | sljit_set_label((empty_match), sljit_emit_label(compiler)); | - |
5985 | sljit_emit_op1(compiler, (6), (1), (0), (9), (0)); | - |
5986 | sljit_emit_op1(compiler, (7), (3), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->notempty) - 0x10))); | - |
5987 | sljit_set_label(sljit_emit_cmp(compiler, (1), (3), (0), (0x200), (0)), (empty_match_fallback)); | - |
5988 | sljit_emit_op1(compiler, (7), (3), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->notempty_atstart) - 0x10))); | - |
5989 | sljit_set_label(sljit_emit_cmp(compiler, (0), (3), (0), (0x200), (0)), (empty_match_found)); | - |
5990 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->str) - 0x10))); | - |
5991 | sljit_set_label(sljit_emit_cmp(compiler, (1), (3), (0), (6), (0)), (empty_match_found)); | - |
5992 | sljit_set_label(sljit_emit_jump(compiler, (22)), (empty_match_fallback)); | - |
5993 | | - |
5994 | common->currententry = common->entries; | - |
5995 | while (common->currententry != ((void *)0)) partially evaluated: common->currententry != ((void *)0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
5996 | { | - |
5997 | | - |
5998 | compile_recurse(common); | - |
5999 | if (__builtin_expect((sljit_get_compiler_error(compiler)), 0)) never evaluated: __builtin_expect((sljit_get_compiler_error(compiler)), 0) | 0 |
6000 | { | - |
6001 | sljit_free_compiler(compiler); | - |
6002 | (pcre16_free)(common->localptrs); | - |
6003 | return; | 0 |
6004 | } | - |
6005 | flush_stubs(common); | - |
6006 | common->currententry = common->currententry->next; | - |
6007 | } | 0 |
6008 | | - |
6009 | | - |
6010 | | - |
6011 | set_jumps(common->stackalloc, sljit_emit_label(compiler)); | - |
6012 | | - |
6013 | sljit_emit_fast_enter(compiler, (0x100 | (11)), (0 * sizeof(sljit_w)), 1, 5, 5, common->localsize); | - |
6014 | sljit_emit_op1(compiler, (6), ((0x100 | (11))), ((1 * sizeof(sljit_w))), (3), (0)); | - |
6015 | sljit_emit_op1(compiler, (6), (1), (0), (9), (0)); | - |
6016 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->stack) - 0x10))); | - |
6017 | sljit_emit_op1(compiler, (6), ((0x100 | (1))), (((sljit_w)(&((struct sljit_stack*)0x10)->top) - 0x10)), (2), (0)); | - |
6018 | sljit_emit_op2(compiler, (23), (3), (0), ((0x100 | (1))), (((sljit_w)(&((struct sljit_stack*)0x10)->limit) - 0x10)), (0x200), (8192)); | - |
6019 | | - |
6020 | sljit_emit_ijump(compiler, 26, 0x200, ((sljit_w)sljit_stack_resize)); | - |
6021 | alloc_error = sljit_emit_cmp(compiler, (1), (1), (0), (0x200), (0)); | - |
6022 | sljit_emit_op1(compiler, (6), (1), (0), (9), (0)); | - |
6023 | sljit_emit_op1(compiler, (6), (1), (0), ((0x100 | (1))), (((sljit_w)(&((jit_arguments*)0x10)->stack) - 0x10))); | - |
6024 | sljit_emit_op1(compiler, (6), (2), (0), ((0x100 | (1))), (((sljit_w)(&((struct sljit_stack*)0x10)->top) - 0x10))); | - |
6025 | sljit_emit_op1(compiler, (6), (8), (0), ((0x100 | (1))), (((sljit_w)(&((struct sljit_stack*)0x10)->limit) - 0x10))); | - |
6026 | sljit_emit_op1(compiler, (6), (3), (0), ((0x100 | (11))), ((1 * sizeof(sljit_w)))); | - |
6027 | sljit_emit_fast_return(compiler, (0x100 | (11)), (0 * sizeof(sljit_w))); | - |
6028 | | - |
6029 | | - |
6030 | sljit_set_label((alloc_error), sljit_emit_label(compiler)); | - |
6031 | | - |
6032 | sljit_emit_op1(compiler, (6), (1), (0), (0x200), ((-27))); | - |
6033 | sljit_set_label(sljit_emit_jump(compiler, (22)), (leave)); | - |
6034 | | - |
6035 | | - |
6036 | set_jumps(common->calllimit, sljit_emit_label(compiler)); | - |
6037 | sljit_emit_op1(compiler, (6), (1), (0), (0x200), ((-8))); | - |
6038 | sljit_set_label(sljit_emit_jump(compiler, (22)), (leave)); | - |
6039 | | - |
6040 | if (common->revertframes != ((void *)0)) partially evaluated: common->revertframes != ((void *)0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
6041 | { | - |
6042 | set_jumps(common->revertframes, sljit_emit_label(compiler)); | - |
6043 | do_revertframes(common); | - |
6044 | } | 0 |
6045 | if (common->wordboundary != ((void *)0)) evaluated: common->wordboundary != ((void *)0) yes Evaluation Count:1 | yes Evaluation Count:14 |
| 1-14 |
6046 | { | - |
6047 | set_jumps(common->wordboundary, sljit_emit_label(compiler)); | - |
6048 | check_wordboundary(common); | - |
6049 | } executed: } Execution Count:1 | 1 |
6050 | if (common->anynewline != ((void *)0)) partially evaluated: common->anynewline != ((void *)0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
6051 | { | - |
6052 | set_jumps(common->anynewline, sljit_emit_label(compiler)); | - |
6053 | check_anynewline(common); | - |
6054 | } | 0 |
6055 | if (common->hspace != ((void *)0)) partially evaluated: common->hspace != ((void *)0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
6056 | { | - |
6057 | set_jumps(common->hspace, sljit_emit_label(compiler)); | - |
6058 | check_hspace(common); | - |
6059 | } | 0 |
6060 | if (common->vspace != ((void *)0)) partially evaluated: common->vspace != ((void *)0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
6061 | { | - |
6062 | set_jumps(common->vspace, sljit_emit_label(compiler)); | - |
6063 | check_vspace(common); | - |
6064 | } | 0 |
6065 | if (common->casefulcmp != ((void *)0)) partially evaluated: common->casefulcmp != ((void *)0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
6066 | { | - |
6067 | set_jumps(common->casefulcmp, sljit_emit_label(compiler)); | - |
6068 | do_casefulcmp(common); | - |
6069 | } | 0 |
6070 | if (common->caselesscmp != ((void *)0)) partially evaluated: common->caselesscmp != ((void *)0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
6071 | { | - |
6072 | set_jumps(common->caselesscmp, sljit_emit_label(compiler)); | - |
6073 | do_caselesscmp(common); | - |
6074 | } | 0 |
6075 | | - |
6076 | if (common->utfreadchar != ((void *)0)) evaluated: common->utfreadchar != ((void *)0) yes Evaluation Count:7 | yes Evaluation Count:8 |
| 7-8 |
6077 | { | - |
6078 | set_jumps(common->utfreadchar, sljit_emit_label(compiler)); | - |
6079 | do_utfreadchar(common); | - |
6080 | } executed: } Execution Count:7 | 7 |
6081 | if (common->getucd != ((void *)0)) partially evaluated: common->getucd != ((void *)0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
6082 | { | - |
6083 | set_jumps(common->getucd, sljit_emit_label(compiler)); | - |
6084 | do_getucd(common); | - |
6085 | } | 0 |
6086 | | - |
6087 | | - |
6088 | (pcre16_free)(common->localptrs); | - |
6089 | executable_func = sljit_generate_code(compiler); | - |
6090 | executable_size = sljit_get_generated_code_size(compiler); | - |
6091 | sljit_free_compiler(compiler); | - |
6092 | if (executable_func == ((void *)0)) partially evaluated: executable_func == ((void *)0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
6093 | return; | 0 |
6094 | | - |
6095 | function = (pcre16_malloc)(sizeof(executable_function)); | - |
6096 | if (function == ((void *)0)) partially evaluated: function == ((void *)0) no Evaluation Count:0 | yes Evaluation Count:15 |
| 0-15 |
6097 | { | - |
6098 | | - |
6099 | | - |
6100 | sljit_free_code(executable_func); | - |
6101 | return; | 0 |
6102 | } | - |
6103 | | - |
6104 | function->executable_func = executable_func; | - |
6105 | function->executable_size = executable_size; | - |
6106 | function->callback = ((void *)0); | - |
6107 | function->userdata = ((void *)0); | - |
6108 | extra->executable_jit = function; | - |
6109 | extra->flags |= 0x0040; | - |
6110 | } executed: } Execution Count:15 | 15 |
6111 | | - |
6112 | static int jit_machine_stack_exec(jit_arguments *arguments, executable_function *function) | - |
6113 | { | - |
6114 | union { | - |
6115 | void* executable_func; | - |
6116 | jit_function call_executable_func; | - |
6117 | } convert_executable_func; | - |
6118 | pcre_uint8 local_area[32768]; | - |
6119 | struct sljit_stack local_stack; | - |
6120 | | - |
6121 | local_stack.top = (sljit_w)&local_area; | - |
6122 | local_stack.base = local_stack.top; | - |
6123 | local_stack.limit = local_stack.base + 32768; | - |
6124 | local_stack.max_limit = local_stack.limit; | - |
6125 | arguments->stack = &local_stack; | - |
6126 | convert_executable_func.executable_func = function->executable_func; | - |
6127 | return convert_executable_func.call_executable_func(arguments); executed: return convert_executable_func.call_executable_func(arguments); Execution Count:172 | 172 |
6128 | } | - |
6129 | | - |
6130 | int | - |
6131 | _pcre16_jit_exec(const real_pcre16 *re, void *executable_func, | - |
6132 | const pcre_uchar *subject, int length, int start_offset, int options, | - |
6133 | int match_limit, int *offsets, int offsetcount) | - |
6134 | { | - |
6135 | executable_function *function = (executable_function*)executable_func; | - |
6136 | union { | - |
6137 | void* executable_func; | - |
6138 | jit_function call_executable_func; | - |
6139 | } convert_executable_func; | - |
6140 | jit_arguments arguments; | - |
6141 | int maxoffsetcount; | - |
6142 | int retval; | - |
6143 | | - |
6144 | | - |
6145 | arguments.stack = ((void *)0); | - |
6146 | arguments.str = subject + start_offset; | - |
6147 | arguments.begin = subject; | - |
6148 | arguments.end = subject + length; | - |
6149 | arguments.calllimit = match_limit; | - |
6150 | arguments.notbol = (options & 0x00000080) != 0; | - |
6151 | arguments.noteol = (options & 0x00000100) != 0; | - |
6152 | arguments.notempty = (options & 0x00000400) != 0; | - |
6153 | arguments.notempty_atstart = (options & 0x10000000) != 0; | - |
6154 | arguments.offsets = offsets; | - |
6155 | | - |
6156 | | - |
6157 | | - |
6158 | | - |
6159 | | - |
6160 | | - |
6161 | | - |
6162 | if (offsetcount != 2) partially evaluated: offsetcount != 2 yes Evaluation Count:172 | no Evaluation Count:0 |
| 0-172 |
6163 | offsetcount = ((offsetcount - (offsetcount % 3)) * 2) / 3; executed: offsetcount = ((offsetcount - (offsetcount % 3)) * 2) / 3; Execution Count:172 | 172 |
6164 | maxoffsetcount = (re->top_bracket + 1) * 2; | - |
6165 | if (offsetcount > maxoffsetcount) partially evaluated: offsetcount > maxoffsetcount no Evaluation Count:0 | yes Evaluation Count:172 |
| 0-172 |
6166 | offsetcount = maxoffsetcount; never executed: offsetcount = maxoffsetcount; | 0 |
6167 | arguments.offsetcount = offsetcount; | - |
6168 | | - |
6169 | if (function->callback) partially evaluated: function->callback yes Evaluation Count:172 | no Evaluation Count:0 |
| 0-172 |
6170 | arguments.stack = (struct sljit_stack*)function->callback(function->userdata); executed: arguments.stack = (struct sljit_stack*)function->callback(function->userdata); Execution Count:172 | 172 |
6171 | else | - |
6172 | arguments.stack = (struct sljit_stack*)function->userdata; never executed: arguments.stack = (struct sljit_stack*)function->userdata; | 0 |
6173 | | - |
6174 | if (arguments.stack == ((void *)0)) partially evaluated: arguments.stack == ((void *)0) yes Evaluation Count:172 | no Evaluation Count:0 |
| 0-172 |
6175 | retval = jit_machine_stack_exec(&arguments, function); executed: retval = jit_machine_stack_exec(&arguments, function); Execution Count:172 | 172 |
6176 | else | - |
6177 | { | - |
6178 | convert_executable_func.executable_func = function->executable_func; | - |
6179 | retval = convert_executable_func.call_executable_func(&arguments); | - |
6180 | } | 0 |
6181 | | - |
6182 | if (retval * 2 > offsetcount) partially evaluated: retval * 2 > offsetcount no Evaluation Count:0 | yes Evaluation Count:172 |
| 0-172 |
6183 | retval = 0; never executed: retval = 0; | 0 |
6184 | return retval; executed: return retval; Execution Count:172 | 172 |
6185 | } | - |
6186 | | - |
6187 | void | - |
6188 | _pcre16_jit_free(void *executable_func) | - |
6189 | { | - |
6190 | executable_function *function = (executable_function*)executable_func; | - |
6191 | sljit_free_code(function->executable_func); | - |
6192 | (pcre16_free)(function); | - |
6193 | } executed: } Execution Count:15 | 15 |
6194 | | - |
6195 | int | - |
6196 | _pcre16_jit_get_size(void *executable_func) | - |
6197 | { | - |
6198 | return ((executable_function*)executable_func)->executable_size; never executed: return ((executable_function*)executable_func)->executable_size; | 0 |
6199 | } | - |
6200 | | - |
6201 | const char* | - |
6202 | _pcre16_jit_get_target(void) | - |
6203 | { | - |
6204 | return sljit_get_platform_name(); never executed: return sljit_get_platform_name(); | 0 |
6205 | } | - |
6206 | | - |
6207 | | - |
6208 | | - |
6209 | | - |
6210 | | - |
6211 | extern pcre16_jit_stack * | - |
6212 | pcre16_jit_stack_alloc(int startsize, int maxsize) | - |
6213 | | - |
6214 | { | - |
6215 | if (startsize < 1 || maxsize < 1) never evaluated: startsize < 1 never evaluated: maxsize < 1 | 0 |
6216 | return ((void *)0); never executed: return ((void *)0); | 0 |
6217 | if (startsize > maxsize) never evaluated: startsize > maxsize | 0 |
6218 | startsize = maxsize; never executed: startsize = maxsize; | 0 |
6219 | startsize = (startsize + 8192 - 1) & ~(8192 - 1); | - |
6220 | maxsize = (maxsize + 8192 - 1) & ~(8192 - 1); | - |
6221 | return (pcre16_jit_stack*)sljit_allocate_stack(startsize, maxsize); never executed: return (pcre16_jit_stack*)sljit_allocate_stack(startsize, maxsize); | 0 |
6222 | } | - |
6223 | | - |
6224 | | - |
6225 | | - |
6226 | | - |
6227 | | - |
6228 | extern void | - |
6229 | pcre16_jit_stack_free(pcre16_jit_stack *stack) | - |
6230 | | - |
6231 | { | - |
6232 | sljit_free_stack((struct sljit_stack*)stack); | - |
6233 | } | 0 |
6234 | | - |
6235 | | - |
6236 | | - |
6237 | | - |
6238 | | - |
6239 | extern void | - |
6240 | pcre16_assign_jit_stack(pcre16_extra *extra, pcre16_jit_callback callback, void *userdata) | - |
6241 | | - |
6242 | { | - |
6243 | executable_function *function; | - |
6244 | if (extra != ((void *)0) && partially evaluated: extra != ((void *)0) yes Evaluation Count:15 | no Evaluation Count:0 |
| 0-15 |
6245 | (extra->flags & 0x0040) != 0 && partially evaluated: (extra->flags & 0x0040) != 0 yes Evaluation Count:15 | no Evaluation Count:0 |
| 0-15 |
6246 | extra->executable_jit != ((void *)0)) partially evaluated: extra->executable_jit != ((void *)0) yes Evaluation Count:15 | no Evaluation Count:0 |
| 0-15 |
6247 | { | - |
6248 | function = (executable_function*)extra->executable_jit; | - |
6249 | function->callback = callback; | - |
6250 | function->userdata = userdata; | - |
6251 | } executed: } Execution Count:15 | 15 |
6252 | } executed: } Execution Count:15 | 15 |
6253 | | - |
| | |