111uint32_t oveccount = match_data->oveccount;
112uint32_t max_oveccount;
114 void *executable_func;
115 jit_function call_executable_func;
116} convert_executable_func;
117jit_arguments arguments;
130arguments.str = subject + start_offset;
131arguments.begin = subject;
132arguments.end = subject + length;
133arguments.match_data = match_data;
134arguments.startchar_ptr = subject;
135arguments.mark_ptr =
NULL;
140 arguments.callout = mcontext->callout;
141 arguments.callout_data = mcontext->callout_data;
142 arguments.offset_limit = mcontext->offset_limit;
143 arguments.limit_match = (mcontext->match_limit < re->
limit_match)?
145 if (mcontext->jit_callback !=
NULL)
146 jit_stack = mcontext->jit_callback(mcontext->jit_callback_data);
152 arguments.callout =
NULL;
153 arguments.callout_data =
NULL;
162if (oveccount > max_oveccount)
163 oveccount = max_oveccount;
164arguments.oveccount = oveccount << 1;
167convert_executable_func.executable_func =
functions->executable_funcs[index];
168if (jit_stack !=
NULL)
170 arguments.stack = (
struct sljit_stack *)(jit_stack->stack);
171 rc = convert_executable_func.call_executable_func(&arguments);
174 rc = jit_machine_stack_exec(&arguments, convert_executable_func.call_executable_func);
176if (rc > (
int)oveccount)
178match_data->code = re;
180match_data->subject_length = length;
182match_data->startchar = arguments.startchar_ptr - subject;
183match_data->leftchar = 0;
184match_data->rightchar = 0;
185match_data->mark = arguments.mark_ptr;
188#if defined(__has_feature)
189#if __has_feature(memory_sanitizer)
191 __msan_unpoison(match_data->ovector, 2 * rc *
sizeof(match_data->ovector[0]));
195return match_data->rc;