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()
274 if (Z_EXTRA(op_array->literals[opline->op2.constant]) == ZEND_EXTRA_VALUE) { in zend_optimizer_compact_literals()
295 fprintf(stderr, "File %s func %s\n", op_array->filename->val, in zend_optimizer_compact_literals()
296 op_array->function_name ? op_array->function_name->val : "main"); in zend_optimizer_compact_literals()
297 fprintf(stderr, "Literals table size %d\n", op_array->last_literal); in zend_optimizer_compact_literals()
299 for (int i = 0; i < op_array->last_literal; i++) { in zend_optimizer_compact_literals()
300 zend_string *str = zval_get_string(op_array->literals + i); in zend_optimizer_compact_literals()
310 zend_hash_init(&hash, op_array->last_literal, NULL, NULL, 0); in zend_optimizer_compact_literals()
311 map = (int*)zend_arena_alloc(&ctx->arena, op_array->last_literal * sizeof(int)); in zend_optimizer_compact_literals()
312 memset(map, 0, op_array->last_literal * sizeof(int)); in zend_optimizer_compact_literals()
313 for (i = 0; i < op_array->last_literal; i++) { in zend_optimizer_compact_literals()
316 zval_ptr_dtor_nogc(&op_array->literals[i]); in zend_optimizer_compact_literals()
319 switch (Z_TYPE(op_array->literals[i])) { in zend_optimizer_compact_literals()
325 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
337 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
349 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
358 if ((pos = zend_hash_index_find(&hash, Z_LVAL(op_array->literals[i]))) != NULL) { in zend_optimizer_compact_literals()
363 zend_hash_index_add_new(&hash, Z_LVAL(op_array->literals[i]), &zv); in zend_optimizer_compact_literals()
365 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
372 … key = zend_string_init(Z_STRVAL(op_array->literals[i+1]), Z_STRLEN(op_array->literals[i+1]), 0); in zend_optimizer_compact_literals()
377 zval_ptr_dtor_nogc(&op_array->literals[i+1]); in zend_optimizer_compact_literals()
383 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
385 op_array->literals[j+1] = op_array->literals[i+1]; in zend_optimizer_compact_literals()
396 key = zend_string_init((char*)&Z_DVAL(op_array->literals[i]), sizeof(double), 0); in zend_optimizer_compact_literals()
405 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
413 key = create_str_cache_key(&op_array->literals[i], info[i].num_related); in zend_optimizer_compact_literals()
415 ZEND_ASSERT(Z_TYPE(op_array->literals[Z_LVAL_P(pos)]) == IS_STRING && in zend_optimizer_compact_literals()
419 zval_ptr_dtor_nogc(&op_array->literals[i]); in zend_optimizer_compact_literals()
423 zval_ptr_dtor_nogc(&op_array->literals[i]); in zend_optimizer_compact_literals()
432 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
439 if (i != j) op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
448 if (zend_hash_num_elements(Z_ARRVAL(op_array->literals[i])) == 0) { in zend_optimizer_compact_literals()
452 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
457 zval_ptr_dtor_nogc(&op_array->literals[i]); in zend_optimizer_compact_literals()
468 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
478 op_array->last_literal = j; in zend_optimizer_compact_literals()
490 opline = op_array->opcodes; in zend_optimizer_compact_literals()
491 end = opline + op_array->last; in zend_optimizer_compact_literals()
504 size_t num_classes = type_num_classes(op_array, opline->op1.num); in zend_optimizer_compact_literals()
513 size_t num_classes = type_num_classes(op_array, 0); in zend_optimizer_compact_literals()
524 (opline+1)->extended_value = add_static_slot(&hash, op_array, in zend_optimizer_compact_literals()
632 opline->result.num = add_static_slot(&hash, op_array, in zend_optimizer_compact_literals()
675 && Z_TYPE(op_array->literals[opline->op2.constant]) == IS_STRING) { in zend_optimizer_compact_literals()
677 opline->extended_value = add_static_slot(&hash, op_array, in zend_optimizer_compact_literals()
704 opline->extended_value = add_static_slot(&hash, op_array, in zend_optimizer_compact_literals()
793 op_array->cache_size = cache_size; in zend_optimizer_compact_literals()
798 opline = op_array->opcodes; in zend_optimizer_compact_literals()
801 zval *val = &op_array->literals[opline->op2.constant]; in zend_optimizer_compact_literals()
805 op_array->cache_size = ZEND_MM_ALIGNED_SIZE_EX(op_array->cache_size, 8); in zend_optimizer_compact_literals()
806 Z_CACHE_SLOT_P(val) = op_array->cache_size; in zend_optimizer_compact_literals()
807 op_array->cache_size += sizeof(zval); in zend_optimizer_compact_literals()
818 fprintf(stderr, "Optimized literals table size %d\n", op_array->last_literal); in zend_optimizer_compact_literals()
820 for (int i = 0; i < op_array->last_literal; i++) { in zend_optimizer_compact_literals()
821 zend_string *str = zval_get_string(op_array->literals + i); in zend_optimizer_compact_literals()