Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(72)

Side by Side Diff: Source/modules/webdatabase/SQLTransactionStateMachine.h

Issue 397733004: Allow assertions to be enabled in Blink Release builds. (Closed) Base URL: svn://svn.chromium.org/blink/trunk
Patch Set: Rebased. Created 6 years, 5 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
OLDNEW
1 /* 1 /*
2 * Copyright (C) 2013 Apple Inc. All rights reserved. 2 * Copyright (C) 2013 Apple Inc. All rights reserved.
3 * 3 *
4 * Redistribution and use in source and binary forms, with or without 4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions 5 * modification, are permitted provided that the following conditions
6 * are met: 6 * are met:
7 * 1. Redistributions of source code must retain the above copyright 7 * 1. Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer. 8 * notice, this list of conditions and the following disclaimer.
9 * 2. Redistributions in binary form must reproduce the above copyright 9 * 2. Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the 10 * notice, this list of conditions and the following disclaimer in the
(...skipping 30 matching lines...) Expand all
41 41
42 typedef SQLTransactionState (T::* StateFunction)(); 42 typedef SQLTransactionState (T::* StateFunction)();
43 virtual StateFunction stateFunctionFor(SQLTransactionState) = 0; 43 virtual StateFunction stateFunctionFor(SQLTransactionState) = 0;
44 44
45 void setStateToRequestedState(); 45 void setStateToRequestedState();
46 void runStateMachine(); 46 void runStateMachine();
47 47
48 SQLTransactionState m_nextState; 48 SQLTransactionState m_nextState;
49 SQLTransactionState m_requestedState; 49 SQLTransactionState m_requestedState;
50 50
51 #ifndef NDEBUG 51 #if ENABLE(ASSERT)
52 // The state audit trail (i.e. bread crumbs) keeps track of up to the last 52 // The state audit trail (i.e. bread crumbs) keeps track of up to the last
53 // s_sizeOfStateAuditTrail states that the state machine enters. The audit 53 // s_sizeOfStateAuditTrail states that the state machine enters. The audit
54 // trail is updated before entering each state. This is for debugging use 54 // trail is updated before entering each state. This is for debugging use
55 // only. 55 // only.
56 static const int s_sizeOfStateAuditTrail = 20; 56 static const int s_sizeOfStateAuditTrail = 20;
57 int m_nextStateAuditEntry; 57 int m_nextStateAuditEntry;
58 SQLTransactionState m_stateAuditTrail[s_sizeOfStateAuditTrail]; 58 SQLTransactionState m_stateAuditTrail[s_sizeOfStateAuditTrail];
59 #endif 59 #endif
60 }; 60 };
61 61
62 #if !LOG_DISABLED 62 #if !LOG_DISABLED
63 extern const char* nameForSQLTransactionState(SQLTransactionState); 63 extern const char* nameForSQLTransactionState(SQLTransactionState);
64 #endif 64 #endif
65 65
66 template<typename T> 66 template<typename T>
67 SQLTransactionStateMachine<T>::SQLTransactionStateMachine() 67 SQLTransactionStateMachine<T>::SQLTransactionStateMachine()
68 : m_nextState(SQLTransactionState::Idle) 68 : m_nextState(SQLTransactionState::Idle)
69 , m_requestedState(SQLTransactionState::Idle) 69 , m_requestedState(SQLTransactionState::Idle)
70 #ifndef NDEBUG 70 #if ENABLE(ASSERT)
71 , m_nextStateAuditEntry(0) 71 , m_nextStateAuditEntry(0)
72 #endif 72 #endif
73 { 73 {
74 #ifndef NDEBUG 74 #if ENABLE(ASSERT)
75 for (int i = 0; i < s_sizeOfStateAuditTrail; i++) 75 for (int i = 0; i < s_sizeOfStateAuditTrail; i++)
76 m_stateAuditTrail[i] = SQLTransactionState::NumberOfStates; 76 m_stateAuditTrail[i] = SQLTransactionState::NumberOfStates;
77 #endif 77 #endif
78 } 78 }
79 79
80 template<typename T> 80 template<typename T>
81 void SQLTransactionStateMachine<T>::setStateToRequestedState() 81 void SQLTransactionStateMachine<T>::setStateToRequestedState()
82 { 82 {
83 ASSERT(m_nextState == SQLTransactionState::Idle); 83 ASSERT(m_nextState == SQLTransactionState::Idle);
84 ASSERT(m_requestedState != SQLTransactionState::Idle); 84 ASSERT(m_requestedState != SQLTransactionState::Idle);
85 m_nextState = m_requestedState; 85 m_nextState = m_requestedState;
86 m_requestedState = SQLTransactionState::Idle; 86 m_requestedState = SQLTransactionState::Idle;
87 } 87 }
88 88
89 template<typename T> 89 template<typename T>
90 void SQLTransactionStateMachine<T>::runStateMachine() 90 void SQLTransactionStateMachine<T>::runStateMachine()
91 { 91 {
92 ASSERT(SQLTransactionState::End < SQLTransactionState::Idle); 92 ASSERT(SQLTransactionState::End < SQLTransactionState::Idle);
93 while (m_nextState > SQLTransactionState::Idle) { 93 while (m_nextState > SQLTransactionState::Idle) {
94 ASSERT(m_nextState < SQLTransactionState::NumberOfStates); 94 ASSERT(m_nextState < SQLTransactionState::NumberOfStates);
95 StateFunction stateFunction = stateFunctionFor(m_nextState); 95 StateFunction stateFunction = stateFunctionFor(m_nextState);
96 ASSERT(stateFunction); 96 ASSERT(stateFunction);
97 97
98 #ifndef NDEBUG 98 #if ENABLE(ASSERT)
99 m_stateAuditTrail[m_nextStateAuditEntry] = m_nextState; 99 m_stateAuditTrail[m_nextStateAuditEntry] = m_nextState;
100 m_nextStateAuditEntry = (m_nextStateAuditEntry + 1) % s_sizeOfStateAudit Trail; 100 m_nextStateAuditEntry = (m_nextStateAuditEntry + 1) % s_sizeOfStateAudit Trail;
101 #endif 101 #endif
102 m_nextState = (static_cast<T*>(this)->*stateFunction)(); 102 m_nextState = (static_cast<T*>(this)->*stateFunction)();
103 } 103 }
104 } 104 }
105 105
106 } // namespace WebCore 106 } // namespace WebCore
107 107
108 #endif // SQLTransactionStateMachine_h 108 #endif // SQLTransactionStateMachine_h
OLDNEW
« no previous file with comments | « Source/modules/webdatabase/DatabaseThread.cpp ('k') | Source/modules/webdatabase/sqlite/SQLiteStatement.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698