/** * Commits the active transaction in the connection * * @param boolean nesting * @return boolean */ PHP_METHOD(Pdm_Db_Adapter_AbstractPdo, commit) { int ZEPHIR_LAST_CALL_STATUS; zval *nesting_param = NULL, *transactionLevel = NULL, *savepointName = NULL, *_0, *_1 = NULL; zend_bool nesting; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 1, &nesting_param); if (!nesting_param) { nesting = 1; } else { nesting = zephir_get_boolval(nesting_param); } _0 = zephir_fetch_nproperty_this(this_ptr, SL("transactionLevel"), PH_NOISY_CC); ZEPHIR_CPY_WRT(transactionLevel, _0); if (!(zephir_is_true(transactionLevel))) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(pdm_db_adapter_exception_ce, "There is no active transaction", "pdm/db/adapter/abstractpdo.zep", 473); return; } if (ZEPHIR_IS_LONG(transactionLevel, 1)) { RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("transactionLevel") TSRMLS_CC)); _0 = zephir_fetch_nproperty_this(this_ptr, SL("pdo"), PH_NOISY_CC); ZEPHIR_RETURN_CALL_METHOD(_0, "commit", NULL); zephir_check_call_status(); RETURN_MM(); } else { if (zephir_is_true(transactionLevel)) { if (nesting) { ZEPHIR_CALL_METHOD(&_1, this_ptr, "isnestedtransactionswithsavepoints", NULL); zephir_check_call_status(); if (zephir_is_true(_1)) { ZEPHIR_CALL_METHOD(&savepointName, this_ptr, "getnestedtransactionsavepointname", NULL); zephir_check_call_status(); RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("transactionLevel") TSRMLS_CC)); ZEPHIR_RETURN_CALL_METHOD(this_ptr, "releasesavepoint", NULL, savepointName); zephir_check_call_status(); RETURN_MM(); } } } } if (ZEPHIR_GT_LONG(transactionLevel, 0)) { RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("transactionLevel") TSRMLS_CC)); } RETURN_MM_BOOL(0); }
/** * Remove all the transactions from the manager */ PHP_METHOD(Phalcon_Mvc_Model_Transaction_Manager, collectTransactions) { HashTable *_2$$3; HashPosition _1$$3; zval *transactions = NULL, *_0$$3 = NULL, **_3$$3; ZEPHIR_MM_GROW(); ZEPHIR_OBS_VAR(transactions); zephir_read_property_this(&transactions, this_ptr, SL("_transactions"), PH_NOISY_CC); if (zephir_fast_count_int(transactions TSRMLS_CC)) { ZEPHIR_INIT_VAR(_0$$3); zephir_is_iterable(transactions, &_2$$3, &_1$$3, 0, 0, "phalcon/mvc/model/transaction/manager.zep", 311); for ( ; zend_hash_get_current_data_ex(_2$$3, (void**) &_3$$3, &_1$$3) == SUCCESS ; zend_hash_move_forward_ex(_2$$3, &_1$$3) ) { ZEPHIR_GET_HVALUE(_0$$3, _3$$3); RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("_number") TSRMLS_CC)); } zephir_update_property_this(getThis(), SL("_transactions"), ZEPHIR_GLOBAL(global_null) TSRMLS_CC); } ZEPHIR_MM_RESTORE(); }
/** * Removes transactions from the TransactionManager */ PHP_METHOD(Phalcon_Mvc_Model_Transaction_Manager, _collectTransaction) { HashTable *_1$$3; HashPosition _0$$3; zval *transaction, *transactions = NULL, *newTransactions = NULL, *managedTransaction = NULL, **_2$$3; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &transaction); ZEPHIR_OBS_VAR(transactions); zephir_read_property_this(&transactions, this_ptr, SL("_transactions"), PH_NOISY_CC); if (zephir_fast_count_int(transactions TSRMLS_CC)) { ZEPHIR_INIT_VAR(newTransactions); array_init(newTransactions); zephir_is_iterable(transactions, &_1$$3, &_0$$3, 0, 0, "phalcon/mvc/model/transaction/manager.zep", 295); for ( ; zend_hash_get_current_data_ex(_1$$3, (void**) &_2$$3, &_0$$3) == SUCCESS ; zend_hash_move_forward_ex(_1$$3, &_0$$3) ) { ZEPHIR_GET_HVALUE(managedTransaction, _2$$3); if (!ZEPHIR_IS_EQUAL(managedTransaction, transaction)) { zephir_array_append(&newTransactions, transaction, PH_SEPARATE, "phalcon/mvc/model/transaction/manager.zep", 289); } else { RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("_number") TSRMLS_CC)); } } zephir_update_property_this(getThis(), SL("_transactions"), newTransactions TSRMLS_CC); } ZEPHIR_MM_RESTORE(); }
PHP_METHOD(Test_Bench_Foo, post_dec_prop) { int _1; zend_bool _0; zval *n, *i = NULL, *_2 = NULL; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &n); ZEPHIR_CPY_WRT(_2, n); _1 = 1; _0 = 0; if (ZEPHIR_GE_LONG(_2, _1)) { while (1) { if (_0) { _1++; if (!(ZEPHIR_GE_LONG(_2, _1))) { break; } } else { _0 = 1; } ZEPHIR_INIT_NVAR(i); ZVAL_LONG(i, _1); RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("b") TSRMLS_CC)); } } ZEPHIR_MM_RESTORE(); }
PHP_METHOD(Test_Assign, testPropertyDecr) { zval *_0; ZEPHIR_INIT_ZVAL_NREF(_0); ZVAL_LONG(_0, 2); zephir_update_property_this(this_ptr, SL("testVar"), _0 TSRMLS_CC); RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("testVar") TSRMLS_CC)); RETURN_MEMBER(this_ptr, "testVar"); }
PHP_METHOD(Test_Bench_Foo, post_dec_prop) { int _1; zend_bool _0; zval *n, n_sub, i, _2; zval this_zv; zval *this_ptr = getThis(); if (EXPECTED(this_ptr)) { ZVAL_OBJ(&this_zv, Z_OBJ_P(this_ptr)); this_ptr = &this_zv; } else this_ptr = NULL; ZVAL_UNDEF(&n_sub); ZVAL_UNDEF(&i); ZVAL_UNDEF(&_2); ZEPHIR_MM_GROW(); zephir_fetch_params(1, 1, 0, &n); ZEPHIR_CPY_WRT(&_2, n); _1 = 1; _0 = 0; if (ZEPHIR_GE_LONG(&_2, _1)) { while (1) { if (_0) { _1++; if (!(ZEPHIR_GE_LONG(&_2, _1))) { break; } } else { _0 = 1; } ZEPHIR_INIT_NVAR(&i); ZVAL_LONG(&i, _1); RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("b") TSRMLS_CC)); } } ZEPHIR_MM_RESTORE(); }
/** * Commits the active transaction in the connection */ PHP_METHOD(Phalcon_Db_Adapter_Pdo, commit) { int transactionLevel, ZEPHIR_LAST_CALL_STATUS; zval *nesting_param = NULL, *pdo, *eventsManager = NULL, *savepointName = NULL, *_0, *_1, *_2 = NULL, *_5 = NULL; zend_bool nesting, _3, _4; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 1, &nesting_param); if (!nesting_param) { nesting = 1; } else { nesting = zephir_get_boolval(nesting_param); } ZEPHIR_OBS_VAR(pdo); zephir_read_property_this(&pdo, this_ptr, SL("_pdo"), PH_NOISY_CC); if (Z_TYPE_P(pdo) != IS_OBJECT) { RETURN_MM_BOOL(0); } ZEPHIR_OBS_VAR(_0); zephir_read_property_this(&_0, this_ptr, SL("_transactionLevel"), PH_NOISY_CC); transactionLevel = zephir_get_intval(_0); if (!(transactionLevel)) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "There is no active transaction", "phalcon/db/adapter/pdo.zep", 615); return; } if (transactionLevel == 1) { _1 = zephir_fetch_nproperty_this(this_ptr, SL("_eventsManager"), PH_NOISY_CC); ZEPHIR_CPY_WRT(eventsManager, _1); if (Z_TYPE_P(eventsManager) == IS_OBJECT) { ZEPHIR_INIT_VAR(_2); ZVAL_STRING(_2, "db:commitTransaction", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(NULL, eventsManager, "fire", NULL, 0, _2, this_ptr); zephir_check_temp_parameter(_2); zephir_check_call_status(); } RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("_transactionLevel") TSRMLS_CC)); ZEPHIR_RETURN_CALL_METHOD(pdo, "commit", NULL, 0); zephir_check_call_status(); RETURN_MM(); } else { _3 = (transactionLevel) ? 1 : 0; if (_3) { _3 = nesting; } _4 = _3; if (_4) { ZEPHIR_CALL_METHOD(&_5, this_ptr, "isnestedtransactionswithsavepoints", NULL, 0); zephir_check_call_status(); _4 = zephir_is_true(_5); } if (_4) { _1 = zephir_fetch_nproperty_this(this_ptr, SL("_eventsManager"), PH_NOISY_CC); ZEPHIR_CPY_WRT(eventsManager, _1); ZEPHIR_CALL_METHOD(&savepointName, this_ptr, "getnestedtransactionsavepointname", NULL, 0); zephir_check_call_status(); if (Z_TYPE_P(eventsManager) == IS_OBJECT) { ZEPHIR_INIT_NVAR(_2); ZVAL_STRING(_2, "db:releaseSavepoint", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(NULL, eventsManager, "fire", NULL, 0, _2, this_ptr, savepointName); zephir_check_temp_parameter(_2); zephir_check_call_status(); } RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("_transactionLevel") TSRMLS_CC)); ZEPHIR_RETURN_CALL_METHOD(this_ptr, "releasesavepoint", NULL, 0, savepointName); zephir_check_call_status(); RETURN_MM(); } } if (transactionLevel > 0) { RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("_transactionLevel") TSRMLS_CC)); } RETURN_MM_BOOL(0); }
/** * Rollbacks the active transaction in the connection */ PHP_METHOD(Phalcon_Db_Adapter_Pdo, rollback) { int ZEPHIR_LAST_CALL_STATUS, transactionLevel = 0; zval *nesting_param = NULL, *pdo = NULL, *eventsManager = NULL, *savepointName = NULL, *_0, *_1$$5, *_2$$6, *_5$$7 = NULL, *_6$$8, *_7$$9; zend_bool nesting, _3$$7, _4$$7; ZEPHIR_MM_GROW(); zephir_fetch_params(1, 0, 1, &nesting_param); if (!nesting_param) { nesting = 1; } else { nesting = zephir_get_boolval(nesting_param); } ZEPHIR_OBS_VAR(pdo); zephir_read_property_this(&pdo, this_ptr, SL("_pdo"), PH_NOISY_CC); if (Z_TYPE_P(pdo) != IS_OBJECT) { RETURN_MM_BOOL(0); } ZEPHIR_OBS_VAR(_0); zephir_read_property_this(&_0, this_ptr, SL("_transactionLevel"), PH_NOISY_CC); transactionLevel = zephir_get_intval(_0); if (!(transactionLevel)) { ZEPHIR_THROW_EXCEPTION_DEBUG_STR(phalcon_db_exception_ce, "There is no active transaction", "phalcon/db/adapter/pdo.zep", 588); return; } if (transactionLevel == 1) { _1$$5 = zephir_fetch_nproperty_this(this_ptr, SL("_eventsManager"), PH_NOISY_CC); ZEPHIR_CPY_WRT(eventsManager, _1$$5); if (Z_TYPE_P(eventsManager) == IS_OBJECT) { ZEPHIR_INIT_VAR(_2$$6); ZVAL_STRING(_2$$6, "db:rollbackTransaction", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(NULL, eventsManager, "fire", NULL, 0, _2$$6, this_ptr); zephir_check_temp_parameter(_2$$6); zephir_check_call_status(); } RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("_transactionLevel") TSRMLS_CC)); ZEPHIR_RETURN_CALL_METHOD(pdo, "rollback", NULL, 0); zephir_check_call_status(); RETURN_MM(); } else { _3$$7 = (transactionLevel) ? 1 : 0; if (_3$$7) { _3$$7 = nesting; } _4$$7 = _3$$7; if (_4$$7) { ZEPHIR_CALL_METHOD(&_5$$7, this_ptr, "isnestedtransactionswithsavepoints", NULL, 0); zephir_check_call_status(); _4$$7 = zephir_is_true(_5$$7); } if (_4$$7) { ZEPHIR_CALL_METHOD(&savepointName, this_ptr, "getnestedtransactionsavepointname", NULL, 0); zephir_check_call_status(); _6$$8 = zephir_fetch_nproperty_this(this_ptr, SL("_eventsManager"), PH_NOISY_CC); ZEPHIR_CPY_WRT(eventsManager, _6$$8); if (Z_TYPE_P(eventsManager) == IS_OBJECT) { ZEPHIR_INIT_VAR(_7$$9); ZVAL_STRING(_7$$9, "db:rollbackSavepoint", ZEPHIR_TEMP_PARAM_COPY); ZEPHIR_CALL_METHOD(NULL, eventsManager, "fire", NULL, 0, _7$$9, this_ptr, savepointName); zephir_check_temp_parameter(_7$$9); zephir_check_call_status(); } RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("_transactionLevel") TSRMLS_CC)); ZEPHIR_RETURN_CALL_METHOD(this_ptr, "rollbacksavepoint", NULL, 0, savepointName); zephir_check_call_status(); RETURN_MM(); } } if (transactionLevel > 0) { RETURN_ON_FAILURE(zephir_property_decr(this_ptr, SL("_transactionLevel") TSRMLS_CC)); } RETURN_MM_BOOL(0); }