Lines Matching refs:op_array

46 static size_t type_num_classes(const zend_op_array *op_array, uint32_t arg_num)  in type_num_classes()  argument
50 if (!(op_array->fn_flags & ZEND_ACC_HAS_TYPE_HINTS)) { in type_num_classes()
53 if (EXPECTED(arg_num <= op_array->num_args)) { in type_num_classes()
54 arg_info = &op_array->arg_info[arg_num-1]; in type_num_classes()
55 } else if (UNEXPECTED(op_array->fn_flags & ZEND_ACC_VARIADIC)) { in type_num_classes()
56 arg_info = &op_array->arg_info[op_array->num_args]; in type_num_classes()
61 arg_info = op_array->arg_info - 1; in type_num_classes()
91 zend_op_array *op_array, in add_static_slot() argument
98 zval *class_name = &op_array->literals[op1]; in add_static_slot()
99 zval *prop_name = &op_array->literals[op2]; in add_static_slot()
154 void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx *ctx) in zend_optimizer_compact_literals() argument
170 if (op_array->last_literal) { in zend_optimizer_compact_literals()
171 …info = (literal_info*)zend_arena_calloc(&ctx->arena, op_array->last_literal, sizeof(literal_info)); in zend_optimizer_compact_literals()
174 opline = op_array->opcodes; in zend_optimizer_compact_literals()
175 end = opline + op_array->last; in zend_optimizer_compact_literals()
277 if (Z_EXTRA(op_array->literals[opline->op2.constant]) == ZEND_EXTRA_VALUE) { in zend_optimizer_compact_literals()
298 fprintf(stderr, "File %s func %s\n", op_array->filename->val, in zend_optimizer_compact_literals()
299 op_array->function_name ? op_array->function_name->val : "main"); in zend_optimizer_compact_literals()
300 fprintf(stderr, "Literals table size %d\n", op_array->last_literal); in zend_optimizer_compact_literals()
302 for (int i = 0; i < op_array->last_literal; i++) { in zend_optimizer_compact_literals()
303 zend_string *str = zval_get_string(op_array->literals + i); in zend_optimizer_compact_literals()
313 zend_hash_init(&hash, op_array->last_literal, NULL, NULL, 0); in zend_optimizer_compact_literals()
314 map = (int*)zend_arena_alloc(&ctx->arena, op_array->last_literal * sizeof(int)); in zend_optimizer_compact_literals()
315 memset(map, 0, op_array->last_literal * sizeof(int)); in zend_optimizer_compact_literals()
316 for (i = 0; i < op_array->last_literal; i++) { in zend_optimizer_compact_literals()
319 zval_ptr_dtor_nogc(&op_array->literals[i]); in zend_optimizer_compact_literals()
322 switch (Z_TYPE(op_array->literals[i])) { in zend_optimizer_compact_literals()
328 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
340 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
352 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
361 if ((pos = zend_hash_index_find(&hash, Z_LVAL(op_array->literals[i]))) != NULL) { in zend_optimizer_compact_literals()
366 zend_hash_index_add_new(&hash, Z_LVAL(op_array->literals[i]), &zv); in zend_optimizer_compact_literals()
368 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
375 … key = zend_string_init(Z_STRVAL(op_array->literals[i+1]), Z_STRLEN(op_array->literals[i+1]), 0); in zend_optimizer_compact_literals()
380 zval_ptr_dtor_nogc(&op_array->literals[i+1]); in zend_optimizer_compact_literals()
386 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
388 op_array->literals[j+1] = op_array->literals[i+1]; in zend_optimizer_compact_literals()
399 key = zend_string_init((char*)&Z_DVAL(op_array->literals[i]), sizeof(double), 0); in zend_optimizer_compact_literals()
408 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
416 key = create_str_cache_key(&op_array->literals[i], info[i].num_related); in zend_optimizer_compact_literals()
418 ZEND_ASSERT(Z_TYPE(op_array->literals[Z_LVAL_P(pos)]) == IS_STRING && in zend_optimizer_compact_literals()
422 zval_ptr_dtor_nogc(&op_array->literals[i]); in zend_optimizer_compact_literals()
426 zval_ptr_dtor_nogc(&op_array->literals[i]); in zend_optimizer_compact_literals()
435 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
442 if (i != j) op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
451 if (zend_hash_num_elements(Z_ARRVAL(op_array->literals[i])) == 0) { in zend_optimizer_compact_literals()
455 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
460 zval_ptr_dtor_nogc(&op_array->literals[i]); in zend_optimizer_compact_literals()
471 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
481 op_array->last_literal = j; in zend_optimizer_compact_literals()
493 opline = op_array->opcodes; in zend_optimizer_compact_literals()
494 end = opline + op_array->last; in zend_optimizer_compact_literals()
507 size_t num_classes = type_num_classes(op_array, opline->op1.num); in zend_optimizer_compact_literals()
516 size_t num_classes = type_num_classes(op_array, 0); in zend_optimizer_compact_literals()
527 (opline+1)->extended_value = add_static_slot(&hash, op_array, in zend_optimizer_compact_literals()
635 opline->result.num = add_static_slot(&hash, op_array, in zend_optimizer_compact_literals()
678 && Z_TYPE(op_array->literals[opline->op2.constant]) == IS_STRING) { in zend_optimizer_compact_literals()
680 opline->extended_value = add_static_slot(&hash, op_array, in zend_optimizer_compact_literals()
707 opline->extended_value = add_static_slot(&hash, op_array, in zend_optimizer_compact_literals()
797 op_array->cache_size = cache_size; in zend_optimizer_compact_literals()
802 opline = op_array->opcodes; in zend_optimizer_compact_literals()
805 zval *val = &op_array->literals[opline->op2.constant]; in zend_optimizer_compact_literals()
809 op_array->cache_size = ZEND_MM_ALIGNED_SIZE_EX(op_array->cache_size, 8); in zend_optimizer_compact_literals()
810 Z_CACHE_SLOT_P(val) = op_array->cache_size; in zend_optimizer_compact_literals()
811 op_array->cache_size += sizeof(zval); in zend_optimizer_compact_literals()
822 fprintf(stderr, "Optimized literals table size %d\n", op_array->last_literal); in zend_optimizer_compact_literals()
824 for (int i = 0; i < op_array->last_literal; i++) { in zend_optimizer_compact_literals()
825 zend_string *str = zval_get_string(op_array->literals + i); in zend_optimizer_compact_literals()