--- php-5.3.1/Zend/zend_vm_def.h	2009-11-02 19:11:33.000000000 +0100
+++ active-3.1/Zend/zend_vm_def.h	2009-12-03 08:33:28.000000000 +0100
@@ -64,6 +64,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+ZEND_VM_HANDLER(120, ZEND_DII, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
+{
+    zend_op *opline = EX(opline);
+    zend_free_op free_op1, free_op2;
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        GET_OP1_ZVAL_PTR(BP_VAR_R),
+        GET_OP2_ZVAL_PTR(BP_VAR_R) TSRMLS_CC);
+    FREE_OP1();
+    FREE_OP2();
+    ZEND_VM_NEXT_OPCODE();
+}
+
 ZEND_VM_HANDLER(4, ZEND_DIV, CONST|TMP|VAR|CV, CONST|TMP|VAR|CV)
 {
 	zend_op *opline = EX(opline);
@@ -506,6 +519,11 @@
 	ZEND_VM_DISPATCH_TO_HELPER_EX(zend_binary_assign_op_helper, binary_op, div_function);
 }
 
+ZEND_VM_HANDLER(121, ZEND_ASSIGN_DII, VAR|UNUSED|CV, CONST|TMP|VAR|UNUSED|CV)
+{
+	ZEND_VM_DISPATCH_TO_HELPER_EX(zend_binary_assign_op_helper, binary_op, dii_function);
+}
+
 ZEND_VM_HANDLER(27, ZEND_ASSIGN_MOD, VAR|UNUSED|CV, CONST|TMP|VAR|UNUSED|CV)
 {
 	ZEND_VM_DISPATCH_TO_HELPER_EX(zend_binary_assign_op_helper, binary_op, mod_function);
@@ -3885,11 +3903,7 @@
 
 	switch (opline->extended_value & ZEND_ISSET_ISEMPTY_MASK) {
 		case ZEND_ISSET:
-			if (isset && Z_TYPE_PP(value) == IS_NULL) {
-				Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 0;
-			} else {
-				Z_LVAL(EX_T(opline->result.u.var).tmp_var) = isset;
-			}
+			Z_LVAL(EX_T(opline->result.u.var).tmp_var) = isset;
 			break;
 		case ZEND_ISEMPTY:
 			if (!isset || !i_zend_is_true(*value)) {
@@ -3952,11 +3966,7 @@
 
 			switch (opline->extended_value) {
 				case ZEND_ISSET:
-					if (isset && Z_TYPE_PP(value) == IS_NULL) {
-						result = 0;
-					} else {
-						result = isset;
-					}
+					result = isset;
 					break;
 				case ZEND_ISEMPTY:
 					if (!isset || !i_zend_is_true(*value)) {
--- php-5.3.1/Zend/zend_vm_execute.h	2009-11-02 19:11:33.000000000 +0100
+++ active-3.1/Zend/zend_vm_execute.h	2009-12-03 09:09:11.000000000 +0100
@@ -1332,6 +1332,7 @@
 
 	if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
 		retval = zend_std_get_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 0 TSRMLS_CC);
+
 	} else {
 		target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), type, varname TSRMLS_CC);
 /*
@@ -2274,11 +2275,7 @@
 
 	switch (opline->extended_value & ZEND_ISSET_ISEMPTY_MASK) {
 		case ZEND_ISSET:
-			if (isset && Z_TYPE_PP(value) == IS_NULL) {
-				Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 0;
-			} else {
-				Z_LVAL(EX_T(opline->result.u.var).tmp_var) = isset;
-			}
+			Z_LVAL(EX_T(opline->result.u.var).tmp_var) = isset;
 			break;
 		case ZEND_ISEMPTY:
 			if (!isset || !i_zend_is_true(*value)) {
@@ -2397,6 +2394,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        &opline->op1.u.constant,
+        &opline->op2.u.constant TSRMLS_CC);
+
+
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_CONST_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -2990,6 +3000,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+    zend_free_op free_op2;
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        &opline->op1.u.constant,
+        _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+    zval_dtor(free_op2.var);
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_CONST_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -3456,6 +3479,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+    zend_free_op free_op2;
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        &opline->op1.u.constant,
+        _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+    if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_CONST_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -4112,6 +4148,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        &opline->op1.u.constant,
+        _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
+
+
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_CONST_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -5542,11 +5591,7 @@
 
 	switch (opline->extended_value & ZEND_ISSET_ISEMPTY_MASK) {
 		case ZEND_ISSET:
-			if (isset && Z_TYPE_PP(value) == IS_NULL) {
-				Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 0;
-			} else {
-				Z_LVAL(EX_T(opline->result.u.var).tmp_var) = isset;
-			}
+			Z_LVAL(EX_T(opline->result.u.var).tmp_var) = isset;
 			break;
 		case ZEND_ISEMPTY:
 			if (!isset || !i_zend_is_true(*value)) {
@@ -5688,6 +5733,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+    zend_free_op free_op1;
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
+        &opline->op2.u.constant TSRMLS_CC);
+    zval_dtor(free_op1.var);
+
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_TMP_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -6173,6 +6231,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+    zend_free_op free_op1, free_op2;
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
+        _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
+    zval_dtor(free_op1.var);
+    zval_dtor(free_op2.var);
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_TMP_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -6639,6 +6710,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+    zend_free_op free_op1, free_op2;
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
+        _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
+    zval_dtor(free_op1.var);
+    if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_TMP_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -7198,6 +7282,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+    zend_free_op free_op1;
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        _get_zval_ptr_tmp(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
+        _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
+    zval_dtor(free_op1.var);
+
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_TMP_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -9045,11 +9142,7 @@
 
 	switch (opline->extended_value & ZEND_ISSET_ISEMPTY_MASK) {
 		case ZEND_ISSET:
-			if (isset && Z_TYPE_PP(value) == IS_NULL) {
-				Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 0;
-			} else {
-				Z_LVAL(EX_T(opline->result.u.var).tmp_var) = isset;
-			}
+			Z_LVAL(EX_T(opline->result.u.var).tmp_var) = isset;
 			break;
 		case ZEND_ISEMPTY:
 			if (!isset || !i_zend_is_true(*value)) {
@@ -9173,6 +9266,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+    zend_free_op free_op1;
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
+        &opline->op2.u.constant TSRMLS_CC);
+    if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -9592,6 +9698,11 @@
 	return zend_binary_assign_op_helper_SPEC_VAR_CONST(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ASSIGN_DII_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	return zend_binary_assign_op_helper_SPEC_VAR_CONST(dii_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+}
+
 static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_VAR_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	return zend_binary_assign_op_helper_SPEC_VAR_CONST(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -10842,11 +10953,7 @@
 
 			switch (opline->extended_value) {
 				case ZEND_ISSET:
-					if (isset && Z_TYPE_PP(value) == IS_NULL) {
-						result = 0;
-					} else {
-						result = isset;
-					}
+					result = isset;
 					break;
 				case ZEND_ISEMPTY:
 					if (!isset || !i_zend_is_true(*value)) {
@@ -10975,6 +11082,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+    zend_free_op free_op1, free_op2;
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
+        _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
+    if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+    zval_dtor(free_op2.var);
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -11395,6 +11515,11 @@
 	return zend_binary_assign_op_helper_SPEC_VAR_TMP(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ASSIGN_DII_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	return zend_binary_assign_op_helper_SPEC_VAR_TMP(dii_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+}
+
 static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_VAR_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	return zend_binary_assign_op_helper_SPEC_VAR_TMP(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -12591,11 +12716,7 @@
 
 			switch (opline->extended_value) {
 				case ZEND_ISSET:
-					if (isset && Z_TYPE_PP(value) == IS_NULL) {
-						result = 0;
-					} else {
-						result = isset;
-					}
+					result = isset;
 					break;
 				case ZEND_ISEMPTY:
 					if (!isset || !i_zend_is_true(*value)) {
@@ -12724,6 +12845,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+    zend_free_op free_op1, free_op2;
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
+        _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
+    if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+    if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -13144,6 +13278,11 @@
 	return zend_binary_assign_op_helper_SPEC_VAR_VAR(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ASSIGN_DII_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	return zend_binary_assign_op_helper_SPEC_VAR_VAR(dii_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+}
+
 static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_VAR_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	return zend_binary_assign_op_helper_SPEC_VAR_VAR(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -14391,11 +14530,7 @@
 
 			switch (opline->extended_value) {
 				case ZEND_ISSET:
-					if (isset && Z_TYPE_PP(value) == IS_NULL) {
-						result = 0;
-					} else {
-						result = isset;
-					}
+					result = isset;
 					break;
 				case ZEND_ISEMPTY:
 					if (!isset || !i_zend_is_true(*value)) {
@@ -14699,6 +14834,11 @@
 	return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ASSIGN_DII_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(dii_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+}
+
 static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_VAR_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	return zend_binary_assign_op_helper_SPEC_VAR_UNUSED(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -15116,6 +15256,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+    zend_free_op free_op1;
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        _get_zval_ptr_var(&opline->op1, EX(Ts), &free_op1 TSRMLS_CC),
+        _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
+    if (free_op1.var) {zval_ptr_dtor(&free_op1.var);};
+
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -15535,6 +15688,11 @@
 	return zend_binary_assign_op_helper_SPEC_VAR_CV(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ASSIGN_DII_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	return zend_binary_assign_op_helper_SPEC_VAR_CV(dii_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+}
+
 static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_VAR_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	return zend_binary_assign_op_helper_SPEC_VAR_CV(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -16777,11 +16935,7 @@
 
 			switch (opline->extended_value) {
 				case ZEND_ISSET:
-					if (isset && Z_TYPE_PP(value) == IS_NULL) {
-						result = 0;
-					} else {
-						result = isset;
-					}
+					result = isset;
 					break;
 				case ZEND_ISEMPTY:
 					if (!isset || !i_zend_is_true(*value)) {
@@ -17161,6 +17315,11 @@
 	return zend_binary_assign_op_helper_SPEC_UNUSED_CONST(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ASSIGN_DII_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	return zend_binary_assign_op_helper_SPEC_UNUSED_CONST(dii_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+}
+
 static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_UNUSED_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	return zend_binary_assign_op_helper_SPEC_UNUSED_CONST(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -17967,11 +18126,7 @@
 
 			switch (opline->extended_value) {
 				case ZEND_ISSET:
-					if (isset && Z_TYPE_PP(value) == IS_NULL) {
-						result = 0;
-					} else {
-						result = isset;
-					}
+					result = isset;
 					break;
 				case ZEND_ISEMPTY:
 					if (!isset || !i_zend_is_true(*value)) {
@@ -18273,6 +18428,11 @@
 	return zend_binary_assign_op_helper_SPEC_UNUSED_TMP(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ASSIGN_DII_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	return zend_binary_assign_op_helper_SPEC_UNUSED_TMP(dii_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+}
+
 static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_UNUSED_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	return zend_binary_assign_op_helper_SPEC_UNUSED_TMP(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -19024,11 +19184,7 @@
 
 			switch (opline->extended_value) {
 				case ZEND_ISSET:
-					if (isset && Z_TYPE_PP(value) == IS_NULL) {
-						result = 0;
-					} else {
-						result = isset;
-					}
+					result = isset;
 					break;
 				case ZEND_ISEMPTY:
 					if (!isset || !i_zend_is_true(*value)) {
@@ -19330,6 +19486,11 @@
 	return zend_binary_assign_op_helper_SPEC_UNUSED_VAR(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ASSIGN_DII_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	return zend_binary_assign_op_helper_SPEC_UNUSED_VAR(dii_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+}
+
 static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_UNUSED_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	return zend_binary_assign_op_helper_SPEC_UNUSED_VAR(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -20081,11 +20242,7 @@
 
 			switch (opline->extended_value) {
 				case ZEND_ISSET:
-					if (isset && Z_TYPE_PP(value) == IS_NULL) {
-						result = 0;
-					} else {
-						result = isset;
-					}
+					result = isset;
 					break;
 				case ZEND_ISEMPTY:
 					if (!isset || !i_zend_is_true(*value)) {
@@ -20386,6 +20543,11 @@
 	return zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ASSIGN_DII_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	return zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(dii_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+}
+
 static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_UNUSED_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	return zend_binary_assign_op_helper_SPEC_UNUSED_UNUSED(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -20648,6 +20810,11 @@
 	return zend_binary_assign_op_helper_SPEC_UNUSED_CV(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ASSIGN_DII_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	return zend_binary_assign_op_helper_SPEC_UNUSED_CV(dii_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+}
+
 static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_UNUSED_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	return zend_binary_assign_op_helper_SPEC_UNUSED_CV(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -21397,11 +21564,7 @@
 
 			switch (opline->extended_value) {
 				case ZEND_ISSET:
-					if (isset && Z_TYPE_PP(value) == IS_NULL) {
-						result = 0;
-					} else {
-						result = isset;
-					}
+					result = isset;
 					break;
 				case ZEND_ISEMPTY:
 					if (!isset || !i_zend_is_true(*value)) {
@@ -21712,6 +21875,7 @@
 
 	if (opline->op2.u.EA.type == ZEND_FETCH_STATIC_MEMBER) {
 		retval = zend_std_get_static_property(EX_T(opline->op2.u.var).class_entry, Z_STRVAL_P(varname), Z_STRLEN_P(varname), 0 TSRMLS_CC);
+
 	} else {
 		target_symbol_table = zend_get_target_symbol_table(opline, EX(Ts), type, varname TSRMLS_CC);
 /*
@@ -22750,11 +22914,7 @@
 
 	switch (opline->extended_value & ZEND_ISSET_ISEMPTY_MASK) {
 		case ZEND_ISSET:
-			if (isset && Z_TYPE_PP(value) == IS_NULL) {
-				Z_LVAL(EX_T(opline->result.u.var).tmp_var) = 0;
-			} else {
-				Z_LVAL(EX_T(opline->result.u.var).tmp_var) = isset;
-			}
+			Z_LVAL(EX_T(opline->result.u.var).tmp_var) = isset;
 			break;
 		case ZEND_ISEMPTY:
 			if (!isset || !i_zend_is_true(*value)) {
@@ -22877,6 +23037,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
+        &opline->op2.u.constant TSRMLS_CC);
+
+
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -23295,6 +23468,11 @@
 	return zend_binary_assign_op_helper_SPEC_CV_CONST(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ASSIGN_DII_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	return zend_binary_assign_op_helper_SPEC_CV_CONST(dii_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+}
+
 static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_CV_CONST_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	return zend_binary_assign_op_helper_SPEC_CV_CONST(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -24382,11 +24560,7 @@
 
 			switch (opline->extended_value) {
 				case ZEND_ISSET:
-					if (isset && Z_TYPE_PP(value) == IS_NULL) {
-						result = 0;
-					} else {
-						result = isset;
-					}
+					result = isset;
 					break;
 				case ZEND_ISEMPTY:
 					if (!isset || !i_zend_is_true(*value)) {
@@ -24513,6 +24687,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+    zend_free_op free_op2;
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
+        _get_zval_ptr_tmp(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+    zval_dtor(free_op2.var);
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -24932,6 +25119,11 @@
 	return zend_binary_assign_op_helper_SPEC_CV_TMP(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ASSIGN_DII_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	return zend_binary_assign_op_helper_SPEC_CV_TMP(dii_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+}
+
 static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_CV_TMP_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	return zend_binary_assign_op_helper_SPEC_CV_TMP(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -26022,11 +26214,7 @@
 
 			switch (opline->extended_value) {
 				case ZEND_ISSET:
-					if (isset && Z_TYPE_PP(value) == IS_NULL) {
-						result = 0;
-					} else {
-						result = isset;
-					}
+					result = isset;
 					break;
 				case ZEND_ISEMPTY:
 					if (!isset || !i_zend_is_true(*value)) {
@@ -26153,6 +26341,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+    zend_free_op free_op2;
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
+        _get_zval_ptr_var(&opline->op2, EX(Ts), &free_op2 TSRMLS_CC) TSRMLS_CC);
+
+    if (free_op2.var) {zval_ptr_dtor(&free_op2.var);};
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -26572,6 +26773,11 @@
 	return zend_binary_assign_op_helper_SPEC_CV_VAR(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ASSIGN_DII_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	return zend_binary_assign_op_helper_SPEC_CV_VAR(dii_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+}
+
 static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_CV_VAR_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	return zend_binary_assign_op_helper_SPEC_CV_VAR(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -27712,11 +27918,7 @@
 
 			switch (opline->extended_value) {
 				case ZEND_ISSET:
-					if (isset && Z_TYPE_PP(value) == IS_NULL) {
-						result = 0;
-					} else {
-						result = isset;
-					}
+					result = isset;
 					break;
 				case ZEND_ISEMPTY:
 					if (!isset || !i_zend_is_true(*value)) {
@@ -28017,6 +28219,11 @@
 	return zend_binary_assign_op_helper_SPEC_CV_UNUSED(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ASSIGN_DII_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	return zend_binary_assign_op_helper_SPEC_CV_UNUSED(dii_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+}
+
 static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_CV_UNUSED_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	return zend_binary_assign_op_helper_SPEC_CV_UNUSED(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -28336,6 +28543,19 @@
 	ZEND_VM_NEXT_OPCODE();
 }
 
+static int ZEND_FASTCALL  ZEND_DII_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+    zend_op *opline = EX(opline);
+
+
+    dii_function(&EX_T(opline->result.u.var).tmp_var,
+        _get_zval_ptr_cv(&opline->op1, EX(Ts), BP_VAR_R TSRMLS_CC),
+        _get_zval_ptr_cv(&opline->op2, EX(Ts), BP_VAR_R TSRMLS_CC) TSRMLS_CC);
+
+
+    ZEND_VM_NEXT_OPCODE();
+}
+
 static int ZEND_FASTCALL  ZEND_DIV_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	zend_op *opline = EX(opline);
@@ -28754,6 +28974,11 @@
 	return zend_binary_assign_op_helper_SPEC_CV_CV(div_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
 }
 
+static int ZEND_FASTCALL  ZEND_ASSIGN_DII_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
+{
+	return zend_binary_assign_op_helper_SPEC_CV_CV(dii_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
+}
+
 static int ZEND_FASTCALL  ZEND_ASSIGN_MOD_SPEC_CV_CV_HANDLER(ZEND_OPCODE_HANDLER_ARGS)
 {
 	return zend_binary_assign_op_helper_SPEC_CV_CV(mod_function, ZEND_OPCODE_HANDLER_ARGS_PASSTHRU);
@@ -29889,11 +30114,7 @@
 
 			switch (opline->extended_value) {
 				case ZEND_ISSET:
-					if (isset && Z_TYPE_PP(value) == IS_NULL) {
-						result = 0;
-					} else {
-						result = isset;
-					}
+					result = isset;
 					break;
 				case ZEND_ISEMPTY:
 					if (!isset || !i_zend_is_true(*value)) {
@@ -32990,15 +33211,31 @@
   	ZEND_NULL_HANDLER,
   	ZEND_NULL_HANDLER,
   	ZEND_NULL_HANDLER,
+  	ZEND_DII_SPEC_CONST_CONST_HANDLER,
+  	ZEND_DII_SPEC_CONST_TMP_HANDLER,
+  	ZEND_DII_SPEC_CONST_VAR_HANDLER,
   	ZEND_NULL_HANDLER,
+  	ZEND_DII_SPEC_CONST_CV_HANDLER,
+  	ZEND_DII_SPEC_TMP_CONST_HANDLER,
+  	ZEND_DII_SPEC_TMP_TMP_HANDLER,
+  	ZEND_DII_SPEC_TMP_VAR_HANDLER,
   	ZEND_NULL_HANDLER,
+  	ZEND_DII_SPEC_TMP_CV_HANDLER,
+  	ZEND_DII_SPEC_VAR_CONST_HANDLER,
+  	ZEND_DII_SPEC_VAR_TMP_HANDLER,
+  	ZEND_DII_SPEC_VAR_VAR_HANDLER,
   	ZEND_NULL_HANDLER,
+  	ZEND_DII_SPEC_VAR_CV_HANDLER,
   	ZEND_NULL_HANDLER,
   	ZEND_NULL_HANDLER,
   	ZEND_NULL_HANDLER,
   	ZEND_NULL_HANDLER,
   	ZEND_NULL_HANDLER,
+  	ZEND_DII_SPEC_CV_CONST_HANDLER,
+  	ZEND_DII_SPEC_CV_TMP_HANDLER,
+  	ZEND_DII_SPEC_CV_VAR_HANDLER,
   	ZEND_NULL_HANDLER,
+  	ZEND_DII_SPEC_CV_CV_HANDLER,
   	ZEND_NULL_HANDLER,
   	ZEND_NULL_HANDLER,
   	ZEND_NULL_HANDLER,
@@ -33009,37 +33246,21 @@
   	ZEND_NULL_HANDLER,
   	ZEND_NULL_HANDLER,
   	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
-  	ZEND_NULL_HANDLER,
+  	ZEND_ASSIGN_DII_SPEC_VAR_CONST_HANDLER,
+  	ZEND_ASSIGN_DII_SPEC_VAR_TMP_HANDLER,
+  	ZEND_ASSIGN_DII_SPEC_VAR_VAR_HANDLER,
+  	ZEND_ASSIGN_DII_SPEC_VAR_UNUSED_HANDLER,
+  	ZEND_ASSIGN_DII_SPEC_VAR_CV_HANDLER,
+  	ZEND_ASSIGN_DII_SPEC_UNUSED_CONST_HANDLER,
+  	ZEND_ASSIGN_DII_SPEC_UNUSED_TMP_HANDLER,
+  	ZEND_ASSIGN_DII_SPEC_UNUSED_VAR_HANDLER,
+  	ZEND_ASSIGN_DII_SPEC_UNUSED_UNUSED_HANDLER,
+  	ZEND_ASSIGN_DII_SPEC_UNUSED_CV_HANDLER,
+  	ZEND_ASSIGN_DII_SPEC_CV_CONST_HANDLER,
+  	ZEND_ASSIGN_DII_SPEC_CV_TMP_HANDLER,
+  	ZEND_ASSIGN_DII_SPEC_CV_VAR_HANDLER,
+  	ZEND_ASSIGN_DII_SPEC_CV_UNUSED_HANDLER,
+  	ZEND_ASSIGN_DII_SPEC_CV_CV_HANDLER,
   	ZEND_NULL_HANDLER,
   	ZEND_NULL_HANDLER,
   	ZEND_NULL_HANDLER,
