[pypy-commit] stmgc queue: hg merge default
arigo
noreply at buildbot.pypy.org
Thu Jun 18 19:38:59 CEST 2015
Author: Armin Rigo <arigo at tunes.org>
Branch: queue
Changeset: r1866:950c6296eab7
Date: 2015-06-18 18:39 +0100
http://bitbucket.org/pypy/stmgc/changeset/950c6296eab7/
Log: hg merge default
diff --git a/c7/gdb/gdb_stm.py b/c7/gdb/gdb_stm.py
--- a/c7/gdb/gdb_stm.py
+++ b/c7/gdb/gdb_stm.py
@@ -34,6 +34,12 @@
raise
Func(func.__name__)
+def int_(x):
+ if isinstance(x, gdb.Value):
+ T = gdb.lookup_type('long')
+ x = x.cast(T)
+ return int(x)
+
# -------------------------------------------------------
_nb_segments = None
@@ -43,26 +49,26 @@
def get_nb_segments():
global _nb_segments
if _nb_segments is None:
- _nb_segments = int(gdb.parse_and_eval('_stm_nb_segments'))
+ _nb_segments = int_(gdb.parse_and_eval('_stm_nb_segments'))
assert 1 < _nb_segments <= 240
return _nb_segments
def get_segment_size():
global _segment_size
if _segment_size is None:
- nb_pages = int(gdb.parse_and_eval('_stm_segment_nb_pages'))
+ nb_pages = int_(gdb.parse_and_eval('_stm_segment_nb_pages'))
_segment_size = nb_pages * 4096
return _segment_size
def get_psegment_ofs():
global _psegment_ofs
if _psegment_ofs is None:
- _psegment_ofs = int(gdb.parse_and_eval('_stm_psegment_ofs'))
+ _psegment_ofs = int_(gdb.parse_and_eval('_stm_psegment_ofs'))
return _psegment_ofs
def get_segment_base(segment_id):
assert 0 <= segment_id <= get_nb_segments()
- base = int(gdb.parse_and_eval('stm_object_pages'))
+ base = int_(gdb.parse_and_eval('stm_object_pages'))
return base + get_segment_size() * segment_id
def get_psegment(segment_id, field=''):
@@ -72,13 +78,13 @@
% (get_segment_size() * segment_id + get_psegment_ofs(), field))
def thread_to_segment_id(thread_id):
- base = int(gdb.parse_and_eval('stm_object_pages'))
+ base = int_(gdb.parse_and_eval('stm_object_pages'))
for j in range(1, get_nb_segments() + 1):
#ti = get_psegment(j, '->pub.running_thread->creating_pthread[0]')
ti = get_psegment(j, '->running_pthread')
- if int(ti) == thread_id:
+ if int_(ti) == thread_id:
ts = get_psegment(j, '->transaction_state')
- if int(ts) == 0:
+ if int_(ts) == 0:
print >> sys.stderr, "note: transaction_state == 0"
return j
raise Exception("thread not found: %r" % (thread_id,))
@@ -94,10 +100,10 @@
thread_id = int(fields[2], 16)
segment_id = thread_to_segment_id(thread_id)
elif thread.type.code == gdb.TYPE_CODE_INT:
- if 0 <= int(thread) < 256:
- segment_id = int(thread)
+ if 0 <= int_(thread) < 256:
+ segment_id = int_(thread)
else:
- thread_id = int(thread)
+ thread_id = int_(thread)
segment_id = thread_to_segment_id(thread_id)
else:
raise TypeError("'thread' argument must be an int or not given")
@@ -107,12 +113,12 @@
def gc(p=None, thread=None):
sb = interactive_segment_base(thread)
if p is not None and p.type.code == gdb.TYPE_CODE_PTR:
- return gdb.Value(sb + int(p)).cast(p.type).dereference()
+ return gdb.Value(sb + int_(p)).cast(p.type).dereference()
else:
if p is None:
p = 0
else:
- p = int(p)
+ p = int_(p)
T = gdb.lookup_type('char').pointer()
return gdb.Value(sb + p).cast(T)
More information about the pypy-commit
mailing list