Lines Matching refs:op_array

58 static size_t type_num_classes(const zend_op_array *op_array, uint32_t arg_num)  in type_num_classes()  argument
62 if (!(op_array->fn_flags & ZEND_ACC_HAS_TYPE_HINTS)) { in type_num_classes()
65 if (EXPECTED(arg_num <= op_array->num_args)) { in type_num_classes()
66 arg_info = &op_array->arg_info[arg_num-1]; in type_num_classes()
67 } else if (UNEXPECTED(op_array->fn_flags & ZEND_ACC_VARIADIC)) { in type_num_classes()
68 arg_info = &op_array->arg_info[op_array->num_args]; in type_num_classes()
73 arg_info = op_array->arg_info - 1; in type_num_classes()
87 zend_op_array *op_array, in add_static_slot() argument
94 zval *class_name = &op_array->literals[op1]; in add_static_slot()
95 zval *prop_name = &op_array->literals[op2]; in add_static_slot()
150 void zend_optimizer_compact_literals(zend_op_array *op_array, zend_optimizer_ctx *ctx) in zend_optimizer_compact_literals() argument
165 if (op_array->last_literal) { in zend_optimizer_compact_literals()
166 …info = (literal_info*)zend_arena_calloc(&ctx->arena, op_array->last_literal, sizeof(literal_info)); in zend_optimizer_compact_literals()
169 opline = op_array->opcodes; in zend_optimizer_compact_literals()
170 end = opline + op_array->last; in zend_optimizer_compact_literals()
301 if (Z_EXTRA(op_array->literals[opline->op2.constant]) == ZEND_EXTRA_VALUE) { in zend_optimizer_compact_literals()
322 fprintf(stderr, "File %s func %s\n", op_array->filename->val, in zend_optimizer_compact_literals()
323 op_array->function_name ? op_array->function_name->val : "main"); in zend_optimizer_compact_literals()
324 fprintf(stderr, "Literals table size %d\n", op_array->last_literal); in zend_optimizer_compact_literals()
326 for (int i = 0; i < op_array->last_literal; i++) { in zend_optimizer_compact_literals()
327 zend_string *str = zval_get_string(op_array->literals + i); in zend_optimizer_compact_literals()
337 zend_hash_init(&hash, op_array->last_literal, NULL, NULL, 0); in zend_optimizer_compact_literals()
340 map = (int*)zend_arena_alloc(&ctx->arena, op_array->last_literal * sizeof(int)); in zend_optimizer_compact_literals()
341 memset(map, 0, op_array->last_literal * sizeof(int)); in zend_optimizer_compact_literals()
342 for (i = 0; i < op_array->last_literal; i++) { in zend_optimizer_compact_literals()
345 zval_ptr_dtor_nogc(&op_array->literals[i]); in zend_optimizer_compact_literals()
348 switch (Z_TYPE(op_array->literals[i])) { in zend_optimizer_compact_literals()
353 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
364 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
375 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
384 if ((pos = zend_hash_index_find(&hash, Z_LVAL(op_array->literals[i]))) != NULL) { in zend_optimizer_compact_literals()
389 zend_hash_index_add_new(&hash, Z_LVAL(op_array->literals[i]), &zv); in zend_optimizer_compact_literals()
391 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
398 … key = zend_string_init(Z_STRVAL(op_array->literals[i+1]), Z_STRLEN(op_array->literals[i+1]), 0); in zend_optimizer_compact_literals()
399 ZSTR_H(key) = ZSTR_HASH(Z_STR(op_array->literals[i+1])) + 100 + in zend_optimizer_compact_literals()
404 zval_ptr_dtor_nogc(&op_array->literals[i+1]); in zend_optimizer_compact_literals()
410 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
412 op_array->literals[j+1] = op_array->literals[i+1]; in zend_optimizer_compact_literals()
422 …if ((pos = zend_hash_str_find(&double_hash, (char*)&Z_DVAL(op_array->literals[i]), sizeof(double))… in zend_optimizer_compact_literals()
427 … zend_hash_str_add_new(&double_hash, (char*)&Z_DVAL(op_array->literals[i]), sizeof(double), &zv); in zend_optimizer_compact_literals()
429 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
436 key = create_str_cache_key(&op_array->literals[i], info[i].flags); in zend_optimizer_compact_literals()
438 Z_TYPE(op_array->literals[Z_LVAL_P(pos)]) == IS_STRING && in zend_optimizer_compact_literals()
445 zval_ptr_dtor_nogc(&op_array->literals[i]); in zend_optimizer_compact_literals()
449 zval_ptr_dtor_nogc(&op_array->literals[i]); in zend_optimizer_compact_literals()
460 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
467 if (i != j) op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
475 if (zend_hash_num_elements(Z_ARRVAL(op_array->literals[i])) == 0) { in zend_optimizer_compact_literals()
479 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
484 zval_ptr_dtor_nogc(&op_array->literals[i]); in zend_optimizer_compact_literals()
494 op_array->literals[j] = op_array->literals[i]; in zend_optimizer_compact_literals()
505 op_array->last_literal = j; in zend_optimizer_compact_literals()
517 opline = op_array->opcodes; in zend_optimizer_compact_literals()
518 end = opline + op_array->last; in zend_optimizer_compact_literals()
531 size_t num_classes = type_num_classes(op_array, opline->op1.num); in zend_optimizer_compact_literals()
540 size_t num_classes = type_num_classes(op_array, 0); in zend_optimizer_compact_literals()
551 (opline+1)->extended_value = add_static_slot(&hash, op_array, in zend_optimizer_compact_literals()
659 opline->result.num = add_static_slot(&hash, op_array, in zend_optimizer_compact_literals()
702 opline->extended_value = add_static_slot(&hash, op_array, in zend_optimizer_compact_literals()
729 opline->extended_value = add_static_slot(&hash, op_array, in zend_optimizer_compact_literals()
818 op_array->cache_size = cache_size; in zend_optimizer_compact_literals()
823 opline = op_array->opcodes; in zend_optimizer_compact_literals()
826 zval *val = &op_array->literals[opline->op2.constant]; in zend_optimizer_compact_literals()
830 op_array->cache_size = ZEND_MM_ALIGNED_SIZE_EX(op_array->cache_size, 8); in zend_optimizer_compact_literals()
831 Z_CACHE_SLOT_P(val) = op_array->cache_size; in zend_optimizer_compact_literals()
832 op_array->cache_size += sizeof(zval); in zend_optimizer_compact_literals()
843 fprintf(stderr, "Optimized literals table size %d\n", op_array->last_literal); in zend_optimizer_compact_literals()
845 for (int i = 0; i < op_array->last_literal; i++) { in zend_optimizer_compact_literals()
846 zend_string *str = zval_get_string(op_array->literals + i); in zend_optimizer_compact_literals()