29 return !(jump->flags & JUMP_ADDR) && (jump->u.label !=
NULL);
34 return (jump->flags & JUMP_ADDR) != 0;
39 return (jump->flags & JUMP_MOV_ADDR) != 0;
42#define SLJIT_SERIALIZE_DEBUG ((sljit_u16)0x1)
62#if (defined SLJIT_HAS_STATUS_FLAGS_STATE && SLJIT_HAS_STATUS_FLAGS_STATE)
66#if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32)
70#if ((defined SLJIT_CONFIG_ARM_32 && SLJIT_CONFIG_ARM_32) && (defined __SOFTFP__)) \
71 || (defined SLJIT_CONFIG_MIPS_32 && SLJIT_CONFIG_MIPS_32)
75#if (defined SLJIT_CONFIG_ARM_V6 && SLJIT_CONFIG_ARM_V6)
81#if (defined SLJIT_CONFIG_MIPS && SLJIT_CONFIG_MIPS)
107#define SLJIT_SERIALIZE_ALIGN(v) (((v) + sizeof(sljit_uw) - 1) & ~(sljit_uw)(sizeof(sljit_uw) - 1))
108#if (defined SLJIT_LITTLE_ENDIAN && SLJIT_LITTLE_ENDIAN)
109#define SLJIT_SERIALIZE_SIGNATURE 0x534c4a54
111#define SLJIT_SERIALIZE_SIGNATURE 0x544a4c53
113#define SLJIT_SERIALIZE_VERSION 1
127#if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) \
128 || (defined SLJIT_DEBUG && SLJIT_DEBUG)
141#if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) \
142 || (defined SLJIT_DEBUG && SLJIT_DEBUG)
147#if (defined SLJIT_CONFIG_ARM_V6 && SLJIT_CONFIG_ARM_V6)
160 jump = compiler->
jumps;
161 while (jump !=
NULL) {
166 const_ = compiler->
consts;
167 while (const_ !=
NULL) {
169 const_ = const_->
next;
176 *
size = serialized_size;
192 serialized_compiler->
size = compiler->
size;
194#if (defined SLJIT_HAS_STATUS_FLAGS_STATE && SLJIT_HAS_STATUS_FLAGS_STATE)
195 serialized_compiler->status_flags_state = compiler->status_flags_state;
198#if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) \
199 || ((defined SLJIT_CONFIG_ARM_32 && SLJIT_CONFIG_ARM_32) && (defined __SOFTFP__)) \
200 || (defined SLJIT_CONFIG_MIPS_32 && SLJIT_CONFIG_MIPS_32)
201 serialized_compiler->args_size = compiler->args_size;
204#if (defined SLJIT_CONFIG_ARM_V6 && SLJIT_CONFIG_ARM_V6)
205 serialized_compiler->cpool_diff = compiler->cpool_diff;
206 serialized_compiler->cpool_fill = compiler->cpool_fill;
207 serialized_compiler->patches = compiler->patches;
214#if (defined SLJIT_CONFIG_MIPS && SLJIT_CONFIG_MIPS)
215 serialized_compiler->delay_slot = compiler->delay_slot;
221 used_size =
buf->used_size;
232 while (label !=
NULL) {
234 serialized_label->
size = label->
size;
239 jump = compiler->
jumps;
241 while (jump !=
NULL) {
243 serialized_jump->
addr = jump->addr;
244 serialized_jump->
flags = jump->flags;
246 if (jump->flags & JUMP_ADDR)
247 serialized_jump->
value = jump->u.target;
248 else if (jump->u.label !=
NULL)
249 serialized_jump->
value = jump->u.label->u.index;
251 serialized_jump->
value = SLJIT_MAX_ADDRESS;
259 const_ = compiler->
consts;
261 while (const_ !=
NULL) {
263 serialized_const->
addr = const_->
addr;
265 const_ = const_->
next;
270#if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) \
271 || (defined SLJIT_DEBUG && SLJIT_DEBUG)
278#if (defined SLJIT_DEBUG && SLJIT_DEBUG)
296#if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) \
297 || (defined SLJIT_DEBUG && SLJIT_DEBUG)
311 sljit_uw i, used_size, aligned_size, label_count;
332 compiler->
size = serialized_compiler->
size;
334#if (defined SLJIT_HAS_STATUS_FLAGS_STATE && SLJIT_HAS_STATUS_FLAGS_STATE)
335 compiler->status_flags_state = serialized_compiler->status_flags_state;
338#if (defined SLJIT_CONFIG_X86_32 && SLJIT_CONFIG_X86_32) \
339 || ((defined SLJIT_CONFIG_ARM_32 && SLJIT_CONFIG_ARM_32) && (defined __SOFTFP__)) \
340 || (defined SLJIT_CONFIG_MIPS_32 && SLJIT_CONFIG_MIPS_32)
341 compiler->args_size = serialized_compiler->args_size;
344#if (defined SLJIT_CONFIG_ARM_V6 && SLJIT_CONFIG_ARM_V6)
345 used_size = serialized_compiler->cpool_fill;
347 compiler->cpool_diff = serialized_compiler->cpool_diff;
348 compiler->cpool_fill = used_size;
349 compiler->patches = serialized_compiler->patches;
359#if (defined SLJIT_CONFIG_MIPS && SLJIT_CONFIG_MIPS)
360 compiler->delay_slot = serialized_compiler->delay_slot;
363#if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) \
364 || (defined SLJIT_DEBUG && SLJIT_DEBUG)
383 if (last_buf ==
NULL) {
396 if (last_buf !=
NULL)
410 if (label_list ==
NULL)
413 for (i = 0; i < label_count; i++) {
421 label->
size = serialized_label->
size;
423 if (last_label !=
NULL)
424 last_label->
next = label;
429 label_list[i] = label;
446 jump->addr = serialized_jump->
addr;
447 jump->flags = serialized_jump->
flags;
449 if (!(serialized_jump->
flags & JUMP_ADDR)) {
450 if (serialized_jump->
value != SLJIT_MAX_ADDRESS) {
451 if (serialized_jump->
value >= label_count)
453 jump->u.label = label_list[serialized_jump->
value];
455 jump->u.label =
NULL;
457 jump->u.target = serialized_jump->
value;
459 if (last_jump !=
NULL)
460 last_jump->
next = jump;
462 compiler->
jumps = jump;
485 const_->
addr = serialized_const->
addr;
487 if (last_const !=
NULL)
488 last_const->
next = const_;
490 compiler->
consts = const_;
498#if (defined SLJIT_ARGUMENT_CHECKS && SLJIT_ARGUMENT_CHECKS) \
499 || (defined SLJIT_DEBUG && SLJIT_DEBUG)
513 if (label_list !=
NULL)
zend_ffi_ctype_name_buf buf
unsigned const char * end
PHP_JSON_API size_t int options
unsigned short int sljit_u16
#define SLJIT_API_FUNC_ATTRIBUTE
#define SLJIT_MALLOC(size, allocator_data)
#define SLJIT_FREE(ptr, allocator_data)
#define SLJIT_MEMCPY(dest, src, len)
#define SLJIT_UNUSED_ARG(arg)
#define PTR_FAIL_IF_NULL(ptr)
#define PTR_FAIL_IF(expr)
#define SLJIT_SERIALIZE_IGNORE_DEBUG
SLJIT_API_FUNC_ATTRIBUTE struct sljit_compiler * sljit_create_compiler(void *allocator_data)
SLJIT_API_FUNC_ATTRIBUTE void sljit_free_compiler(struct sljit_compiler *compiler)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_jump_is_mov_addr(struct sljit_jump *jump)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_jump_has_label(struct sljit_jump *jump)
SLJIT_API_FUNC_ATTRIBUTE struct sljit_compiler * sljit_deserialize_compiler(sljit_uw *buffer, sljit_uw size, sljit_s32 options, void *allocator_data)
SLJIT_API_FUNC_ATTRIBUTE sljit_s32 sljit_jump_has_target(struct sljit_jump *jump)
#define SLJIT_SERIALIZE_DEBUG
SLJIT_API_FUNC_ATTRIBUTE sljit_uw * sljit_serialize_compiler(struct sljit_compiler *compiler, sljit_s32 options, sljit_uw *size)
#define SLJIT_SERIALIZE_VERSION
#define SLJIT_SERIALIZE_SIGNATURE
#define SLJIT_SERIALIZE_ALIGN(v)
struct sljit_jump * last_jump
struct sljit_const * consts
struct sljit_const * last_const
struct sljit_jump * jumps
struct sljit_label * last_label
struct sljit_memory_fragment * buf
sljit_s32 logical_local_size
struct sljit_label * labels
struct sljit_const * next
struct sljit_label * next
union sljit_label::@034003116150245300057154161307153110213245130244 u
struct sljit_memory_fragment * next
sljit_uw buf_segment_count
sljit_s32 logical_local_size