} else {
retval = &EG(uninitialized_zval);
}
-//??? if (EXPECTED(retval != object)) {
zval_ptr_dtor(&tmp_object);
-//??? } else {
-//??? Z_DELREF_P(object);
-//??? }
} else {
if (Z_STRVAL_P(member)[0] == '\0') {
if (Z_STRLEN_P(member) == 0) {
er = EG(error_reporting);
EG(error_reporting) = 0;
if (binary_op(&result, &ZEND_OP1_LITERAL(opline), &ZEND_OP2_LITERAL(opline) TSRMLS_CC) == SUCCESS) {
-//??? PZ_SET_REFCOUNT_P(&result, 1);
-//??? PZ_UNSET_ISREF_P(&result);
-
literal_dtor(&ZEND_OP1_LITERAL(opline));
literal_dtor(&ZEND_OP2_LITERAL(opline));
opline->opcode = ZEND_QM_ASSIGN;
convert_to_boolean(&result);
ZVAL_NULL(&ZEND_OP1_LITERAL(opline));
}
-//??? PZ_SET_REFCOUNT_P(&result, 1);
-//??? PZ_UNSET_ISREF_P(&result);
opline->opcode = ZEND_QM_ASSIGN;
update_op1_const(op_array, opline, &result TSRMLS_CC);
} else if ((opline->opcode == ZEND_RETURN || opline->opcode == ZEND_EXIT) &&
char *same_t=NULL;
zend_code_block *target_block;
int var_num = op_array->last_var + op_array->T;
-//??? if (op_array->T >= (zend_uint)op_array->last_var) {
-//??? var_num = op_array->T;
-//??? } else {
-//??? var_num = op_array->last_var;
-//??? }
if (var_num <= 0) {
return;
op_array->literals[j] = op_array->literals[i];
info[j] = info[i];
}
-//??? if (!Z_STR(op_array->literals[j].hash_value) {
-//??? if (IS_INTERNED(Z_STRVAL(op_array->literals[j].constant))) {
-//??? op_array->literals[j].hash_value = INTERNED_HASH(Z_STRVAL(op_array->literals[j].constant));
-//??? } else {
-//??? op_array->literals[j].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[j].constant), Z_STRLEN(op_array->literals[j].constant)+1);
-//??? }
-//??? }
if (LITERAL_NUM_SLOTS(info[i].flags)) {
Z_CACHE_SLOT(op_array->literals[j]) = cache_slots;
cache_slots += LITERAL_NUM_SLOTS(info[i].flags);
while (n > 1) {
i++;
if (i != j) op_array->literals[j] = op_array->literals[i];
-//??? if (!op_array->literals[j].hash_value) {
-//??? if (IS_INTERNED(Z_STRVAL(op_array->literals[j].constant))) {
-//??? op_array->literals[j].hash_value = INTERNED_HASH(Z_STRVAL(op_array->literals[j].constant));
-//??? } else {
-//??? op_array->literals[j].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[j].constant), Z_STRLEN(op_array->literals[j].constant)+1);
-//??? }
-//??? }
j++;
n--;
}
break;
}
EG(error_reporting) = er;
-//??? PZ_SET_REFCOUNT_P(&result, 1);
-//??? PZ_UNSET_ISREF_P(&result);
-
literal_dtor(&ZEND_OP1_LITERAL(opline));
literal_dtor(&ZEND_OP2_LITERAL(opline));
MAKE_NOP(opline);
break;
}
EG(error_reporting) = er;
-//??? PZ_SET_REFCOUNT_P(&result, 1);
-//??? PZ_UNSET_ISREF_P(&result);
-
literal_dtor(&ZEND_OP1_LITERAL(opline));
MAKE_NOP(opline);
case ZEND_FETCH_CONSTANT:
opline->op1.constant = zend_optimizer_add_literal(op_array, val TSRMLS_CC);
STR_HASH_VAL(Z_STR(ZEND_OP1_LITERAL(opline)));
-//??? Z_HASH_P(&ZEND_OP1_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRLEN(ZEND_OP1_LITERAL(opline)) + 1);
Z_CACHE_SLOT(op_array->literals[opline->op1.constant]) = op_array->last_cache_slot++;
zend_str_tolower(Z_STRVAL_P(val), Z_STRLEN_P(val));
zend_optimizer_add_literal(op_array, val TSRMLS_CC);
STR_HASH_VAL(Z_STR(op_array->literals[opline->op1.constant+1]));
-//??? op_array->literals[opline->op1.constant+1].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[opline->op1.constant+1].constant), Z_STRLEN(op_array->literals[opline->op1.constant+1].constant) + 1);
break;
case ZEND_DO_FCALL:
zend_str_tolower(Z_STRVAL_P(val), Z_STRLEN_P(val));
opline->op1.constant = zend_optimizer_add_literal(op_array, val TSRMLS_CC);
STR_HASH_VAL(Z_STR(ZEND_OP1_LITERAL(opline)));
-//??? Z_HASH_P(&ZEND_OP1_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRLEN(ZEND_OP1_LITERAL(opline)) + 1);
Z_CACHE_SLOT(op_array->literals[opline->op1.constant]) = op_array->last_cache_slot++;
break;
default:
opline->op1.constant = zend_optimizer_add_literal(op_array, val TSRMLS_CC);
STR_HASH_VAL(Z_STR(ZEND_OP1_LITERAL(opline)));
-//??? Z_HASH_P(&ZEND_OP1_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP1_LITERAL(opline)), Z_STRLEN(ZEND_OP1_LITERAL(opline)) + 1);
break;
}
} else {
opline->op2.constant = zend_optimizer_add_literal(op_array, val TSRMLS_CC);
if (Z_TYPE_P(val) == IS_STRING) {
STR_HASH_VAL(Z_STR(ZEND_OP2_LITERAL(opline)));
-//??? Z_HASH_P(&ZEND_OP2_LITERAL(opline)) = zend_hash_func(Z_STRVAL(ZEND_OP2_LITERAL(opline)), Z_STRLEN(ZEND_OP2_LITERAL(opline)) + 1);
switch (opline->opcode) {
case ZEND_FETCH_R:
case ZEND_FETCH_W:
zend_str_tolower(Z_STRVAL_P(val), Z_STRLEN_P(val));
zend_optimizer_add_literal(op_array, val TSRMLS_CC);
STR_HASH_VAL(Z_STR(op_array->literals[opline->op2.constant+1]));
-//??? op_array->literals[opline->op2.constant+1].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[opline->op2.constant+1].constant), Z_STRLEN(op_array->literals[opline->op2.constant+1].constant) + 1);
break;
case ZEND_INIT_METHOD_CALL:
case ZEND_INIT_STATIC_METHOD_CALL:
zend_str_tolower(Z_STRVAL_P(val), Z_STRLEN_P(val));
zend_optimizer_add_literal(op_array, val TSRMLS_CC);
STR_HASH_VAL(Z_STR(op_array->literals[opline->op2.constant+1]));
-//??? op_array->literals[opline->op2.constant+1].hash_value = zend_hash_func(Z_STRVAL(op_array->literals[opline->op2.constant+1].constant), Z_STRLEN(op_array->literals[opline->op2.constant+1].constant) + 1);
/* break missing intentionally */
/*case ZEND_FETCH_CONSTANT:*/
case ZEND_ASSIGN_OBJ:
#endif
};
+static zend_string *jit_auto_globals_str[4];
+
static int zend_accel_get_auto_globals(TSRMLS_D)
{
int i, ag_size = (sizeof(jit_auto_globals_info) / sizeof(jit_auto_globals_info[0]));
int mask = 0;
for (i = 0; i < ag_size ; i++) {
- if (zend_hash_str_exists(&EG(symbol_table).ht, jit_auto_globals_info[i].name, jit_auto_globals_info[i].len)) {
+ if (zend_hash_exists(&EG(symbol_table).ht, jit_auto_globals_str[i])) {
mask |= n;
}
n += n;
#if ZEND_EXTENSION_API_NO > PHP_5_3_X_API_NO
static int zend_accel_get_auto_globals_no_jit(TSRMLS_D)
{
- if (zend_hash_str_exists(&EG(symbol_table).ht, jit_auto_globals_info[3].name, jit_auto_globals_info[3].len)) {
+ if (zend_hash_exists(&EG(symbol_table).ht, jit_auto_globals_str[3])) {
return 8;
}
return 0;
{
int i, ag_size = (sizeof(jit_auto_globals_info) / sizeof(jit_auto_globals_info[0]));
int n = 1;
- zend_string *str;
for (i = 0; i < ag_size ; i++) {
if (mask & n) {
-//???
- str = STR_INIT(jit_auto_globals_info[i].name, jit_auto_globals_info[i].len, 0);
- zend_is_auto_global(str TSRMLS_CC);
- STR_RELEASE(str);
+ zend_is_auto_global(jit_auto_globals_str[i] TSRMLS_CC);
}
n += n;
}
}
+static void zend_accel_init_auto_globals(TSRMLS_D)
+{
+ int i, ag_size = (sizeof(jit_auto_globals_info) / sizeof(jit_auto_globals_info[0]));
+
+ for (i = 0; i < ag_size ; i++) {
+ jit_auto_globals_str[i] = STR_INIT(jit_auto_globals_info[i].name, jit_auto_globals_info[i].len, 1);
+ STR_HASH_VAL(jit_auto_globals_str[i]);
+ jit_auto_globals_str[i] = accel_new_interned_string(jit_auto_globals_str[i] TSRMLS_CC);
+ }
+}
+
static zend_persistent_script *compile_and_cache_file(zend_file_handle *file_handle, int type, char *key, unsigned int key_length, zend_op_array **op_array_p, int *from_shared_memory TSRMLS_DC)
{
zend_persistent_script *new_persistent_script;
/* from this point further, shared memory is supposed to be OK */
+ /* Init auto-global strings */
+ zend_accel_init_auto_globals(TSRMLS_C);
+
/* Override compiler */
accelerator_orig_compile_file = zend_compile_file;
zend_compile_file = persistent_compile_file;
zend_unmangle_property_name(ref->prop.name->val, ref->prop.name->len, &class_name, &prop_name);
member_p = zend_read_property(ref->ce, object, prop_name, strlen(prop_name), 1 TSRMLS_CC);
ZVAL_DUP(return_value, member_p);
-//???
- if (member_p != &EG(uninitialized_zval)) {
- zval_add_ref(member_p);
- zval_ptr_dtor(member_p);
- }
}
}
/* }}} */