Skip to content

Commit 3333ab9

Browse files
committed
ext/opcache/jit/internal: add zend_jit_op_array_trace_ssa()
1 parent 3f28de6 commit 3333ab9

File tree

2 files changed

+22
-33
lines changed

2 files changed

+22
-33
lines changed

ext/opcache/jit/zend_jit_internal.h

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -527,6 +527,17 @@ static zend_always_inline zend_op_trace_info *ZEND_OP_TRACE_INFO2(const zend_op_
527527
return ZEND_OP_TRACE_INFO(opline, jit_extension->offset);
528528
}
529529

530+
/**
531+
* Access the #zend_ssa of an #zend_op_array.
532+
*/
533+
static zend_always_inline zend_ssa *zend_jit_op_array_trace_ssa(const zend_op_array *op_array)
534+
{
535+
zend_jit_op_array_trace_extension *jit_extension =
536+
(zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array);
537+
ZEND_ASSERT(jit_extension != NULL);
538+
return &jit_extension->func_info.ssa;
539+
}
540+
530541
/* Recorder */
531542
typedef enum _zend_jit_trace_op {
532543
ZEND_JIT_TRACE_VM,

ext/opcache/jit/zend_jit_trace.c

Lines changed: 11 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -1248,9 +1248,7 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
12481248
call_level--;
12491249
}
12501250
level++;
1251-
zend_jit_op_array_trace_extension *const jit_extension =
1252-
(zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array);
1253-
ssa = &jit_extension->func_info.ssa;
1251+
ssa = zend_jit_op_array_trace_ssa(op_array);
12541252
if (ssa->cfg.blocks_count) {
12551253
/* pass */
12561254
} else if (num_op_arrays == ZEND_JIT_TRACE_MAX_FUNCS) {
@@ -1266,9 +1264,7 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
12661264
} else if (p->op == ZEND_JIT_TRACE_BACK) {
12671265
if (level == 0) {
12681266
stack_bottom += zend_jit_trace_op_array_frame_size(p->op_array);
1269-
zend_jit_op_array_trace_extension *const jit_extension =
1270-
(zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array);
1271-
ssa = &jit_extension->func_info.ssa;
1267+
ssa = zend_jit_op_array_trace_ssa(op_array);
12721268
if (ssa->cfg.blocks_count) {
12731269
/* pass */
12741270
} else if (num_op_arrays == ZEND_JIT_TRACE_MAX_FUNCS) {
@@ -1488,9 +1484,7 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
14881484

14891485
/* 4. Type inference */
14901486
op_array = trace_buffer->op_array;
1491-
zend_jit_op_array_trace_extension *const jit_extension =
1492-
(zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array);
1493-
ssa = &jit_extension->func_info.ssa;
1487+
ssa = zend_jit_op_array_trace_ssa(op_array);
14941488

14951489
zend_ssa_var_info *const ssa_var_info = tssa->var_info = zend_arena_calloc(&CG(arena), tssa->vars_count, sizeof(zend_ssa_var_info));
14961490

@@ -2280,9 +2274,7 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
22802274

22812275
} else if (p->op == ZEND_JIT_TRACE_ENTER) {
22822276
op_array = p->op_array;
2283-
zend_jit_op_array_trace_extension *const jit_extension =
2284-
(zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array);
2285-
ssa = &jit_extension->func_info.ssa;
2277+
ssa = zend_jit_op_array_trace_ssa(op_array);
22862278

22872279
zend_jit_trace_stack_frame *call = frame->call;
22882280
if (!call) {
@@ -2347,9 +2339,7 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
23472339
}
23482340
} else if (p->op == ZEND_JIT_TRACE_BACK) {
23492341
op_array = p->op_array;
2350-
zend_jit_op_array_trace_extension *const jit_extension =
2351-
(zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array);
2352-
ssa = &jit_extension->func_info.ssa;
2342+
ssa = zend_jit_op_array_trace_ssa(op_array);
23532343
if (level == 0) {
23542344
int i = 0;
23552345
int v = ZEND_JIT_TRACE_GET_FIRST_SSA_VAR(p->info);
@@ -2499,9 +2489,7 @@ static zend_ssa *zend_jit_trace_build_tssa(zend_jit_trace_rec *trace_buffer, uin
24992489
zend_ssa_phi *phi = tssa->blocks[1].phis;
25002490

25012491
op_array = trace_buffer->op_array;
2502-
zend_jit_op_array_trace_extension *const jit_extension =
2503-
(zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array);
2504-
ssa = &jit_extension->func_info.ssa;
2492+
ssa = zend_jit_op_array_trace_ssa(op_array);
25052493

25062494
while (phi) {
25072495
uint32_t t = ssa_var_info[phi->ssa_var].type;
@@ -2691,9 +2679,7 @@ static zend_lifetime_interval** zend_jit_trace_allocate_registers(zend_jit_trace
26912679
memset(ZEND_VOIDP(vars_op_array), 0, sizeof(zend_op_array*) * ssa->vars_count);
26922680

26932681
const zend_op_array *op_array = trace_buffer->op_array;
2694-
zend_jit_op_array_trace_extension *const jit_extension =
2695-
(zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array);
2696-
const zend_ssa *op_array_ssa = &jit_extension->func_info.ssa;
2682+
const zend_ssa *op_array_ssa = zend_jit_op_array_trace_ssa(op_array);
26972683
zend_jit_trace_stack_frame *frame = JIT_G(current_frame);
26982684
frame->prev = NULL;
26992685
frame->func = (const zend_function*)op_array;
@@ -2981,9 +2967,7 @@ static zend_lifetime_interval** zend_jit_trace_allocate_registers(zend_jit_trace
29812967
frame->func = (const zend_function*)p->op_array;
29822968
stack = frame->stack;
29832969
op_array = p->op_array;
2984-
zend_jit_op_array_trace_extension *const jit_extension =
2985-
(zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array);
2986-
op_array_ssa = &jit_extension->func_info.ssa;
2970+
op_array_ssa = zend_jit_op_array_trace_ssa(op_array);
29872971
j = ZEND_JIT_TRACE_GET_FIRST_SSA_VAR(p->info);
29882972
for (i = 0; i < op_array->last_var; i++) {
29892973
SET_STACK_VAR(stack, i, j);
@@ -3007,9 +2991,7 @@ static zend_lifetime_interval** zend_jit_trace_allocate_registers(zend_jit_trace
30072991
zend_jit_close_var(stack, i, start, end, flags, idx-1);
30082992
}
30092993
op_array = p->op_array;
3010-
zend_jit_op_array_trace_extension *const jit_extension =
3011-
(zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array);
3012-
op_array_ssa = &jit_extension->func_info.ssa;
2994+
op_array_ssa = zend_jit_op_array_trace_ssa(op_array);
30132995
frame = zend_jit_trace_op_array_ret_frame(frame, op_array);
30142996
stack = frame->stack;
30152997
if (level == 0) {
@@ -6468,9 +6450,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
64686450
TRACE_FRAME_SET_THIS_CHECKED(call);
64696451
}
64706452
op_array = (zend_op_array*)p->op_array;
6471-
jit_extension =
6472-
(zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array);
6473-
op_array_ssa = &jit_extension->func_info.ssa;
6453+
op_array_ssa = zend_jit_op_array_trace_ssa(op_array);
64746454
frame->call = call->prev;
64756455
call->prev = frame;
64766456
if (p->info & ZEND_JIT_TRACE_RETURN_VALUE_USED) {
@@ -6494,9 +6474,7 @@ static const void *zend_jit_trace(zend_jit_trace_rec *trace_buffer, uint32_t par
64946474
}
64956475
} else if (p->op == ZEND_JIT_TRACE_BACK) {
64966476
op_array = (zend_op_array*)p->op_array;
6497-
jit_extension =
6498-
(zend_jit_op_array_trace_extension*)ZEND_FUNC_INFO(op_array);
6499-
op_array_ssa = &jit_extension->func_info.ssa;
6477+
op_array_ssa = zend_jit_op_array_trace_ssa(op_array);
65006478
top = frame;
65016479
if (frame->prev) {
65026480
checked_stack -= frame->used_stack;

0 commit comments

Comments
 (0)