Skip to content

Commit d85b062

Browse files
committed
don't limit counters to 32-bit
1 parent 80c1864 commit d85b062

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+226
-217
lines changed

dtool/src/dtoolbase/atomicAdjustDummyImpl.I

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
// Description: Atomically increments the indicated variable.
2424
////////////////////////////////////////////////////////////////////
2525
INLINE void AtomicAdjustDummyImpl::
26-
inc(TVOLATILE PN_int32 &var) {
26+
inc(TVOLATILE AtomicAdjustDummyImpl::Integer &var) {
2727
++var;
2828
}
2929

@@ -35,7 +35,7 @@ inc(TVOLATILE PN_int32 &var) {
3535
// is zero.
3636
////////////////////////////////////////////////////////////////////
3737
INLINE bool AtomicAdjustDummyImpl::
38-
dec(TVOLATILE PN_int32 &var) {
38+
dec(TVOLATILE AtomicAdjustDummyImpl::Integer &var) {
3939
return (--var) != 0;
4040
}
4141

@@ -46,7 +46,7 @@ dec(TVOLATILE PN_int32 &var) {
4646
// delta to be negative.
4747
////////////////////////////////////////////////////////////////////
4848
INLINE void AtomicAdjustDummyImpl::
49-
add(TVOLATILE PN_int32 &var, PN_int32 delta) {
49+
add(TVOLATILE AtomicAdjustDummyImpl::Integer &var, AtomicAdjustDummyImpl::Integer delta) {
5050
var += delta;
5151
}
5252

@@ -56,9 +56,9 @@ add(TVOLATILE PN_int32 &var, PN_int32 delta) {
5656
// Description: Atomically changes the indicated variable and
5757
// returns the original value.
5858
////////////////////////////////////////////////////////////////////
59-
INLINE PN_int32 AtomicAdjustDummyImpl::
60-
set(TVOLATILE PN_int32 &var, PN_int32 new_value) {
61-
PN_int32 orig_value = var;
59+
INLINE AtomicAdjustDummyImpl::Integer AtomicAdjustDummyImpl::
60+
set(TVOLATILE AtomicAdjustDummyImpl::Integer &var, AtomicAdjustDummyImpl::Integer new_value) {
61+
Integer orig_value = var;
6262
var = new_value;
6363
return orig_value;
6464
}
@@ -72,8 +72,8 @@ set(TVOLATILE PN_int32 &var, PN_int32 new_value) {
7272
// asynchronously setting, incrementing, or decrementing
7373
// (via other AtomicAjust methods).
7474
////////////////////////////////////////////////////////////////////
75-
INLINE PN_int32 AtomicAdjustDummyImpl::
76-
get(const TVOLATILE PN_int32 &var) {
75+
INLINE AtomicAdjustDummyImpl::Integer AtomicAdjustDummyImpl::
76+
get(const TVOLATILE AtomicAdjustDummyImpl::Integer &var) {
7777
return var;
7878
}
7979

@@ -114,10 +114,10 @@ get_ptr(void * const TVOLATILE &var) {
114114
// The caller can test for success by comparing
115115
// return_value == old_value.
116116
////////////////////////////////////////////////////////////////////
117-
INLINE PN_int32 AtomicAdjustDummyImpl::
118-
compare_and_exchange(TVOLATILE PN_int32 &mem, PN_int32 old_value,
119-
PN_int32 new_value) {
120-
PN_int32 orig_value = mem;
117+
INLINE AtomicAdjustDummyImpl::Integer AtomicAdjustDummyImpl::
118+
compare_and_exchange(TVOLATILE AtomicAdjustDummyImpl::Integer &mem, AtomicAdjustDummyImpl::Integer old_value,
119+
AtomicAdjustDummyImpl::Integer new_value) {
120+
Integer orig_value = mem;
121121
if (mem == old_value) {
122122
mem = new_value;
123123
}

dtool/src/dtoolbase/atomicAdjustDummyImpl.h

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -32,18 +32,20 @@
3232
////////////////////////////////////////////////////////////////////
3333
class EXPCL_DTOOL AtomicAdjustDummyImpl {
3434
public:
35-
INLINE static void inc(TVOLATILE PN_int32 &var);
36-
INLINE static bool dec(TVOLATILE PN_int32 &var);
37-
INLINE static void add(TVOLATILE PN_int32 &var, PN_int32 delta);
38-
INLINE static PN_int32 set(TVOLATILE PN_int32 &var, PN_int32 new_value);
39-
INLINE static PN_int32 get(const TVOLATILE PN_int32 &var);
35+
typedef int Integer;
36+
37+
INLINE static void inc(TVOLATILE Integer &var);
38+
INLINE static bool dec(TVOLATILE Integer &var);
39+
INLINE static void add(TVOLATILE Integer &var, Integer delta);
40+
INLINE static Integer set(TVOLATILE Integer &var, Integer new_value);
41+
INLINE static Integer get(const TVOLATILE Integer &var);
4042

4143
INLINE static void *set_ptr(void * TVOLATILE &var, void *new_value);
4244
INLINE static void *get_ptr(void * const TVOLATILE &var);
4345

44-
INLINE static PN_int32 compare_and_exchange(TVOLATILE PN_int32 &mem,
45-
PN_int32 old_value,
46-
PN_int32 new_value);
46+
INLINE static Integer compare_and_exchange(TVOLATILE Integer &mem,
47+
Integer old_value,
48+
Integer new_value);
4749

4850
INLINE static void *compare_and_exchange_ptr(void * TVOLATILE &mem,
4951
void *old_value,

dtool/src/dtoolbase/atomicAdjustI386Impl.I

Lines changed: 16 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -23,10 +23,10 @@
2323
// Description: Atomically increments the indicated variable.
2424
////////////////////////////////////////////////////////////////////
2525
INLINE void AtomicAdjustI386Impl::
26-
inc(TVOLATILE PN_int32 &var) {
26+
inc(TVOLATILE AtomicAdjustI386Impl::Integer &var) {
2727
#ifdef _M_IX86
2828
// Windows case
29-
TVOLATILE PN_int32 *var_ptr = &var;
29+
TVOLATILE Integer *var_ptr = &var;
3030
__asm {
3131
mov edx, var_ptr;
3232
lock inc dword ptr [edx];
@@ -47,11 +47,11 @@ inc(TVOLATILE PN_int32 &var) {
4747
// is zero.
4848
////////////////////////////////////////////////////////////////////
4949
INLINE bool AtomicAdjustI386Impl::
50-
dec(TVOLATILE PN_int32 &var) {
50+
dec(TVOLATILE AtomicAdjustI386Impl::Integer &var) {
5151
unsigned char c;
5252
#ifdef _M_IX86
5353
// Windows case
54-
TVOLATILE PN_int32 *var_ptr = &var;
54+
TVOLATILE Integer *var_ptr = &var;
5555
__asm {
5656
mov edx, var_ptr;
5757
lock dec dword ptr [edx];
@@ -73,8 +73,8 @@ dec(TVOLATILE PN_int32 &var) {
7373
// delta to be negative.
7474
////////////////////////////////////////////////////////////////////
7575
INLINE void AtomicAdjustI386Impl::
76-
add(TVOLATILE PN_int32 &var, PN_int32 delta) {
77-
PN_int32 orig_value = var;
76+
add(TVOLATILE AtomicAdjustI386Impl::Integer &var, AtomicAdjustI386Impl::Integer delta) {
77+
Integer orig_value = var;
7878
while (compare_and_exchange(var, orig_value, orig_value + delta) != orig_value) {
7979
orig_value = var;
8080
}
@@ -86,9 +86,9 @@ add(TVOLATILE PN_int32 &var, PN_int32 delta) {
8686
// Description: Atomically changes the indicated variable and
8787
// returns the original value.
8888
////////////////////////////////////////////////////////////////////
89-
INLINE PN_int32 AtomicAdjustI386Impl::
90-
set(TVOLATILE PN_int32 &var, PN_int32 new_value) {
91-
PN_int32 orig_value = var;
89+
INLINE AtomicAdjustI386Impl::Integer AtomicAdjustI386Impl::
90+
set(TVOLATILE AtomicAdjustI386Impl::Integer &var, AtomicAdjustI386Impl::Integer new_value) {
91+
Integer orig_value = var;
9292
var = new_value;
9393
return orig_value;
9494
}
@@ -102,8 +102,8 @@ set(TVOLATILE PN_int32 &var, PN_int32 new_value) {
102102
// asynchronously setting, incrementing, or decrementing
103103
// (via other AtomicAjust methods).
104104
////////////////////////////////////////////////////////////////////
105-
INLINE PN_int32 AtomicAdjustI386Impl::
106-
get(const TVOLATILE PN_int32 &var) {
105+
INLINE AtomicAdjustI386Impl::Integer AtomicAdjustI386Impl::
106+
get(const TVOLATILE AtomicAdjustI386Impl::Integer &var) {
107107
return var;
108108
}
109109

@@ -153,13 +153,13 @@ get_ptr(void * const TVOLATILE &var) {
153153
// return orig_value;
154154
//
155155
////////////////////////////////////////////////////////////////////
156-
INLINE PN_int32 AtomicAdjustI386Impl::
157-
compare_and_exchange(TVOLATILE PN_int32 &mem, PN_int32 old_value,
158-
PN_int32 new_value) {
159-
PN_int32 prev;
156+
INLINE AtomicAdjustI386Impl::Integer AtomicAdjustI386Impl::
157+
compare_and_exchange(TVOLATILE AtomicAdjustI386Impl::Integer &mem, AtomicAdjustI386Impl::Integer old_value,
158+
AtomicAdjustI386Impl::Integer new_value) {
159+
Integer prev;
160160
#ifdef _M_IX86
161161
// Windows case
162-
TVOLATILE PN_int32 *mem_ptr = &mem;
162+
TVOLATILE Integer *mem_ptr = &mem;
163163
__asm {
164164
mov edx, mem_ptr;
165165
mov ecx, new_value;

dtool/src/dtoolbase/atomicAdjustI386Impl.h

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,20 @@
3535
////////////////////////////////////////////////////////////////////
3636
class EXPCL_DTOOL AtomicAdjustI386Impl {
3737
public:
38-
INLINE static void inc(TVOLATILE PN_int32 &var);
39-
INLINE static bool dec(TVOLATILE PN_int32 &var);
40-
INLINE static void add(TVOLATILE PN_int32 &var, PN_int32 delta);
41-
INLINE static PN_int32 set(TVOLATILE PN_int32 &var, PN_int32 new_value);
42-
INLINE static PN_int32 get(const TVOLATILE PN_int32 &var);
38+
typedef PN_int32 Integer;
39+
40+
INLINE static void inc(TVOLATILE Integer &var);
41+
INLINE static bool dec(TVOLATILE Integer &var);
42+
INLINE static void add(TVOLATILE Integer &var, Integer delta);
43+
INLINE static Integer set(TVOLATILE Integer &var, Integer new_value);
44+
INLINE static Integer get(const TVOLATILE Integer &var);
4345

4446
INLINE static void *set_ptr(void * TVOLATILE &var, void *new_value);
4547
INLINE static void *get_ptr(void * const TVOLATILE &var);
4648

47-
INLINE static PN_int32 compare_and_exchange(TVOLATILE PN_int32 &mem,
48-
PN_int32 old_value,
49-
PN_int32 new_value);
49+
INLINE static Integer compare_and_exchange(TVOLATILE Integer &mem,
50+
Integer old_value,
51+
Integer new_value);
5052

5153
INLINE static void *compare_and_exchange_ptr(void * TVOLATILE &mem,
5254
void *old_value,

dtool/src/dtoolbase/atomicAdjustPosixImpl.I

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,7 @@
2323
// Description: Atomically increments the indicated variable.
2424
////////////////////////////////////////////////////////////////////
2525
INLINE void AtomicAdjustPosixImpl::
26-
inc(TVOLATILE PN_int32 &var) {
26+
inc(TVOLATILE AtomicAdjustPosixImpl::Integer &var) {
2727
pthread_mutex_lock(&_mutex);
2828
++var;
2929
pthread_mutex_unlock(&_mutex);
@@ -37,9 +37,9 @@ inc(TVOLATILE PN_int32 &var) {
3737
// is zero.
3838
////////////////////////////////////////////////////////////////////
3939
INLINE bool AtomicAdjustPosixImpl::
40-
dec(TVOLATILE PN_int32 &var) {
40+
dec(TVOLATILE AtomicAdjustPosixImpl::Integer &var) {
4141
pthread_mutex_lock(&_mutex);
42-
PN_int32 result = --var;
42+
Integer result = --var;
4343
pthread_mutex_unlock(&_mutex);
4444
return (result != 0);
4545
}
@@ -51,7 +51,7 @@ dec(TVOLATILE PN_int32 &var) {
5151
// delta to be negative.
5252
////////////////////////////////////////////////////////////////////
5353
INLINE void AtomicAdjustPosixImpl::
54-
add(TVOLATILE PN_int32 &var, PN_int32 delta) {
54+
add(TVOLATILE AtomicAdjustPosixImpl::Integer &var, AtomicAdjustPosixImpl::Integer delta) {
5555
pthread_mutex_lock(&_mutex);
5656
var += delta;
5757
pthread_mutex_unlock(&_mutex);
@@ -63,10 +63,10 @@ add(TVOLATILE PN_int32 &var, PN_int32 delta) {
6363
// Description: Atomically changes the indicated variable and
6464
// returns the original value.
6565
////////////////////////////////////////////////////////////////////
66-
INLINE PN_int32 AtomicAdjustPosixImpl::
67-
set(TVOLATILE PN_int32 &var, PN_int32 new_value) {
66+
INLINE AtomicAdjustPosixImpl::Integer AtomicAdjustPosixImpl::
67+
set(TVOLATILE AtomicAdjustPosixImpl::Integer &var, AtomicAdjustPosixImpl::Integer new_value) {
6868
pthread_mutex_lock(&_mutex);
69-
PN_int32 orig_value = var;
69+
Integer orig_value = var;
7070
var = new_value;
7171
pthread_mutex_unlock(&_mutex);
7272
return orig_value;
@@ -81,10 +81,10 @@ set(TVOLATILE PN_int32 &var, PN_int32 new_value) {
8181
// asynchronously setting, incrementing, or decrementing
8282
// (via other AtomicAjust methods).
8383
////////////////////////////////////////////////////////////////////
84-
INLINE PN_int32 AtomicAdjustPosixImpl::
85-
get(const TVOLATILE PN_int32 &var) {
84+
INLINE AtomicAdjustPosixImpl::Integer AtomicAdjustPosixImpl::
85+
get(const TVOLATILE AtomicAdjustPosixImpl::Integer &var) {
8686
pthread_mutex_lock(&_mutex);
87-
PN_int32 orig_value = var;
87+
Integer orig_value = var;
8888
pthread_mutex_unlock(&_mutex);
8989
return orig_value;
9090
}
@@ -140,11 +140,11 @@ get_ptr(void * const TVOLATILE &var) {
140140
// return orig_value;
141141
//
142142
////////////////////////////////////////////////////////////////////
143-
INLINE PN_int32 AtomicAdjustPosixImpl::
144-
compare_and_exchange(TVOLATILE PN_int32 &mem, PN_int32 old_value,
145-
PN_int32 new_value) {
143+
INLINE AtomicAdjustPosixImpl::Integer AtomicAdjustPosixImpl::
144+
compare_and_exchange(TVOLATILE AtomicAdjustPosixImpl::Integer &mem, AtomicAdjustPosixImpl::Integer old_value,
145+
AtomicAdjustPosixImpl::Integer new_value) {
146146
pthread_mutex_lock(&_mutex);
147-
PN_int32 orig_value = mem;
147+
Integer orig_value = mem;
148148
if (mem == old_value) {
149149
mem = new_value;
150150
}

dtool/src/dtoolbase/atomicAdjustPosixImpl.h

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,18 +34,19 @@
3434
////////////////////////////////////////////////////////////////////
3535
class EXPCL_DTOOL AtomicAdjustPosixImpl {
3636
public:
37-
INLINE static void inc(TVOLATILE PN_int32 &var);
38-
INLINE static bool dec(TVOLATILE PN_int32 &var);
39-
INLINE static void add(TVOLATILE PN_int32 &var, PN_int32 delta);
40-
INLINE static PN_int32 set(TVOLATILE PN_int32 &var, PN_int32 new_value);
41-
INLINE static PN_int32 get(const TVOLATILE PN_int32 &var);
37+
typedef int Integer;
38+
INLINE static void inc(TVOLATILE Integer &var);
39+
INLINE static bool dec(TVOLATILE Integer &var);
40+
INLINE static void add(TVOLATILE Integer &var, Integer delta);
41+
INLINE static Integer set(TVOLATILE Integer &var, Integer new_value);
42+
INLINE static Integer get(const TVOLATILE Integer &var);
4243

4344
INLINE static void *set_ptr(void * TVOLATILE &var, void *new_value);
4445
INLINE static void *get_ptr(void * const TVOLATILE &var);
4546

46-
INLINE static PN_int32 compare_and_exchange(TVOLATILE PN_int32 &mem,
47-
PN_int32 old_value,
48-
PN_int32 new_value);
47+
INLINE static Integer compare_and_exchange(TVOLATILE Integer &mem,
48+
Integer old_value,
49+
Integer new_value);
4950

5051
INLINE static void *compare_and_exchange_ptr(void * TVOLATILE &mem,
5152
void *old_value,

dtool/src/dtoolbase/atomicAdjustWin32Impl.I

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -23,8 +23,8 @@
2323
// Description: Atomically increments the indicated variable.
2424
////////////////////////////////////////////////////////////////////
2525
INLINE void AtomicAdjustWin32Impl::
26-
inc(TVOLATILE PN_int32 &var) {
27-
InterlockedIncrement((LONG *)&var);
26+
inc(TVOLATILE AtomicAdjustWin32Impl::Integer &var) {
27+
InterlockedIncrement(&var);
2828
}
2929

3030
////////////////////////////////////////////////////////////////////
@@ -35,8 +35,8 @@ inc(TVOLATILE PN_int32 &var) {
3535
// is zero.
3636
////////////////////////////////////////////////////////////////////
3737
INLINE bool AtomicAdjustWin32Impl::
38-
dec(TVOLATILE PN_int32 &var) {
39-
return (InterlockedDecrement((LONG *)&var) != 0);
38+
dec(TVOLATILE AtomicAdjustWin32Impl::Integer &var) {
39+
return (InterlockedDecrement(var) != 0);
4040
}
4141

4242
////////////////////////////////////////////////////////////////////
@@ -46,8 +46,8 @@ dec(TVOLATILE PN_int32 &var) {
4646
// delta to be negative.
4747
////////////////////////////////////////////////////////////////////
4848
INLINE void AtomicAdjustWin32Impl::
49-
add(TVOLATILE PN_int32 &var, PN_int32 delta) {
50-
PN_int32 orig_value = var;
49+
add(TVOLATILE AtomicAdjustWin32Impl::Integer &var, AtomicAdjustWin32Impl::Integer delta) {
50+
AtomicAdjustWin32Impl::Integer orig_value = var;
5151
while (compare_and_exchange(var, orig_value, orig_value + delta) != orig_value) {
5252
orig_value = var;
5353
}
@@ -59,9 +59,9 @@ add(TVOLATILE PN_int32 &var, PN_int32 delta) {
5959
// Description: Atomically changes the indicated variable and
6060
// returns the original value.
6161
////////////////////////////////////////////////////////////////////
62-
INLINE PN_int32 AtomicAdjustWin32Impl::
63-
set(TVOLATILE PN_int32 &var, PN_int32 new_value) {
64-
return InterlockedExchange((LONG *)&var, new_value);
62+
INLINE AtomicAdjustWin32Impl::Integer AtomicAdjustWin32Impl::
63+
set(TVOLATILE AtomicAdjustWin32Impl::Integer &var, AtomicAdjustWin32Impl::Integer new_value) {
64+
return InterlockedExchange(&var, new_value);
6565
}
6666

6767
////////////////////////////////////////////////////////////////////
@@ -73,8 +73,8 @@ set(TVOLATILE PN_int32 &var, PN_int32 new_value) {
7373
// asynchronously setting, incrementing, or decrementing
7474
// (via other AtomicAjust methods).
7575
////////////////////////////////////////////////////////////////////
76-
INLINE PN_int32 AtomicAdjustWin32Impl::
77-
get(const TVOLATILE PN_int32 &var) {
76+
INLINE AtomicAdjustWin32Impl::Integer AtomicAdjustWin32Impl::
77+
get(const TVOLATILE AtomicAdjustWin32Impl::Integer &var) {
7878
return var;
7979
}
8080

@@ -124,9 +124,9 @@ get_ptr(void * const TVOLATILE &var) {
124124
// return orig_value;
125125
//
126126
////////////////////////////////////////////////////////////////////
127-
INLINE PN_int32 AtomicAdjustWin32Impl::
128-
compare_and_exchange(TVOLATILE PN_int32 &mem, PN_int32 old_value,
129-
PN_int32 new_value) {
127+
INLINE AtomicAdjustWin32Impl::Integer AtomicAdjustWin32Impl::
128+
compare_and_exchange(TVOLATILE AtomicAdjustWin32Impl::Integer &mem, AtomicAdjustWin32Impl::Integer old_value,
129+
AtomicAdjustWin32Impl::Integer new_value) {
130130
// Note that the AtomicAdjust parameter order is different from
131131
// Windows convention!
132132
return InterlockedCompareExchange((TVOLATILE LONG *)&mem, new_value, old_value);

0 commit comments

Comments
 (0)