[pypy-commit] pypy py3k: merge default
pjenvey
noreply at buildbot.pypy.org
Wed Mar 20 01:52:33 CET 2013
Author: Philip Jenvey <pjenvey at underboss.org>
Branch: py3k
Changeset: r62528:8688a5451f54
Date: 2013-03-19 17:52 -0700
http://bitbucket.org/pypy/pypy/changeset/8688a5451f54/
Log: merge default
diff too long, truncating to 2000 out of 89406 lines
diff --git a/pypy/doc/whatsnew-head.rst b/pypy/doc/whatsnew-head.rst
--- a/pypy/doc/whatsnew-head.rst
+++ b/pypy/doc/whatsnew-head.rst
@@ -11,6 +11,8 @@
.. branch: callback-jit
Callbacks from C are now better JITted
+.. branch: fix-jit-logs
+
.. branch: remove-globals-in-jit
.. branch: length-hint
diff --git a/pypy/module/micronumpy/interp_ufuncs.py b/pypy/module/micronumpy/interp_ufuncs.py
--- a/pypy/module/micronumpy/interp_ufuncs.py
+++ b/pypy/module/micronumpy/interp_ufuncs.py
@@ -17,9 +17,9 @@
return not dtype.itemtype.bool(val)
class W_Ufunc(Wrappable):
- _attrs_ = ["name", "promote_to_float", "promote_bools", "identity",
+ _attrs_ = ["name", "promote_to_float", "promote_bools", "identity",
"allow_complex", "complex_to_float"]
- _immutable_fields_ = ["promote_to_float", "promote_bools", "name",
+ _immutable_fields_ = ["promote_to_float", "promote_bools", "name",
"allow_complex", "complex_to_float"]
def __init__(self, name, promote_to_float, promote_bools, identity,
@@ -151,13 +151,13 @@
assert isinstance(self, W_Ufunc2)
obj = convert_to_array(space, w_obj)
if obj.get_dtype().is_flexible_type():
- raise OperationError(space.w_TypeError,
+ raise OperationError(space.w_TypeError,
space.wrap('cannot perform reduce for flexible type'))
obj_shape = obj.get_shape()
if obj.is_scalar():
return obj.get_scalar_value()
shapelen = len(obj_shape)
- axis = unwrap_axis_arg(space, shapelen, w_axis)
+ axis = unwrap_axis_arg(space, shapelen, w_axis)
assert axis >= 0
size = obj.get_size()
dtype = interp_dtype.decode_w_dtype(space, dtype)
@@ -256,7 +256,7 @@
out = None
w_obj = convert_to_array(space, w_obj)
if w_obj.get_dtype().is_flexible_type():
- raise OperationError(space.w_TypeError,
+ raise OperationError(space.w_TypeError,
space.wrap('Not implemented for this type'))
if self.int_only and not w_obj.get_dtype().is_int_type():
raise OperationError(space.w_TypeError, space.wrap(
@@ -281,7 +281,7 @@
if self.complex_to_float and calc_dtype.is_complex_type():
if calc_dtype.name == 'complex64':
res_dtype = interp_dtype.get_dtype_cache(space).w_float32dtype
- else:
+ else:
res_dtype = interp_dtype.get_dtype_cache(space).w_float64dtype
if w_obj.is_scalar():
w_val = self.func(calc_dtype,
@@ -304,7 +304,7 @@
argcount = 2
def __init__(self, func, name, promote_to_float=False, promote_bools=False,
- identity=None, comparison_func=False, int_only=False,
+ identity=None, comparison_func=False, int_only=False,
allow_complex=True, complex_to_float=False):
W_Ufunc.__init__(self, name, promote_to_float, promote_bools, identity,
@@ -507,11 +507,11 @@
return current_guess
elif space.isinstance_w(w_obj, space.w_str):
if (current_guess is None):
- return interp_dtype.variable_dtype(space,
+ return interp_dtype.variable_dtype(space,
'S%d' % space.len_w(w_obj))
elif current_guess.num ==18:
if current_guess.itemtype.get_size() < space.len_w(w_obj):
- return interp_dtype.variable_dtype(space,
+ return interp_dtype.variable_dtype(space,
'S%d' % space.len_w(w_obj))
return current_guess
if current_guess is complex_type:
@@ -588,7 +588,7 @@
("negative", "neg", 1),
("absolute", "abs", 1, {"complex_to_float": True}),
("sign", "sign", 1, {"promote_bools": True}),
- ("signbit", "signbit", 1, {"bool_result": True,
+ ("signbit", "signbit", 1, {"bool_result": True,
"allow_complex": False}),
("reciprocal", "reciprocal", 1),
("conjugate", "conj", 1),
@@ -599,7 +599,7 @@
"allow_complex": False}),
("fmax", "fmax", 2, {"promote_to_float": True}),
("fmin", "fmin", 2, {"promote_to_float": True}),
- ("fmod", "fmod", 2, {"promote_to_float": True,
+ ("fmod", "fmod", 2, {"promote_to_float": True,
'allow_complex': False}),
("floor", "floor", 1, {"promote_to_float": True,
"allow_complex": False}),
diff --git a/pypy/module/pypyjit/test_pypy_c/test_00_model.py b/pypy/module/pypyjit/test_pypy_c/test_00_model.py
--- a/pypy/module/pypyjit/test_pypy_c/test_00_model.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_00_model.py
@@ -496,7 +496,7 @@
i10 = getfield_raw(..., descr=<.* pypysig_long_struct.c_value .*>)
i14 = int_lt(i10, 0)
guard_false(i14, descr=...)
- jump(p0, p1, p2, p3, i8, descr=...)
+ jump(..., descr=...)
""")
#
assert loop.match("""
@@ -504,7 +504,7 @@
guard_true(i6, descr=...)
i8 = int_add(i4, 1)
--TICK--
- jump(p0, p1, p2, p3, i8, descr=...)
+ jump(..., descr=...)
""")
#
py.test.raises(InvalidMatch, loop.match, """
@@ -512,7 +512,7 @@
guard_true(i6)
i8 = int_add(i5, 1) # variable mismatch
--TICK--
- jump(p0, p1, p2, p3, i8, descr=...)
+ jump(..., descr=...)
""")
def test_match_by_id(self):
diff --git a/pypy/module/pypyjit/test_pypy_c/test_array.py b/pypy/module/pypyjit/test_pypy_c/test_array.py
--- a/pypy/module/pypyjit/test_pypy_c/test_array.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_array.py
@@ -22,7 +22,7 @@
guard_true(i7, descr=...)
i9 = int_add(i5, 1)
--TICK--
- jump(p0, p1, p2, p3, p4, i9, i6, descr=...)
+ jump(..., descr=...)
""")
def test_array_sum(self):
@@ -47,7 +47,7 @@
guard_no_overflow(descr=...)
i18 = int_add(i7, 1)
--TICK--
- jump(p0, p1, p2, p3, p4, p5, i18, i16, p8, i9, i10, descr=...)
+ jump(..., descr=...)
""")
def test_array_intimg(self):
@@ -85,7 +85,7 @@
setarrayitem_raw(i11, i8, _, descr=<ArrayS .>)
i28 = int_add(i8, 1)
--TICK--
- jump(p0, p1, p2, p3, p4, p5, p6, i28, i15, p9, i10, i11, descr=...)
+ jump(..., descr=...)
""")
def test_array_of_doubles(self):
diff --git a/pypy/module/pypyjit/test_pypy_c/test_call.py b/pypy/module/pypyjit/test_pypy_c/test_call.py
--- a/pypy/module/pypyjit/test_pypy_c/test_call.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_call.py
@@ -101,7 +101,7 @@
i15 = int_add_ovf(i12, 1)
guard_no_overflow(descr=...)
--TICK--
- jump(p0, p1, p2, p3, p4, i15, i6, p7, p8, descr=...)
+ jump(..., descr=...)
""")
def test_method_call(self):
@@ -144,7 +144,7 @@
i19 = int_add_ovf(i10, i17)
guard_no_overflow(descr=...)
--TICK--
- jump(p0, p1, p2, p3, p4, p5, i19, p7, i17, i9, i10, p11, p12, p13, descr=...)
+ jump(..., descr=...)
""")
def test_static_classmethod_call(self):
@@ -369,12 +369,12 @@
assert loop.match_by_id('call', opcode='CALL_FUNCTION', expected_src="""
# make sure that the "block" is not allocated
...
- i20 = force_token()
+ p20 = force_token()
p22 = new_with_vtable(...)
p24 = new_array(1, descr=<ArrayP .>)
p26 = new_with_vtable(ConstClass(W_ListObject))
{{{
- setfield_gc(p0, i20, descr=<FieldS .*PyFrame.vable_token .*>)
+ setfield_gc(p0, p20, descr=<FieldP .*PyFrame.vable_token .*>)
setfield_gc(p22, 1, descr=<FieldU pypy.interpreter.argument.Arguments.inst__jit_few_keywords .*>)
setfield_gc(p26, ConstPtr(ptr22), descr=<FieldP pypy.objspace.std.listobject.W_ListObject.inst_strategy .*>)
setarrayitem_gc(p24, 0, p26, descr=<ArrayP .>)
@@ -467,7 +467,7 @@
p22 = new_with_vtable(ConstClass(W_IntObject))
setfield_gc(p22, i13, descr=<FieldS pypy.objspace.std.intobject.W_IntObject.inst_intval .*>)
setfield_gc(p4, p22, descr=<FieldP pypy.interpreter.nestedscope.Cell.inst_w_value .*>)
- jump(p0, p1, p2, p3, p4, p7, p22, p7, descr=...)
+ jump(..., descr=...)
""")
def test_kwargs_virtual(self):
diff --git a/pypy/module/pypyjit/test_pypy_c/test_containers.py b/pypy/module/pypyjit/test_pypy_c/test_containers.py
--- a/pypy/module/pypyjit/test_pypy_c/test_containers.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_containers.py
@@ -115,7 +115,7 @@
i35 = int_add_ovf(i5, i34)
guard_no_overflow(descr=...)
--TICK--
- jump(p0, p1, p2, p3, p4, i35, p13, i7, descr=...)
+ jump(..., descr=...)
""")
def test_floatlist_unpack_without_calls(self):
diff --git a/pypy/module/pypyjit/test_pypy_c/test_instance.py b/pypy/module/pypyjit/test_pypy_c/test_instance.py
--- a/pypy/module/pypyjit/test_pypy_c/test_instance.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_instance.py
@@ -27,7 +27,7 @@
i9 = int_add_ovf(i5, 2)
guard_no_overflow(descr=...)
--TICK--
- jump(p0, p1, p2, p3, p4, i9, i6, descr=...)
+ jump(..., descr=...)
""")
def test_load_attr(self):
@@ -52,7 +52,7 @@
i10 = int_add_ovf(i5, i7)
guard_no_overflow(descr=...)
--TICK--
- jump(p0, p1, p2, p3, p4, i10, i6, i7, p8, descr=...)
+ jump(..., descr=...)
""")
def test_getattr_with_dynamic_attribute(self):
@@ -127,7 +127,7 @@
p20 = new_with_vtable(ConstClass(W_IntObject))
setfield_gc(p20, i11, descr=<FieldS.*W_IntObject.inst_intval .*>)
setfield_gc(ConstPtr(ptr21), p20, descr=<FieldP .*TypeCell.inst_w_value .*>)
- jump(p0, p1, p2, p3, p4, p20, p6, i7, p20, descr=...)
+ jump(..., descr=...)
""")
def test_oldstyle_newstyle_mix(self):
diff --git a/pypy/module/pypyjit/test_pypy_c/test_intbound.py b/pypy/module/pypyjit/test_pypy_c/test_intbound.py
--- a/pypy/module/pypyjit/test_pypy_c/test_intbound.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_intbound.py
@@ -97,7 +97,7 @@
guard_no_overflow(descr=...)
i17 = int_add(i8, 1)
--TICK--
- jump(p0, p1, p2, p3, p4, i14, i12, i17, p8, i9, descr=...)
+ jump(..., descr=...)
""")
def test_intbound_sub_lt(self):
@@ -121,7 +121,7 @@
guard_no_overflow(descr=...)
i13 = int_add(i5, 1)
--TICK--
- jump(p0, p1, p2, p3, i11, i13, descr=...)
+ jump(..., descr=...)
""")
def test_intbound_addsub_ge(self):
@@ -150,7 +150,7 @@
guard_no_overflow(descr=...)
i19 = int_add(i8, 1)
--TICK--
- jump(p0, p1, p2, p3, p4, i16, i14, i19, p8, i9, descr=...)
+ jump(..., descr=...)
""")
def test_intbound_addmul_ge(self):
@@ -178,7 +178,7 @@
guard_no_overflow(descr=...)
i21 = int_add(i8, 1)
--TICK--
- jump(p0, p1, p2, p3, p4, i18, i14, i21, p8, descr=...)
+ jump(..., descr=...)
""")
def test_intbound_eq(self):
@@ -210,7 +210,7 @@
guard_no_overflow(descr=...)
i16 = int_add(i8, 1)
--TICK--
- jump(p0, p1, p2, p3, p4, p6, i14, i16, p8, descr=...)
+ jump(..., descr=...)
""")
def test_intbound_mul(self):
@@ -236,7 +236,7 @@
guard_no_overflow(descr=...)
i14 = int_add(i6, 1)
--TICK--
- jump(p0, p1, p2, p3, p4, i12, i14, descr=...)
+ jump(..., descr=...)
""")
def test_assert(self):
@@ -257,7 +257,7 @@
guard_no_overflow(descr=...)
i12 = int_add(i6, 1)
--TICK--
- jump(p0, p1, p2, p3, p4, i10, i12, descr=...)
+ jump(..., descr=...)
""")
def test_xor(self):
diff --git a/pypy/module/pypyjit/test_pypy_c/test_min_max.py b/pypy/module/pypyjit/test_pypy_c/test_min_max.py
--- a/pypy/module/pypyjit/test_pypy_c/test_min_max.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_min_max.py
@@ -22,7 +22,7 @@
guard_no_overflow(descr=...)
i11 = int_add(i4, 1)
--TICK--
- jump(p0, p1, p2, p3, i11, i9, descr=...)
+ jump(..., descr=...)
""")
diff --git a/pypy/module/pypyjit/test_pypy_c/test_misc.py b/pypy/module/pypyjit/test_pypy_c/test_misc.py
--- a/pypy/module/pypyjit/test_pypy_c/test_misc.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_misc.py
@@ -31,7 +31,7 @@
i13 = int_add_ovf(i6, i12)
guard_no_overflow(descr=...)
--TICK--
- jump(p0, p1, p2, p3, p4, p5, i13, i11, i8, descr=...)
+ jump(..., descr=...)
"""
assert loop0.match(expected)
# XXX: The retracing fails to form a loop since j
@@ -56,7 +56,7 @@
guard_no_overflow(descr=...)
i10 = int_sub(i4, 1)
--TICK--
- jump(p0, p1, p2, p3, i10, i8, descr=...)
+ jump(..., descr=...)
""")
#
log = self.run(fact, [25], threshold=20)
@@ -71,7 +71,7 @@
guard_no_exception(descr=...)
i13 = int_sub(i4, 1)
--TICK--
- jump(p0, p1, p2, p3, i13, p11, descr=...)
+ jump(..., descr=...)
""")
@@ -91,7 +91,7 @@
guard_true(i9, descr=...)
f10 = float_add(f8, f5)
--TICK--
- jump(p0, p1, p2, p3, p4, f10, p6, f7, f8, descr=...)
+ jump(..., descr=...)
""")
@@ -252,7 +252,7 @@
i28 = int_add_ovf(i10, i25)
guard_no_overflow(descr=...)
--TICK--
- jump(p0, p1, p2, p3, p4, p5, p6, i28, i25, p9, p10, p11, p12, i19, descr=...)
+ jump(..., descr=...)
""")
diff --git a/pypy/module/pypyjit/test_pypy_c/test_string.py b/pypy/module/pypyjit/test_pypy_c/test_string.py
--- a/pypy/module/pypyjit/test_pypy_c/test_string.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_string.py
@@ -49,7 +49,7 @@
guard_true(i32, descr=...)
i34 = int_add(i6, 1)
--TICK--
- jump(p0, p1, p2, p3, p4, p5, i34, p7, p8, i9, i10, p11, i12, p13, descr=...)
+ jump(..., descr=...)
""" % (-sys.maxint-1, SHIFT))
def test_long(self):
@@ -115,7 +115,7 @@
i58 = int_add_ovf(i6, i57)
guard_no_overflow(descr=...)
--TICK--
- jump(p0, p1, p2, p3, p4, p5, i58, i7, descr=...)
+ jump(..., descr=...)
""" % (-sys.maxint-1, SHIFT))
def test_str_mod(self):
@@ -164,7 +164,7 @@
guard_no_overflow(descr=...)
i40 = int_sub(i4, 1)
--TICK--
- jump(p0, p1, p2, p3, i40, i38, descr=...)
+ jump(..., descr=...)
""")
def test_getattr_promote(self):
diff --git a/pypy/module/pypyjit/test_pypy_c/test_thread.py b/pypy/module/pypyjit/test_pypy_c/test_thread.py
--- a/pypy/module/pypyjit/test_pypy_c/test_thread.py
+++ b/pypy/module/pypyjit/test_pypy_c/test_thread.py
@@ -46,5 +46,5 @@
guard_no_overflow(descr=...)
--TICK--
i58 = arraylen_gc(p43, descr=...)
- jump(p0, p1, p3, p5, p10, p12, p14, i54, i27, i47, p45, p43, descr=...)
+ jump(..., descr=...)
""")
diff --git a/pypy/module/termios/test/test_termios.py b/pypy/module/termios/test/test_termios.py
--- a/pypy/module/termios/test/test_termios.py
+++ b/pypy/module/termios/test/test_termios.py
@@ -42,7 +42,8 @@
child.expect('attr= (\[.*?\[.*?\]\])')
lst = eval(child.match.group(1))
assert len(lst) == 7
- assert len(lst[-1]) == 32 # XXX is this portable???
+ # Length of the last element is 32 on Linux, 20 on MacOSX.
+ assert len(lst[-1]) in (20, 32)
def test_tcall(self):
""" Again - a test that doesnt really test anything
@@ -63,10 +64,16 @@
child.expect('ok!')
def test_tcsetattr(self):
+ # The last element of the third parameter for termios.tcsetattr()
+ # can't be a constant, because it varies from one OS to another.
+ # (Its length must be 32 on Linux, 20 on MacOSX, for example.)
+ # Use termios.tcgetattr() to get a value that will hopefully be
+ # valid for whatever OS we are running on right now.
source = py.code.Source("""
import sys
import termios
- termios.tcsetattr(sys.stdin, 1, [16640, 4, 191, 2608, 15, 15, [b'\x03', b'\x1c', b'\x7f', b'\x15', b'\x04', 0, 1, b'\x00', b'\x11', b'\x13', b'\x1a', b'\x00', b'\x12', b'\x0f', b'\x17', b'\x16', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00', b'\x00']])
+ cc = termios.tcgetattr(sys.stdin)[-1]
+ termios.tcsetattr(sys.stdin, 1, [16640, 4, 191, 2608, 15, 15, cc])
print('ok!')
""")
f = udir.join("test_tcsetattr.py")
diff --git a/pypy/tool/jitlogparser/parser.py b/pypy/tool/jitlogparser/parser.py
--- a/pypy/tool/jitlogparser/parser.py
+++ b/pypy/tool/jitlogparser/parser.py
@@ -364,16 +364,17 @@
def import_log(logname, ParserCls=SimpleParser):
log = parse_log_file(logname)
+ hex_re = '0x([\da-f]+)'
addrs = {}
for entry in extract_category(log, 'jit-backend-addr'):
- m = re.search('bootstrap ([-\da-f]+)', entry)
+ m = re.search('bootstrap ' + hex_re, entry)
if not m:
# a bridge
- m = re.search('has address ([-\da-f]+)', entry)
+ m = re.search('has address ' + hex_re, entry)
addr = int(m.group(1), 16)
entry = entry.lower()
- m = re.search('guard [\da-f]+', entry)
- name = m.group(0)
+ m = re.search('guard ' + hex_re, entry)
+ name = 'guard ' + m.group(1)
else:
name = entry[:entry.find('(') - 1].lower()
addr = int(m.group(1), 16)
@@ -395,8 +396,8 @@
comm = loop.comment
comm = comm.lower()
if comm.startswith('# bridge'):
- m = re.search('guard (\d+)', comm)
- name = 'guard ' + hex(int(m.group(1)))[2:]
+ m = re.search('guard ([\da-f]+)', comm)
+ name = 'guard ' + m.group(1)
elif "(" in comm:
name = comm[2:comm.find('(')-1]
else:
@@ -414,7 +415,8 @@
def split_trace(trace):
labels = [0]
if trace.comment and 'Guard' in trace.comment:
- descrs = ['bridge ' + re.search('Guard ([\da-f]+)', trace.comment).group(1)]
+ descrs = ['bridge %d' % int(
+ re.search('Guard 0x([\da-f]+)', trace.comment).group(1), 16)]
else:
descrs = ['entry ' + re.search('Loop (\d+)', trace.comment).group(1)]
for i, op in enumerate(trace.operations):
diff --git a/pypy/tool/jitlogparser/storage.py b/pypy/tool/jitlogparser/storage.py
--- a/pypy/tool/jitlogparser/storage.py
+++ b/pypy/tool/jitlogparser/storage.py
@@ -70,7 +70,7 @@
if 'entry bridge' in comment:
pass
elif comment.startswith('# bridge out of'):
- no = int(comment[len('# bridge out of Guard '):].split(' ', 1)[0], 16)
+ no = int(comment[len('# bridge out of Guard 0x'):].split(' ', 1)[0], 16)
op, parent = guard_dict[no]
op.bridge = loop
op.percentage = ((getattr(loop, 'count', 1) * 100) /
diff --git a/pypy/tool/jitlogparser/test/logtest.log b/pypy/tool/jitlogparser/test/logtest.log
--- a/pypy/tool/jitlogparser/test/logtest.log
+++ b/pypy/tool/jitlogparser/test/logtest.log
@@ -5,7 +5,7 @@
CODE_DUMP @7f3b0b2e63d5 +0 554889E5534154415541564157488DA500000000488B042590C5540148C7042590C554010000000048898570FFFFFF488B042598C5540148C7042598C554010000000048898568FFFFFF488B0425A0C5540148C70425A0C554010000000048898560FFFFFF488B0425A8C5540148C70425A8C554010000000048898558FFFFFF4C8B3C2550525B0149BB3050920D3B7F00004D8B334983C60149BB3050920D3B7F00004D89334981FF102700000F8D000000004983C7014C8B342580F76A024983EE014C89342580F76A024983FE000F8C00000000E9AEFFFFFF488B042588F76A024829E0483B042580EC3C01760D49BB05632E0B3B7F000041FFD3554889E5534154415541564157488DA550FFFFFF4889BD70FFFFFF4889B568FFFFFF48899560FFFFFF48898D58FFFFFF4D89C7E954FFFFFF49BB00602E0B3B7F000041FFD34440484C3D030300000049BB00602E0B3B7F000041FFD34440484C3D070304000000
[11f210b949b3] jit-backend-dump}
[11f210b949b4] {jit-backend-addr
-Loop 0 (<code object f, file 'x.py', line 2> #9 LOAD_FAST) has address 7f3b0b2e645d to 7f3b0b2e64af (bootstrap 7f3b0b2e63d5)
+Loop 0 (<code object f, file 'x.py', line 2> #9 LOAD_FAST) has address 0x7f3b0b2e645d to 0x7f3b0b2e64af (bootstrap 0x7f3b0b2e63d5)
[11f210bab188] jit-backend-addr}
[11f210bab189] jit-backend}
[11f210bacbb7] {jit-log-opt-loop
diff --git a/pypy/tool/jitlogparser/test/logtest2.log b/pypy/tool/jitlogparser/test/logtest2.log
--- a/pypy/tool/jitlogparser/test/logtest2.log
+++ b/pypy/tool/jitlogparser/test/logtest2.log
@@ -1,301 +1,356 @@
-[1f5e7f69779] {jit-backend-dump
+[3304d0bb187] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b000 +0 4157415641554154415341524151415057565554535251504889E349C7C340BC920041FFD34889DF4883E4F049C7C350BC920041FFD3488D65D8415F415E415D415C5B5DC3
-[1f5e7f7fe75] jit-backend-dump}
-[1f5e7f84fc4] {jit-backend-dump
+CODE_DUMP @7f476a7d5000 +0 48894D58488945604889556848895D70488975784889BD800000004C8985880000004C898D900000004C8995980000004C89A5A00000004C89ADA80000004C89B5B00000004C89BDB8000000584889452058488945104889E84C8BBC24880000004C8BB424800000004C8B6C24784C8B642470488B5C2468488B6C24604881C498000000C3
+[3304d0ca602] jit-backend-dump}
+[3304d0cfdf4] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b045 +0 4157415641554154415341524151415057565554535251504889E349C7C3F0BB920041FFD34889DF4883E4F049C7C350BC920041FFD3488D65D8415F415E415D415C5B5DC3
-[1f5e7f87ac1] jit-backend-dump}
-[1f5e7f8a0b4] {jit-backend-dump
+CODE_DUMP @7f476a7d5085 +0 48894D58488945604889556848895D70488975784889BD800000004C8985880000004C898D900000004C8995980000004C89A5A00000004C89ADA80000004C89B5B00000004C89BDB8000000488B1C25C802190348C70425C00219030000000048C70425C80219030000000048895D38584889452058488945104889E84C8BBC24880000004C8BB424800000004C8B6C24784C8B642470488B5C2468488B6C24604881C498000000C3
+[3304d0d2b27] jit-backend-dump}
+[3304d0d73d6] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b08a +0 4157415641554154415341524151415057565554535251504889E34881EC80000000F20F110424F20F114C2408F20F11542410F20F115C2418F20F11642420F20F116C2428F20F11742430F20F117C2438F2440F11442440F2440F114C2448F2440F11542450F2440F115C2458F2440F11642460F2440F116C2468F2440F11742470F2440F117C247849C7C340BC920041FFD34889DF4883E4F049C7C350BC920041FFD3488D65D8415F415E415D415C5B5DC3
-[1f5e7f8da6b] jit-backend-dump}
-[1f5e7f8f4f6] {jit-backend-dump
+CODE_DUMP @7f476a7d512e +0 4889455848894D60488955684889757048897D784C8985800000004C898D880000004C899590000000488B7C240841BBC069120141FFD3488B4558488B4D60488B5568488B7570488B7D784C8B85800000004C8B8D880000004C8B9590000000C20800
+[3304d0d9073] jit-backend-dump}
+[3304d0db1d8] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b13d +0 4157415641554154415341524151415057565554535251504889E34881EC80000000F20F110424F20F114C2408F20F11542410F20F115C2418F20F11642420F20F116C2428F20F11742430F20F117C2438F2440F11442440F2440F114C2448F2440F11542450F2440F115C2458F2440F11642460F2440F116C2468F2440F11742470F2440F117C247849C7C3F0BB920041FFD34889DF4883E4F049C7C350BC920041FFD3488D65D8415F415E415D415C5B5DC3
-[1f5e7f92b83] jit-backend-dump}
-[1f5e7f95b99] {jit-backend-dump
+CODE_DUMP @7f476a7d5191 +0 4889455848894D60488955684889757048897D784C8985800000004C898D880000004C899590000000488B7C240841BB006B120141FFD3488B442408F6400480488B4558488B4D60488B5568488B7570488B7D784C8B85800000004C8B8D880000004C8B9590000000C20800
+[3304d0dce9e] jit-backend-dump}
+[3304d0dfc06] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b210 +0 F20F11442410F20F114C2418F20F11542420F20F115C2428F20F11642430F20F116C2438F20F11742440F20F117C2448F2440F11442450F2440F114C2458F2440F11542460F2440F115C2468F2440F11642470F2440F116C2478F2440F11B42480000000F2440F11BC24880000004829C24889D749C7C350A8920041FFE3
-[1f5e7f988d0] jit-backend-dump}
-[1f5e7fa16fb] {jit-backend-dump
+CODE_DUMP @7f476a7d51fd +0 4883EC384889442408F20F114424184889EF48895C24284C89642430488B1C25C80219034C8B2425C002190348C70425C00219030000000048C70425C80219030000000041BBC069120141FFD3F20F10442418488B44240848891C25C80219034C892425C0021903488B5C24284C8B642430488D642438C3
+[3304d0e1a04] jit-backend-dump}
+[3304d0e4ae5] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b28e +0 F20F10442410F20F104C2418F20F10542420F20F105C2428F20F10642430F20F106C2438F20F10742440F20F107C2448F2440F10442450F2440F104C2458F2440F10542460F2440F105C2468F2440F10642470F2440F106C2478F2440F10B42480000000F2440F10BC2488000000488B1425704F3D01C3
-[1f5e7fa47ac] jit-backend-dump}
-[1f5e7fab3a4] {jit-backend-dump
+CODE_DUMP @7f476a7d5275 +0 48894D58488945604889556848895D70488975784889BD800000004C8985880000004C898D900000004C8995980000004C89A5A00000004C89ADA80000004C89B5B00000004C89BDB8000000F20F1185C0000000F20F118DC8000000F20F1195D0000000F20F119DD8000000F20F11A5E0000000F20F11ADE8000000F20F11B5F0000000F20F11BDF8000000F2440F118500010000F2440F118D08010000F2440F119510010000F2440F119D18010000F2440F11A520010000F2440F11AD28010000F2440F11B530010000488B4C240848894D20488B7424104889EF4883EC0848C7452810000000488B0C25C802190348894D38488B1C25C002190348C70425C00219030000000048C70425C80219030000000041BB90E3E80041FFD34889C5488B4D3848C745380000000048890C25C802190348891C25C00219034883C40848C745280000000048C7452000000000488B4D58488B4560488B5568488B5D70488B7578488BBD800000004C8B85880000004C8B8D900000004C8B95980000004C8BA5A00000004C8BADA80000004C8BB5B00000004C8BBDB8000000F20F1085C0000000F20F108DC8000000F20F1095D0000000F20F109DD8000000F20F10A5E0000000F20F10ADE8000000F20F10B5F0000000F20F10BDF8000000F2440F108500010000F2440F108D08010000F2440F109510010000F2440F109D18010000F2440F10A520010000F2440F10AD28010000F2440F10B530010000C3
+[3304d0e9130] jit-backend-dump}
+[3304d0ea4a1] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b305 +0 57565251415041514883EC40F20F110424F20F114C2408F20F11542410F20F115C2418F20F11642420F20F116C2428F20F11742430F20F117C2438488D7D1049C7C340BA520041FFD3488B042550546B024885C0753CF20F107C2438F20F10742430F20F106C2428F20F10642420F20F105C2418F20F10542410F20F104C2408F20F1004244883C44041594158595A5E5FC3488B042558546B0248C7042550546B020000000048C7042558546B02000000004889042590C2540149C7C340BC920041FFD348C7C0020000004883C478C3
-[1f5e7faf1ca] jit-backend-dump}
-[1f5e7fb0813] {jit-backend-counts
-[1f5e7fb0f61] jit-backend-counts}
-[1f5fd38be3e] {jit-backend
-[1f5fe729336] {jit-backend-dump
+CODE_DUMP @7f476a7d5491 +0 48894D58488945604889556848895D70488975784889BD800000004C8985880000004C898D900000004C8995980000004C89A5A00000004C89ADA80000004C89B5B00000004C89BDB8000000F20F1185C0000000F20F118DC8000000F20F1195D0000000F20F119DD8000000F20F11A5E0000000F20F11ADE8000000F20F11B5F0000000F20F11BDF8000000F2440F118500010000F2440F118D08010000F2440F119510010000F2440F119D18010000F2440F11A520010000F2440F11AD28010000F2440F11B530010000584889452058488945104889E84C8BBC24880000004C8BB424800000004C8B6C24784C8B642470488B5C2468488B6C24604881C498000000C3
+[3304d0ecf16] jit-backend-dump}
+[3304d0ee1ff] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b3d5 +0 554889E5534154415541564157488DA500000000488B042590C2540148C7042590C254010000000048898570FFFFFF488B042598C2540148C7042598C254010000000048898568FFFFFF488B0425A0C2540148C70425A0C254010000000048898560FFFFFF488B0425A8C2540148C70425A8C254010000000048898558FFFFFF4C8B3C25D04D5B0149BB30B00C0A897F00004D8B334983C60149BB30B00C0A897F00004D89334981FF102700000F8D000000004D89FE4983E7024983FF000F85000000004983C6034C8B3C25A0536B024983EF014C893C25A0536B024983FF000F8C000000004D89F7E99AFFFFFF488B0425A8536B024829E0483B042580DC3C01760D49BB05B3A007897F000041FFD3554889E5534154415541564157488DA550FFFFFF4889BD70FFFFFF4889B568FFFFFF48899560FFFFFF48898D58FFFFFF4D89C7E940FFFFFF49BB00B0A007897F000041FFD34440484C3D030300000049BB00B0A007897F000041FFD34440484C3D39030400000049BB00B0A007897F000041FFD34440484C3907070305000000
-[1f5fe73276a] jit-backend-dump}
-[1f5fe73438f] {jit-backend-addr
-Loop 0 (<code object f, file 'x.py', line 2> #9 LOAD_FAST) has address 7f8907a0b45d to 7f8907a0b4c3 (bootstrap 7f8907a0b3d5)
-[1f5fe7369af] jit-backend-addr}
-[1f5fe737940] {jit-backend-dump
+CODE_DUMP @7f476a7d5595 +0 48894D58488945604889556848895D70488975784889BD800000004C8985880000004C898D900000004C8995980000004C89A5A00000004C89ADA80000004C89B5B00000004C89BDB8000000F20F1185C0000000F20F118DC8000000F20F1195D0000000F20F119DD8000000F20F11A5E0000000F20F11ADE8000000F20F11B5F0000000F20F11BDF8000000F2440F118500010000F2440F118D08010000F2440F119510010000F2440F119D18010000F2440F11A520010000F2440F11AD28010000F2440F11B530010000488B1C25C802190348C70425C00219030000000048C70425C80219030000000048895D38584889452058488945104889E84C8BBC24880000004C8BB424800000004C8B6C24784C8B642470488B5C2468488B6C24604881C498000000C3
+[3304d0fca06] jit-backend-dump}
+[3304d0fe4ac] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b3e5 +0 50FFFFFF
-[1f5fe74b40e] jit-backend-dump}
-[1f5fe74c63d] {jit-backend-dump
+CODE_DUMP @7f476a7d56bd +0 4889455848894D60488955684889757048897D784C8985800000004C898D880000004C899590000000F20F1185C0000000F20F118DC8000000F20F1195D0000000F20F119DD8000000F20F11A5E0000000F20F11ADE8000000F20F11B5F0000000F20F11BDF8000000F2440F118500010000F2440F118D08010000F2440F119510010000F2440F119D18010000F2440F11A520010000F2440F11AD28010000F2440F11B530010000488B7C240841BBC069120141FFD3488B4558488B4D60488B5568488B7570488B7D784C8B85800000004C8B8D880000004C8B9590000000F20F1085C0000000F20F108DC8000000F20F1095D0000000F20F109DD8000000F20F10A5E0000000F20F10ADE8000000F20F10B5F0000000F20F10BDF8000000F2440F108500010000F2440F108D08010000F2440F109510010000F2440F109D18010000F2440F10A520010000F2440F10AD28010000F2440F10B530010000C20800
+[3304d1018ac] jit-backend-dump}
+[3304d103089] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b484 +0 95000000
-[1f5fe74da6a] jit-backend-dump}
-[1f5fe74e438] {jit-backend-dump
+CODE_DUMP @7f476a7d581e +0 4889455848894D60488955684889757048897D784C8985800000004C898D880000004C899590000000F20F1185C0000000F20F118DC8000000F20F1195D0000000F20F119DD8000000F20F11A5E0000000F20F11ADE8000000F20F11B5F0000000F20F11BDF8000000F2440F118500010000F2440F118D08010000F2440F119510010000F2440F119D18010000F2440F11A520010000F2440F11AD28010000F2440F11B530010000488B7C240841BB006B120141FFD3488B442408F6400480488B4558488B4D60488B5568488B7570488B7D784C8B85800000004C8B8D880000004C8B9590000000F20F1085C0000000F20F108DC8000000F20F1095D0000000F20F109DD8000000F20F10A5E0000000F20F10ADE8000000F20F10B5F0000000F20F10BDF8000000F2440F108500010000F2440F108D08010000F2440F109510010000F2440F109D18010000F2440F10A520010000F2440F10AD28010000F2440F10B530010000C20800
+[3304d1062c0] jit-backend-dump}
+[3304d1072c1] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b495 +0 9B000000
-[1f5fe74f513] jit-backend-dump}
-[1f5fe74fd2e] {jit-backend-dump
+CODE_DUMP @7f476a7d5988 +0 488B0425C802190348C70425C00219030000000048C70425C8021903000000004889453848C745108064B5014889E84C8BBC24880000004C8BB424800000004C8B6C24784C8B642470488B5C2468488B6C24604881C498000000C3
+[3304d1089ec] jit-backend-dump}
+[3304d11572c] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b4b7 +0 91000000
-[1f5fe750d8c] jit-backend-dump}
-[1f5fe75373f] jit-backend}
-[1f5fe755abc] {jit-log-opt-loop
-# Loop 0 : loop with 26 ops
-[p0, p1, p2, p3, i4]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #9 LOAD_FAST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #12 LOAD_CONST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #15 COMPARE_OP')
-+166: i6 = int_lt(i4, 10000)
-guard_true(i6, descr=<Guard3>) [p1, p0, p2, p3, i4]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #18 POP_JUMP_IF_FALSE')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #21 LOAD_FAST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #24 LOAD_CONST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #27 BINARY_AND')
-+179: i8 = int_and(i4, 2)
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #28 POP_JUMP_IF_FALSE')
-+186: i9 = int_is_true(i8)
-guard_false(i9, descr=<Guard4>) [p1, p0, p2, p3, i8, i4]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #44 LOAD_FAST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #47 LOAD_CONST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #50 INPLACE_ADD')
-+196: i11 = int_add(i4, 3)
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #51 STORE_FAST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #54 JUMP_ABSOLUTE')
-+200: i13 = getfield_raw(40588192, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>)
-+208: i15 = int_sub(i13, 1)
-+212: setfield_raw(40588192, i15, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>)
-+220: i17 = int_lt(i15, 0)
-guard_false(i17, descr=<Guard5>) [p1, p0, p2, p3, i11, None, None]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #9 LOAD_FAST')
-+230: jump(p0, p1, p2, p3, i11, descr=<Loop0>)
-+238: --end of the loop--
-[1f5fe92b8af] jit-log-opt-loop}
-[1f5fe944ae5] {jit-backend
-[1f5fee20651] {jit-backend-dump
+CODE_DUMP @7f476a7d59e3 +0 48894D584889556848895D70488975784C8985880000004C898D900000004C8995980000004C89A5A00000004C89ADA80000004C89B5B00000004C89BDB8000000F20F1185C0000000F20F118DC8000000F20F1195D0000000F20F119DD8000000F20F11A5E0000000F20F11ADE8000000F20F11B5F0000000F20F11BDF8000000F2440F118500010000F2440F118D08010000F2440F119510010000F2440F119D18010000F2440F11A520010000F2440F11AD28010000F2440F11B530010000488B4C240848894D204829C74883EC0848C745281000000041BBF0ACE80041FFD34883C4084885C00F84F4000000F645040174154883EC0849BBFD517D6A477F000041FFD34883C40848C7452800000000488B4D58488B5568488B5D70488B75784C8B85880000004C8B8D900000004C8B95980000004C8BA5A00000004C8BADA80000004C8BB5B00000004C8BBDB8000000F20F1085C0000000F20F108DC8000000F20F1095D0000000F20F109DD8000000F20F10A5E0000000F20F10ADE8000000F20F10B5F0000000F20F10BDF8000000F2440F108500010000F2440F108D08010000F2440F109510010000F2440F109D18010000F2440F10A520010000F2440F10AD28010000F2440F10B530010000488B3C25C8EEB50148C7452000000000C34883C40849BB88597D6A477F000041FFE3
+[3304d120245] jit-backend-dump}
+[3304d122916] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b565 +0 554889E5534154415541564157488DA5000000004C8B3C2590C2540148C7042590C25401000000004C8B342598C2540148C7042598C25401000000004C8B2C25A0C2540148C70425A0C25401000000004C8B2425A8C2540148C70425A8C25401000000004C8B1425D04D5B014C8B0C25B8C2540148C70425B8C25401000000004C8B0425E04D5B01488B3C25E84D5B01488B3425D0C2540148C70425D0C2540100000000488B1C25D8C2540148C70425D8C2540100000000488B1425E0C2540148C70425E0C254010000000049BB38B00C0A897F0000498B0B4883C10149BB38B00C0A897F000049890B4983F8010F85000000004883FE017206813E980700000F85000000004983FA000F850000000049BBA8F0B407897F00004D39DC0F8500000000488B56084881FA102700000F8D000000004989D44883E2024883FA000F85000000004983C403488B1425A0536B024883EA0148891425A0536B024883FA000F8C000000004C89BD70FFFFFF4C89B568FFFFFF4C89AD60FFFFFF4C898D58FFFFFF4D89E749BB5DB4A007897F000041FFE3488B0425A8536B024829E0483B042580DC3C01760D49BB05B3A007897F000041FFD3554889E5534154415541564157488DA550FFFFFF4989FF4989F64989D54989CC4D89C24C8B5D104D89D84C8B5D184C89DF4C8B5D204C89DE4C8B5D284C89DB4C8B5D304C89DAE9CCFEFFFF49BB00B0A007897F000041FFD321383C343029241D180C08030600000049BB00B0A007897F000041FFD3383C18343029240C08030700000049BB00B0A007897F000041FFD329383C3430241808030800000049BB00B0A007897F000041FFD3383C3034241808030900000049BB00B0A007897F000041FFD3383C183424030A00000049BB00B0A007897F000041FFD3383C34241809030B00000049BB00B0A007897F000041FFD3383C34243107030C000000
-[1f5fee2e673] jit-backend-dump}
-[1f5fee2f38d] {jit-backend-addr
-Loop 1 (<code object f, file 'x.py', line 2> #9 LOAD_FAST) has address 7f8907a0b631 to 7f8907a0b6f8 (bootstrap 7f8907a0b565)
-[1f5fee312e3] jit-backend-addr}
-[1f5fee320ed] {jit-backend-dump
+CODE_DUMP @7f476a7d5bd6 +0 4889E74883EC0841BB9018210141FFD34883C408488B0425C00219034885C07501C34883C40849BB88597D6A477F000041FFE3
+[3304d1240c0] jit-backend-dump}
+[3304d1246a0] {jit-backend-counts
+[3304d124ab0] jit-backend-counts}
+[3304d690a50] {jit-backend
+[3304db64ec0] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b575 +0 50FFFFFF
-[1f5fee3e903] jit-backend-dump}
-[1f5fee3fbff] {jit-backend-dump
+CODE_DUMP @7f476a7d5ce0 +0 4881EC9800000048896C24604889FD48895C24684C896424704C896C24784C89B424800000004C89BC2488000000488B0425709619034829E0483B042550B90403760D49BBD65B7D6A477F000041FFD349BBF0905D6D477F00004D8B3B4D8D770149BBF0905D6D477F00004D89334C8BB5380100004D8BBE800000004D8B6E504D8B66704D0FB6968E0000004D8B4E604D8B4678498B7E58498B7668488B5E10488B5618488B4620488B4E284C89BD480100004C89AD500100004C898D580100004889BD60010000488995680100004889857001000048898D7801000049BB08915D6D477F0000498B0B488D410149BB08915D6D477F00004989034983F8020F85000000004883FB017206813B680B00000F85000000004983FA000F850000000049BB20C0FC6A477F00004D39DC0F85000000004C8B63084983FC0A0F8D00000000498D5C24014C8B2425409519034983FC000F8C0000000049BB20915D6D477F00004D8B234D8D54240149BB20915D6D477F00004D89134883FB0A0F8D000000004C8D5301488B1C25409519034883FB000F8C000000004C89D3E9B9FFFFFF49BB2020FD6A477F0000415349BB405C7D6A477F0000415349BB00507D6A477F000041FFE349BB3806036B477F0000415349BB505C7D6A477F0000415349BB00507D6A477F000041FFE349BBC005036B477F0000415349BB605C7D6A477F0000415349BB00507D6A477F000041FFE349BB4805036B477F0000415349BB705C7D6A477F0000415349BB00507D6A477F000041FFE349BBD004036B477F0000415349BB805C7D6A477F0000415349BB00507D6A477F000041FFE349BB5804036B477F0000415349BB905C7D6A477F0000415349BB00507D6A477F000041FFE349BBE003036B477F0000415349BBA05C7D6A477F0000415349BB00507D6A477F000041FFE349BB6803036B477F0000415349BBB05C7D6A477F0000415349BB00507D6A477F000041FFE349BBF002036B477F0000415349BBC05C7D6A477F0000415349BB00507D6A477F000041FFE349BB7802036B477F0000415349BBD05C7D6A477F0000415349BB00507D6A477F000041FFE3
+[3304db7d5e4] jit-backend-dump}
+[3304db7df74] {jit-backend-addr
+Loop 0 (<code object g, file 'x.py', line 8> #9 LOAD_FAST) has address 0x7f476a7d5d30 to 0x7f476a7d5e80 (bootstrap 0x7f476a7d5ce0)
+[3304db7f906] jit-backend-addr}
+[3304db8036d] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b655 +0 0C010000
-[1f5fee41579] jit-backend-dump}
-[1f5fee421af] {jit-backend-dump
+CODE_DUMP @7f476a7d5de1 +0 9B000000
+[3304db81160] jit-backend-dump}
+[3304db81772] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b667 +0 17010000
-[1f5fee43835] jit-backend-dump}
-[1f5fee44261] {jit-backend-dump
+CODE_DUMP @7f476a7d5df3 +0 AE000000
+[3304db8217a] jit-backend-dump}
+[3304db825e3] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b671 +0 28010000
-[1f5fee457c1] jit-backend-dump}
-[1f5fee461a5] {jit-backend-dump
+CODE_DUMP @7f476a7d5dfd +0 C9000000
+[3304db82ee8] jit-backend-dump}
+[3304db83330] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b684 +0 2F010000
-[1f5fee475d3] jit-backend-dump}
-[1f5fee47f57] {jit-backend-dump
+CODE_DUMP @7f476a7d5e10 +0 DB000000
+[3304db83c9d] jit-backend-dump}
+[3304db840c2] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b695 +0 37010000
-[1f5fee4933d] jit-backend-dump}
-[1f5fee49cd9] {jit-backend-dump
+CODE_DUMP @7f476a7d5e1e +0 F2000000
+[3304db849f0] jit-backend-dump}
+[3304db84f62] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b6a6 +0 3D010000
-[1f5fee4b0ad] jit-backend-dump}
-[1f5fee4ba4f] {jit-backend-dump
+CODE_DUMP @7f476a7d5e35 +0 25010000
+[3304db8586f] jit-backend-dump}
+[3304db85c9d] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b6c8 +0 33010000
-[1f5fee4cf61] jit-backend-dump}
-[1f5fee4dc45] jit-backend}
-[1f5fee4f3a9] {jit-log-opt-loop
-# Loop 1 : entry bridge with 31 ops
-[p0, p1, p2, p3, i4, p5, i6, i7, p8, p9, p10]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #9 LOAD_FAST')
-+234: guard_value(i6, 1, descr=<Guard6>) [i6, p1, p0, p2, p3, i4, p5, i7, p8, p9, p10]
-+244: guard_nonnull_class(p8, ConstClass(W_IntObject), descr=<Guard7>) [p1, p0, p8, p2, p3, i4, p5, p9, p10]
-+262: guard_value(i4, 0, descr=<Guard8>) [i4, p1, p0, p2, p3, p5, p8, p10]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #12 LOAD_CONST')
-+272: guard_value(p3, ConstPtr(ptr14), descr=<Guard9>) [p1, p0, p3, p2, p5, p8, p10]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #15 COMPARE_OP')
-+291: i15 = getfield_gc_pure(p8, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>)
-+295: i17 = int_lt(i15, 10000)
-guard_true(i17, descr=<Guard10>) [p1, p0, p8, p2, p5]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #18 POP_JUMP_IF_FALSE')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #21 LOAD_FAST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #24 LOAD_CONST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #27 BINARY_AND')
-+308: i19 = int_and(i15, 2)
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #28 POP_JUMP_IF_FALSE')
-+315: i20 = int_is_true(i19)
-guard_false(i20, descr=<Guard11>) [p1, p0, p2, p5, p8, i19]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #44 LOAD_FAST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #47 LOAD_CONST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #50 INPLACE_ADD')
-+325: i22 = int_add(i15, 3)
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #51 STORE_FAST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #54 JUMP_ABSOLUTE')
-+329: i24 = getfield_raw(40588192, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>)
-+337: i26 = int_sub(i24, 1)
-+341: setfield_raw(40588192, i26, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>)
-+349: i28 = int_lt(i26, 0)
-guard_false(i28, descr=<Guard12>) [p1, p0, p2, p5, i22, None]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #9 LOAD_FAST')
-+359: jump(p0, p1, p2, p5, i22, descr=<Loop0>)
-+403: --end of the loop--
-[1f60036d952] jit-log-opt-loop}
-[1f600719a74] {jit-backend
-[1f600759dac] {jit-backend-dump
+CODE_DUMP @7f476a7d5e5e +0 21010000
+[3304db86572] jit-backend-dump}
+[3304db869e7] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b817 +0 554889E5534154415541564157488DA500000000488B042590C2540148C7042590C254010000000048898570FFFFFF488B042598C2540148C7042598C254010000000048898568FFFFFF488B0425A0C2540148C70425A0C254010000000048898560FFFFFF488B0425A8C2540148C70425A8C254010000000048898558FFFFFF4C8B3C25D04D5B0149BB40B00C0A897F00004D8B334983C60149BB40B00C0A897F00004D89334981FF102700000F8D000000004D89FE4983E7024983FF000F85000000004983C6034C8B3C25A0536B024983EF024C893C25A0536B024983FF000F8C000000004D89F7E99AFFFFFF488B0425A8536B024829E0483B042580DC3C01760D49BB05B3A007897F000041FFD3554889E5534154415541564157488DA550FFFFFF4889BD70FFFFFF4889B568FFFFFF48899560FFFFFF48898D58FFFFFF4D89C7E940FFFFFF49BB00B0A007897F000041FFD34440484C3D030D00000049BB00B0A007897F000041FFD34440484C3D39030E00000049BB00B0A007897F000041FFD34440484C390707030F000000
-[1f60076fd90] jit-backend-dump}
-[1f600770f30] {jit-backend-addr
-Loop 2 (<code object f, file 'x.py', line 2> #9 LOAD_FAST) has address 7f8907a0b89f to 7f8907a0b905 (bootstrap 7f8907a0b817)
-[1f6007730fc] jit-backend-addr}
-[1f600773fde] {jit-backend-dump
+CODE_DUMP @7f476a7d5e74 +0 55010000
+[3304db872e3] jit-backend-dump}
+[3304db88112] jit-backend}
+[3304db8ae6c] {jit-log-opt-loop
+# Loop 0 (<code object g, file 'x.py', line 8> #9 LOAD_FAST) : loop with 59 ops
+[p0, p1]
++110: p2 = getfield_gc(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_w_f_trace 128>)
++124: p3 = getfield_gc(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_last_exception 80>)
++128: p4 = getfield_gc(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_pycode 112>)
++132: i5 = getfield_gc(p0, descr=<FieldU pypy.interpreter.pyframe.PyFrame.inst_is_being_profiled 142>)
++140: p6 = getfield_gc(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_lastblock 96>)
++144: i7 = getfield_gc(p0, descr=<FieldS pypy.interpreter.pyframe.PyFrame.inst_valuestackdepth 120>)
++148: i8 = getfield_gc(p0, descr=<FieldS pypy.interpreter.pyframe.PyFrame.inst_last_instr 88>)
++152: p9 = getfield_gc(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_locals_stack_w 104>)
++156: p11 = getarrayitem_gc(p9, 0, descr=<ArrayP 8>)
++160: p13 = getarrayitem_gc(p9, 1, descr=<ArrayP 8>)
++164: p15 = getarrayitem_gc(p9, 2, descr=<ArrayP 8>)
++168: p17 = getarrayitem_gc(p9, 3, descr=<ArrayP 8>)
++172: p18 = getfield_gc(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_cells 40>)
++172: label(p0, p1, p2, p3, p4, i5, p6, i7, i8, p11, p13, p15, p17, descr=TargetToken(139944714371104))
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #9 LOAD_FAST')
++251: guard_value(i7, 2, descr=<Guard7f476afd2020>) [i7, p1, p0, p2, p3, p4, i5, p6, i8, p11, p13, p15, p17]
++261: guard_nonnull_class(p11, ConstClass(W_IntObject), descr=<Guard7f476b030638>) [p1, p0, p11, p2, p3, p4, i5, p6, p13, p15, p17]
++279: guard_value(i5, 0, descr=<Guard7f476b0305c0>) [i5, p1, p0, p2, p3, p4, p6, p11, p13, p17]
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #12 LOAD_CONST')
++289: guard_value(p4, ConstPtr(ptr22), descr=<Guard7f476b030548>) [p1, p0, p4, p2, p3, p6, p11, p13, p17]
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #15 COMPARE_OP')
++308: i23 = getfield_gc_pure(p11, descr=<FieldS pypy.objspace.std.intobject.W_IntObject.inst_intval 8>)
++312: i25 = int_lt(i23, 10)
+guard_true(i25, descr=<Guard7f476b0304d0>) [p1, p0, p11, p2, p3, p6, p13]
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #18 POP_JUMP_IF_FALSE')
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #21 LOAD_CONST')
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #24 STORE_FAST')
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #27 LOAD_FAST')
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #30 LOAD_CONST')
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #33 INPLACE_ADD')
++322: i27 = int_add(i23, 1)
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #34 STORE_FAST')
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #37 JUMP_ABSOLUTE')
++327: guard_not_invalidated(descr=<Guard7f476b030458>) [p1, p0, p2, p3, p6, i27]
++327: i29 = getfield_raw(52008256, descr=<FieldS pypysig_long_struct.c_value 0>)
++335: i31 = int_lt(i29, 0)
+guard_false(i31, descr=<Guard7f476b0303e0>) [p1, p0, p2, p3, p6, i27]
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #9 LOAD_FAST')
++345: label(p0, p1, p2, p3, p6, i27, descr=TargetToken(139944714371192))
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #9 LOAD_FAST')
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #12 LOAD_CONST')
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #15 COMPARE_OP')
++376: i32 = int_lt(i27, 10)
+guard_true(i32, descr=<Guard7f476b030368>) [p1, p0, p2, p3, p6, i27]
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #18 POP_JUMP_IF_FALSE')
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #21 LOAD_CONST')
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #24 STORE_FAST')
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #27 LOAD_FAST')
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #30 LOAD_CONST')
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #33 INPLACE_ADD')
++386: i33 = int_add(i27, 1)
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #34 STORE_FAST')
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #37 JUMP_ABSOLUTE')
++390: guard_not_invalidated(descr=<Guard7f476b0302f0>) [p1, p0, p2, p3, p6, i33, None]
++390: i35 = getfield_raw(52008256, descr=<FieldS pypysig_long_struct.c_value 0>)
++398: i36 = int_lt(i35, 0)
+guard_false(i36, descr=<Guard7f476b030278>) [p1, p0, p2, p3, p6, i33, None]
+debug_merge_point(0, 0, '<code object g. file 'x.py'. line 8> #9 LOAD_FAST')
++408: jump(p0, p1, p2, p3, p6, i33, descr=TargetToken(139944714371192))
++416: --end of the loop--
+[3304dc0f6eb] jit-log-opt-loop}
+[3304ddc81da] {jit-backend
+[3304dec8bed] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b827 +0 50FFFFFF
-[1f600775c76] jit-backend-dump}
-[1f600776a38] {jit-backend-dump
+CODE_DUMP @7f476a7d6128 +0 4881EC9800000048896C24604889FD48895C24684C896424704C896C24784C89B424800000004C89BC2488000000488B0425709619034829E0483B042550B90403760D49BBD65B7D6A477F000041FFD349BBD8905D6D477F00004D8B3B4D8D770149BBD8905D6D477F00004D89334C8BB5380100004D8BBE800000004D8B6E504D8B66704D0FB6968E0000004D8B4E604D8B4678498B7E58498B7668488B5E10488B5618488B4620488B4E284C89BD480100004C89AD500100004C898D580100004889BD6001000048899D6801000048898D7001000049BB38915D6D477F0000498B0B488D590149BB38915D6D477F000049891B4983F8030F85000000008138704500000F85000000004C8B40104D85C00F8400000000488B5808498B48108139005305000F8500000000498B48084C8B4108488B79104C8B49184883FB000F8C000000004C39CB0F8D000000004889D9480FAFDF4D89C54901D8488D5901488958084983FA000F85000000004C8B521041813A909403000F85000000004C8B5208498B4A084C8D79014C8985600100004C89A56801000048898D700100004C898D78010000488985800100004C8995880100004889BD90010000488995980100004C89D74C89FE49BB88607D6A477F00004C895D2041BB0055730041FFD3F6450401740D49BBFD517D6A477F000041FFD348C745200000000048833C25C0021903000F8500000000488B9588010000488B7A104C8B9560010000488B85700100004C8954C710488B0425409519034883F8000F8C00000000488B856801000049BB588C026B477F00004C39D80F850000000049BB50915D6D477F00004D8B13498D420149BB50915D6D477F0000498903483B9D780100000F8D000000004889D8480FAF9D900100004D89EA4901DD488D5801488B4208488D780148899560010000488985680100004C8995700100004889FE4889D749BBE8607D6A477F00004C895D2041BB0055730041FFD3F6450401740D49BBFD517D6A477F000041FFD348C74520000000004C8B958001000049895A0848833C25C0021903000F8500000000488B8560010000488B5010488BBD680100004C896CFA10488B3C25409519034883FF000F8C000000004C89AD600100004C8995800100004C8BAD700100004889C2E90BFFFFFF49BBA0D6496D477F0000415349BB08607D6A477F0000415349BB00507D6A477F000041FFE349BB708A4D6D477F0000415349BB18607D6A477F0000415349BB00507D6A477F000041FFE349BBF8894D6D477F0000415349BB28607D6A477F0000415349BB00507D6A477F000041FFE349BB80894D6D477F0000415349BB38607D6A477F0000415349BB00507D6A477F000041FFE349BB08894D6D477F0000415349BB48607D6A477F0000415349BB00507D6A477F000041FFE349BB90884D6D477F0000415349BB58607D6A477F0000415349BB00507D6A477F000041FFE349BB18884D6D477F0000415349BB68607D6A477F0000415349BB00507D6A477F000041FFE349BBA0874D6D477F0000415349BB78607D6A477F0000415349BB00507D6A477F000041FFE349BB28874D6D477F0000415349BB98607D6A477F0000415349BB85507D6A477F000041FFE349BBB0864D6D477F0000415349BBA8607D6A477F0000415349BB00507D6A477F000041FFE349BB38864D6D477F0000415349BBB8607D6A477F0000415349BB00507D6A477F000041FFE349BBC0854D6D477F0000415349BBC8607D6A477F0000415349BB00507D6A477F000041FFE349BB48854D6D477F0000415349BBD8607D6A477F0000415349BB00507D6A477F000041FFE349BBD0844D6D477F0000415349BBF8607D6A477F0000415349BB85507D6A477F000041FFE349BB58844D6D477F0000415349BB08617D6A477F0000415349BB00507D6A477F000041FFE349BBE0834D6D477F0000415349BB18617D6A477F0000415349BB00507D6A477F000041FFE3
+[3304dedb0c9] jit-backend-dump}
+[3304dedb9eb] {jit-backend-addr
+Loop 1 (<code object h, file 'x.py', line 14> #13 FOR_ITER) has address 0x7f476a7d6178 to 0x7f476a7d6470 (bootstrap 0x7f476a7d6128)
+[3304dedcbfe] jit-backend-addr}
+[3304dedd31e] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b8c6 +0 95000000
-[1f600778112] jit-backend-dump}
-[1f600778b8c] {jit-backend-dump
+CODE_DUMP @7f476a7d6222 +0 4A020000
+[3304dede364] jit-backend-dump}
+[3304dede8d3] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b8d7 +0 9B000000
-[1f60077a04a] jit-backend-dump}
-[1f60077aa6a] {jit-backend-dump
+CODE_DUMP @7f476a7d622e +0 63020000
+[3304dedf2ce] jit-backend-dump}
+[3304dedf728] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b8f9 +0 91000000
-[1f60077bf10] jit-backend-dump}
-[1f60077cc24] jit-backend}
-[1f60077e094] {jit-log-opt-loop
-# Loop 2 : loop with 25 ops
-[p0, p1, p2, p3, i4]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #12 LOAD_CONST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #15 COMPARE_OP')
-+166: i6 = int_lt(i4, 10000)
-guard_true(i6, descr=<Guard13>) [p1, p0, p2, p3, i4]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #18 POP_JUMP_IF_FALSE')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #21 LOAD_FAST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #24 LOAD_CONST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #27 BINARY_AND')
-+179: i8 = int_and(i4, 2)
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #28 POP_JUMP_IF_FALSE')
-+186: i9 = int_is_true(i8)
-guard_false(i9, descr=<Guard14>) [p1, p0, p2, p3, i8, i4]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #44 LOAD_FAST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #47 LOAD_CONST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #50 INPLACE_ADD')
-+196: i11 = int_add(i4, 3)
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #51 STORE_FAST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #54 JUMP_ABSOLUTE')
-+200: i13 = getfield_raw(40588192, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>)
-+208: i15 = int_sub(i13, 2)
-+212: setfield_raw(40588192, i15, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>)
-+220: i17 = int_lt(i15, 0)
-guard_false(i17, descr=<Guard15>) [p1, p0, p2, p3, i11, None, None]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #9 LOAD_FAST')
-+230: jump(p0, p1, p2, p3, i11, descr=<Loop2>)
-+238: --end of the loop--
-[1f6007a567c] jit-log-opt-loop}
-[1f600802cd6] {jit-backend
-[1f600862dd8] {jit-backend-dump
+CODE_DUMP @7f476a7d623b +0 7B020000
+[3304dedffef] jit-backend-dump}
+[3304dee040e] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b9b7 +0 488DA50000000049BB48B00C0A897F00004D8B3B4983C70149BB48B00C0A897F00004D893B4D89F74983C6010F80000000004C8B3C25A0536B024983EF014C893C25A0536B024983FF000F8C00000000488B0425704F3D01488D5010483B1425784F3D01761A49BB10B2A007897F000041FFD349BB8EB2A007897F000041FFD348C7009807000048891425704F3D014C89700848898550FFFFFF4C8BBD70FFFFFF4C8BB568FFFFFF4C8BAD60FFFFFF49BBA8F0B407897F00004D89DC49C7C2000000004C8B8D58FFFFFF49C7C00100000048C7C709000000488BB550FFFFFF48C7C30000000048C7C20000000049BB31B6A007897F000041FFE349BB00B0A007897F000041FFD3444039484C3D031000000049BB00B0A007897F000041FFD34440484C39070311000000
-[1f60086ba5a] jit-backend-dump}
-[1f60086d36e] {jit-backend-addr
-Bridge out of guard 4 has address 7f8907a0b9b7 to 7f8907a0bab1
-[1f60086ffd2] jit-backend-addr}
-[1f600870dca] {jit-backend-dump
+CODE_DUMP @7f476a7d624f +0 8C020000
+[3304dee0d4e] jit-backend-dump}
+[3304dee115b] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b9ba +0 C0FEFFFF
-[1f60087281c] jit-backend-dump}
-[1f600873506] {jit-backend-dump
+CODE_DUMP @7f476a7d6269 +0 97020000
+[3304dee1a98] jit-backend-dump}
+[3304dee1e9f] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b3d5 +0 C8000000
-[1f600874b44] jit-backend-dump}
-[1f6008754d4] {jit-backend-dump
+CODE_DUMP @7f476a7d6272 +0 B3020000
+[3304dee2789] jit-backend-dump}
+[3304dee2bb1] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0ba03 +0 C2000000
-[1f600876956] jit-backend-dump}
-[1f600877b1a] {jit-backend-dump
+CODE_DUMP @7f476a7d6291 +0 B9020000
+[3304dee34bf] jit-backend-dump}
+[3304dee38cc] {jit-backend-dump
BACKEND x86_64
SYS_EXECUTABLE python
-CODE_DUMP @7f8907a0b495 +0 1E050000
-[1f600878f4e] jit-backend-dump}
-[1f600884c12] jit-backend}
-[1f60088780a] {jit-log-opt-bridge
-# bridge out of Guard 4 with 16 ops
-[p0, p1, p2, p3, i4, i5]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #31 LOAD_FAST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #34 LOAD_CONST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #37 INPLACE_ADD')
-+37: i7 = int_add_ovf(i5, 1)
-guard_no_overflow(, descr=<Guard16>) [p0, p1, i7, p2, p3, i5]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #38 STORE_FAST')
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #41 JUMP_ABSOLUTE')
-+50: i9 = getfield_raw(40588192, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>)
-+58: i11 = int_sub(i9, 1)
-+62: setfield_raw(40588192, i11, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>)
-+70: i13 = int_lt(i11, 0)
-guard_false(i13, descr=<Guard17>) [p0, p1, p2, p3, i7, None]
-debug_merge_point(0, '<code object f. file 'x.py'. line 2> #9 LOAD_FAST')
-+80: p16 = new_with_vtable(ConstClass(W_IntObject))
-+143: setfield_gc(p16, i7, descr=<SignedFieldDescr pypy.objspace.std.intobject.W_IntObject.inst_intval 8>)
-+147: jump(p1, p0, p2, ConstPtr(ptr17), 0, p3, 1, 9, p16, ConstPtr(ptr21), ConstPtr(ptr22), descr=<Loop1>)
-+250: --end of the loop--
-[1f6008aa976] jit-log-opt-bridge}
-[1f600912c98] {jit-backend-counts
-0:1982
-1:1985
-2:0
-3:1782
-[1f600916544] jit-backend-counts}
+CODE_DUMP @7f476a7d62a2 +0 CD020000
+[3304dee41c5] jit-backend-dump}
+[3304dee45e1] {jit-backend-dump
+BACKEND x86_64
+SYS_EXECUTABLE python
+CODE_DUMP @7f476a7d632d +0 67020000
+[3304dee4ec5] jit-backend-dump}
+[3304dee543c] {jit-backend-dump
+BACKEND x86_64
+SYS_EXECUTABLE python
+CODE_DUMP @7f476a7d635d +0 81020000
+[3304dee5d03] jit-backend-dump}
+[3304dee6139] {jit-backend-dump
+BACKEND x86_64
+SYS_EXECUTABLE python
+CODE_DUMP @7f476a7d6377 +0 8C020000
+[3304dee69fa] jit-backend-dump}
+[3304dee6e10] {jit-backend-dump
+BACKEND x86_64
+SYS_EXECUTABLE python
+CODE_DUMP @7f476a7d63a2 +0 86020000
+[3304dee9db8] jit-backend-dump}
+[3304deea2e6] {jit-backend-dump
+BACKEND x86_64
+SYS_EXECUTABLE python
+CODE_DUMP @7f476a7d6426 +0 27020000
+[3304deeac17] jit-backend-dump}
+[3304deeb092] {jit-backend-dump
+BACKEND x86_64
+SYS_EXECUTABLE python
+CODE_DUMP @7f476a7d644f +0 48020000
+[3304deeb97f] jit-backend-dump}
+[3304deec304] jit-backend}
+[3304deed1f1] {jit-log-opt-loop
+# Loop 1 (<code object h, file 'x.py', line 14> #13 FOR_ITER) : loop with 82 ops
+[p0, p1]
++110: p2 = getfield_gc(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_w_f_trace 128>)
++124: p3 = getfield_gc(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_last_exception 80>)
++128: p4 = getfield_gc(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_pycode 112>)
++132: i5 = getfield_gc(p0, descr=<FieldU pypy.interpreter.pyframe.PyFrame.inst_is_being_profiled 142>)
++140: p6 = getfield_gc(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_lastblock 96>)
++144: i7 = getfield_gc(p0, descr=<FieldS pypy.interpreter.pyframe.PyFrame.inst_valuestackdepth 120>)
++148: i8 = getfield_gc(p0, descr=<FieldS pypy.interpreter.pyframe.PyFrame.inst_last_instr 88>)
++152: p9 = getfield_gc(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_locals_stack_w 104>)
++156: p11 = getarrayitem_gc(p9, 0, descr=<ArrayP 8>)
++160: p13 = getarrayitem_gc(p9, 1, descr=<ArrayP 8>)
++164: p15 = getarrayitem_gc(p9, 2, descr=<ArrayP 8>)
++168: p17 = getarrayitem_gc(p9, 3, descr=<ArrayP 8>)
++172: p18 = getfield_gc(p0, descr=<FieldP pypy.interpreter.pyframe.PyFrame.inst_cells 40>)
++172: label(p0, p1, p2, p3, p4, i5, p6, i7, i8, p11, p13, p15, p17, descr=TargetToken(139944753096184))
+debug_merge_point(0, 0, '<code object h. file 'x.py'. line 14> #13 FOR_ITER')
++244: guard_value(i7, 3, descr=<Guard7f476d49d6a0>) [i7, p1, p0, p2, p3, p4, i5, p6, i8, p11, p13, p15, p17]
++254: guard_class(p15, 25719440, descr=<Guard7f476d4d8a70>) [p1, p0, p15, p2, p3, p4, i5, p6, p11, p13, p17]
++266: p21 = getfield_gc(p15, descr=<FieldP pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_w_seq 16>)
++270: guard_nonnull(p21, descr=<Guard7f476d4d89f8>) [p1, p0, p15, p21, p2, p3, p4, i5, p6, p11, p13, p17]
++279: i22 = getfield_gc(p15, descr=<FieldS pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_index 8>)
++283: p23 = getfield_gc(p21, descr=<FieldP pypy.objspace.std.listobject.W_ListObject.inst_strategy 16>)
++287: guard_class(p23, 26050592, descr=<Guard7f476d4d8980>) [p1, p0, p15, i22, p23, p21, p2, p3, p4, i5, p6, p11, p13, p17]
++299: p25 = getfield_gc(p21, descr=<FieldP pypy.objspace.std.listobject.W_ListObject.inst_lstorage 8>)
++303: i26 = getfield_gc_pure(p25, descr=<FieldS tuple3.item0 8>)
++307: i27 = getfield_gc_pure(p25, descr=<FieldS tuple3.item1 16>)
++311: i28 = getfield_gc_pure(p25, descr=<FieldS tuple3.item2 24>)
++315: i30 = int_lt(i22, 0)
+guard_false(i30, descr=<Guard7f476d4d8908>) [p1, p0, p15, i22, i28, i27, i26, p2, p3, p4, i5, p6, p11, p13, p17]
++325: i31 = int_ge(i22, i28)
+guard_false(i31, descr=<Guard7f476d4d8890>) [p1, p0, p15, i22, i27, i26, p2, p3, p4, i5, p6, p11, p13, p17]
++334: i32 = int_mul(i22, i27)
++341: i33 = int_add(i26, i32)
++347: i35 = int_add(i22, 1)
++351: setfield_gc(p15, i35, descr=<FieldS pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_index 8>)
++355: guard_value(i5, 0, descr=<Guard7f476d4d8818>) [i5, p1, p0, p2, p3, p4, p6, p11, p13, p15, i33]
+debug_merge_point(0, 0, '<code object h. file 'x.py'. line 14> #16 STORE_FAST')
+debug_merge_point(0, 0, '<code object h. file 'x.py'. line 14> #19 LOAD_FAST')
+debug_merge_point(0, 0, '<code object h. file 'x.py'. line 14> #22 LIST_APPEND')
++365: p37 = getfield_gc(p13, descr=<FieldP pypy.objspace.std.listobject.W_ListObject.inst_strategy 16>)
++369: guard_class(p37, 25936304, descr=<Guard7f476d4d87a0>) [p1, p0, p37, p13, p2, p3, p4, p6, p15, i33]
++382: p39 = getfield_gc(p13, descr=<FieldP pypy.objspace.std.listobject.W_ListObject.inst_lstorage 8>)
++386: i40 = getfield_gc(p39, descr=<FieldS list.length 8>)
++390: i42 = int_add(i40, 1)
++394: p43 = getfield_gc(p39, descr=<FieldP list.items 16>)
++394: i44 = arraylen_gc(p43, descr=<ArrayS 8>)
++394: call(ConstClass(_ll_list_resize_ge_trampoline__v921___simple_call__function__), p39, i42, descr=<Callv 0 ri EF=4>)
++506: guard_no_exception(descr=<Guard7f476d4d8728>) [p1, p0, i40, i33, p39, p2, p3, p4, p6, p13, p15, None]
++521: p47 = getfield_gc(p39, descr=<FieldP list.items 16>)
++532: setarrayitem_gc(p47, i40, i33, descr=<ArrayS 8>)
+debug_merge_point(0, 0, '<code object h. file 'x.py'. line 14> #25 JUMP_ABSOLUTE')
++551: guard_not_invalidated(descr=<Guard7f476d4d86b0>) [p1, p0, p2, p3, p4, p6, p13, p15, i33]
++551: i49 = getfield_raw(52008256, descr=<FieldS pypysig_long_struct.c_value 0>)
++559: i51 = int_lt(i49, 0)
+guard_false(i51, descr=<Guard7f476d4d8638>) [p1, p0, p2, p3, p4, p6, p13, p15, i33]
++569: guard_value(p4, ConstPtr(ptr52), descr=<Guard7f476d4d85c0>) [p1, p0, p4, p2, p3, p6, p13, p15, i33]
+debug_merge_point(0, 0, '<code object h. file 'x.py'. line 14> #13 FOR_ITER')
++595: label(p0, p1, p2, p3, p6, i33, p13, p15, i35, i28, i27, i26, p39, descr=TargetToken(139944753096272))
+debug_merge_point(0, 0, '<code object h. file 'x.py'. line 14> #13 FOR_ITER')
++625: i53 = int_ge(i35, i28)
+guard_false(i53, descr=<Guard7f476d4d8548>) [p1, p0, p15, i35, i27, i26, p2, p3, p6, p13, i33]
++638: i54 = int_mul(i35, i27)
++649: i55 = int_add(i26, i54)
++655: i56 = int_add(i35, 1)
+debug_merge_point(0, 0, '<code object h. file 'x.py'. line 14> #16 STORE_FAST')
+debug_merge_point(0, 0, '<code object h. file 'x.py'. line 14> #19 LOAD_FAST')
+debug_merge_point(0, 0, '<code object h. file 'x.py'. line 14> #22 LIST_APPEND')
++659: i57 = getfield_gc(p39, descr=<FieldS list.length 8>)
++663: i58 = int_add(i57, 1)
++667: p59 = getfield_gc(p39, descr=<FieldP list.items 16>)
++667: i60 = arraylen_gc(p59, descr=<ArrayS 8>)
++667: call(ConstClass(_ll_list_resize_ge_trampoline__v921___simple_call__function__), p39, i58, descr=<Callv 0 ri EF=4>)
++744: setfield_gc(p15, i56, descr=<FieldS pypy.objspace.std.iterobject.W_AbstractSeqIterObject.inst_index 8>)
++755: guard_no_exception(descr=<Guard7f476d4d84d0>) [p1, p0, i57, i55, p39, p2, p3, p6, p13, p15, None]
++770: p61 = getfield_gc(p39, descr=<FieldP list.items 16>)
++781: setarrayitem_gc(p61, i57, i55, descr=<ArrayS 8>)
+debug_merge_point(0, 0, '<code object h. file 'x.py'. line 14> #25 JUMP_ABSOLUTE')
++793: guard_not_invalidated(descr=<Guard7f476d4d8458>) [p1, p0, p2, p3, p6, p13, p15, i55, None]
++793: i62 = getfield_raw(52008256, descr=<FieldS pypysig_long_struct.c_value 0>)
++801: i63 = int_lt(i62, 0)
+guard_false(i63, descr=<Guard7f476d4d83e0>) [p1, p0, p2, p3, p6, p13, p15, i55, None]
+debug_merge_point(0, 0, '<code object h. file 'x.py'. line 14> #13 FOR_ITER')
++811: jump(p0, p1, p2, p3, p6, i55, p13, p15, i56, i28, i27, i26, p39, descr=TargetToken(139944753096272))
++840: --end of the loop--
+[3304df359fe] jit-log-opt-loop}
+[3304df6aed1] {jit-backend-counts
+entry 0:1
+TargetToken(139944714371104):1
+TargetToken(139944714371192):4
+entry 1:1
+TargetToken(139944753096184):1
+TargetToken(139944753096272):4
+[3304df6da3a] jit-backend-counts}
diff --git a/pypy/tool/jitlogparser/test/test_parser.py b/pypy/tool/jitlogparser/test/test_parser.py
--- a/pypy/tool/jitlogparser/test/test_parser.py
+++ b/pypy/tool/jitlogparser/test/test_parser.py
@@ -106,13 +106,13 @@
fname = str(py.path.local(__file__).join('..', 'x.py'))
ops = parse('''
[i0, i1]
- debug_merge_point(0, 0, "<code object f. file '%(fname)s'. line 2> #0 LOAD_FAST")
- debug_merge_point(0, 0, "<code object f. file '%(fname)s'. line 2> #3 LOAD_FAST")
- debug_merge_point(0, 0, "<code object f. file '%(fname)s'. line 2> #6 BINARY_ADD")
- debug_merge_point(0, 0, "<code object f. file '%(fname)s'. line 2> #7 RETURN_VALUE")
+ debug_merge_point(0, 0, "<code object f. file '%(fname)s'. line 5> #0 LOAD_FAST")
+ debug_merge_point(0, 0, "<code object f. file '%(fname)s'. line 5> #3 LOAD_FAST")
+ debug_merge_point(0, 0, "<code object f. file '%(fname)s'. line 5> #6 BINARY_ADD")
+ debug_merge_point(0, 0, "<code object f. file '%(fname)s'. line 5> #7 RETURN_VALUE")
''' % locals())
res = Function.from_operations(ops.operations, LoopStorage())
- assert res.chunks[1].lineno == 3
+ assert res.chunks[1].lineno == 6
def test_linerange():
if sys.version_info > (2, 6):
@@ -150,7 +150,7 @@
''')
main.count = 10
bridge = parse('''
- # bridge out of Guard 18 with 13 ops
+ # bridge out of Guard 0x18 with 13 ops
[i0, i1]
int_add(i0, i1)
''')
@@ -172,7 +172,7 @@
guard_true(v0, descr=<Guard5>)
''')
bridge = parse('''
- # bridge out of Guard 1a
+ # bridge out of Guard 0x1a
[]
int_add(0, 1)
''')
@@ -287,9 +287,7 @@
'logtest2.log')))
for loop in loops:
loop.force_asm()
- assert 'cmp' in loops[1].operations[1].asm
- # bridge
- assert 'jo' in loops[3].operations[3].asm
+ assert 'cmp' in loops[1].operations[2].asm
def test_Op_repr_is_pure():
op = Op('foobar', ['a', 'b'], 'c', 'mydescr')
@@ -331,15 +329,15 @@
i113 = getfield_raw(151937600, descr=<SignedFieldDescr pypysig_long_struct.c_value 0>)
''')
bridge = parse('''
- # bridge out of Guard 2 with 1 ops
+ # bridge out of Guard 0xaf with 1 ops
[]
i0 = int_lt(1, 2)
finish(i0)
''')
- bridge.comment = 'bridge out of Guard af with 1 ops'
+ bridge.comment = 'bridge out of Guard 0xaf with 1 ops'
loop.comment = 'Loop 0'
loops = split_trace(loop) + split_trace(bridge)
- input = ['grrr:123\nasb:12\nbridge af:1234']
+ input = ['grrr:123\nasb:12\nbridge 175:1234']
parse_log_counts(input, loops)
assert loops[-1].count == 1234
assert loops[1].count == 123
@@ -349,10 +347,8 @@
loop = parse("""
[]
debug_merge_point(0, 0, 'random')
- debug_merge_point(0, 0, '<code object f. file 'x.py'. line 2> #15 COMPARE_OP')
""")
f = Function.from_operations(loop.operations, LoopStorage())
- assert f.chunks[-1].filename == 'x.py'
assert f.filename is None
def test_parse_2_levels_up():
diff --git a/pypy/tool/jitlogparser/test/x.py b/pypy/tool/jitlogparser/test/x.py
--- a/pypy/tool/jitlogparser/test/x.py
+++ b/pypy/tool/jitlogparser/test/x.py
@@ -1,3 +1,6 @@
+
+import pypyjit
+pypyjit.set_param(threshold=3)
def f(a, b):
return a + b
@@ -10,3 +13,6 @@
def h():
[x for x in range(10)]
+
+g()
+h()
diff --git a/pypy/tool/release/package.py b/pypy/tool/release/package.py
--- a/pypy/tool/release/package.py
+++ b/pypy/tool/release/package.py
@@ -146,6 +146,10 @@
else:
archive = str(builddir.join(name + '.tar.bz2'))
if sys.platform == 'darwin' or sys.platform.startswith('freebsd'):
+ print >>sys.stderr, """Warning: tar on current platform does not suport overriding the uid and gid
+for its contents. The tarball will contain your uid and gid. If you are
+building the actual release for the PyPy website, you may want to be
+using another platform..."""
e = os.system('tar --numeric-owner -cvjf ' + archive + " " + name)
elif sys.platform == 'cygwin':
e = os.system('tar --owner=Administrator --group=Administrators --numeric-owner -cvjf ' + archive + " " + name)
diff --git a/pypy/tool/release/test/test_package.py b/pypy/tool/release/test/test_package.py
--- a/pypy/tool/release/test/test_package.py
+++ b/pypy/tool/release/test/test_package.py
@@ -45,8 +45,11 @@
assert exe.mode == 0755
assert exe.uname == ''
assert exe.gname == ''
- assert exe.uid == 0
- assert exe.gid == 0
+ # The tar program on MacOSX or the FreeBSDs does not support
+ # setting the numeric uid and gid when creating a tar file.
+ if not(sys.platform == 'darwin' or sys.platform.startswith('freebsd')):
+ assert exe.uid == 0
+ assert exe.gid == 0
# the headers file could be not there, because they are copied into
# trunk/include only during translation
diff --git a/rpython/jit/backend/arm/assembler.py b/rpython/jit/backend/arm/assembler.py
--- a/rpython/jit/backend/arm/assembler.py
+++ b/rpython/jit/backend/arm/assembler.py
@@ -13,7 +13,7 @@
operations as regalloc_operations,
operations_with_guard as regalloc_operations_with_guard)
from rpython.jit.backend.llsupport import jitframe
-from rpython.jit.backend.llsupport.assembler import DEBUG_COUNTER
+from rpython.jit.backend.llsupport.assembler import DEBUG_COUNTER, debug_bridge
from rpython.jit.backend.llsupport.asmmemmgr import MachineDataBlockWrapper
from rpython.jit.backend.model import CompiledLoopToken
from rpython.jit.codewriter.effectinfo import EffectInfo
@@ -709,11 +709,7 @@
self.update_frame_depth(frame_depth)
self.teardown()
- debug_start("jit-backend-addr")
- debug_print("bridge out of Guard %d has address 0x%x to 0x%x" %
- (descr_number, r_uint(rawstart),
- r_uint(rawstart + codeendpos)))
- debug_stop("jit-backend-addr")
+ debug_bridge(descr_number, rawstart, codeendpos)
return AsmInfo(ops_offset, startpos + rawstart, codeendpos - startpos)
diff --git a/rpython/jit/backend/arm/test/test_calling_convention.py b/rpython/jit/backend/arm/test/test_calling_convention.py
--- a/rpython/jit/backend/arm/test/test_calling_convention.py
+++ b/rpython/jit/backend/arm/test/test_calling_convention.py
@@ -1,13 +1,13 @@
from rpython.rtyper.annlowlevel import llhelper
from rpython.jit.metainterp.history import JitCellToken
-from rpython.jit.backend.test.calling_convention_test import TestCallingConv, parse
+from rpython.jit.backend.test.calling_convention_test import CallingConvTests, parse
from rpython.rtyper.lltypesystem import lltype
from rpython.jit.codewriter.effectinfo import EffectInfo
from rpython.jit.backend.arm.test.support import skip_unless_run_slow_tests
skip_unless_run_slow_tests()
-class TestARMCallingConvention(TestCallingConv):
+class TestARMCallingConvention(CallingConvTests):
# ../../test/calling_convention_test.py
def test_call_argument_spilling(self):
diff --git a/rpython/jit/backend/llgraph/runner.py b/rpython/jit/backend/llgraph/runner.py
--- a/rpython/jit/backend/llgraph/runner.py
+++ b/rpython/jit/backend/llgraph/runner.py
@@ -35,7 +35,7 @@
self.operations = []
for op in operations:
if op.getdescr() is not None:
- if op.is_guard():
+ if op.is_guard() or op.getopnum() == rop.FINISH:
newdescr = op.getdescr()
else:
newdescr = WeakrefDescr(op.getdescr())
diff --git a/rpython/jit/backend/llsupport/assembler.py b/rpython/jit/backend/llsupport/assembler.py
--- a/rpython/jit/backend/llsupport/assembler.py
+++ b/rpython/jit/backend/llsupport/assembler.py
@@ -5,7 +5,8 @@
ConstInt, BoxInt)
from rpython.jit.metainterp.resoperation import ResOperation, rop
from rpython.rlib import rgc
-from rpython.rlib.debug import debug_start, debug_stop, have_debug_prints
+from rpython.rlib.debug import (debug_start, debug_stop, have_debug_prints,
+ debug_print)
from rpython.rlib.rarithmetic import r_uint
from rpython.rtyper.annlowlevel import cast_instance_to_gcref
from rpython.rtyper.lltypesystem import rffi, lltype
@@ -224,3 +225,12 @@
ResOperation(rop.SETFIELD_RAW, [c_adr, box2],
None, descr=self.debug_counter_descr)]
operations.extend(ops)
+
+
+def debug_bridge(descr_number, rawstart, codeendpos):
+ debug_start("jit-backend-addr")
+ debug_print("bridge out of Guard 0x%x has address 0x%x to 0x%x" %
+ (r_uint(descr_number), r_uint(rawstart),
+ r_uint(rawstart + codeendpos)))
+ debug_stop("jit-backend-addr")
+
diff --git a/rpython/jit/backend/test/calling_convention_test.py b/rpython/jit/backend/test/calling_convention_test.py
--- a/rpython/jit/backend/test/calling_convention_test.py
+++ b/rpython/jit/backend/test/calling_convention_test.py
@@ -10,6 +10,7 @@
from rpython.jit.backend.detect_cpu import getcpuclass
from rpython.jit.backend.test.runner_test import Runner
import py
+import sys
def boxfloat(x):
return BoxFloat(longlong.getfloatstorage(x))
@@ -381,6 +382,8 @@
raise NotImplementedError
def test_call_aligned_explicit_check(self):
+ if sys.maxint == 2 ** 31 - 1:
+ py.test.skip("libffi on 32bit is broken")
cpu = self.cpu
if not cpu.supports_floats:
py.test.skip('requires floats')
diff --git a/rpython/jit/backend/x86/assembler.py b/rpython/jit/backend/x86/assembler.py
--- a/rpython/jit/backend/x86/assembler.py
+++ b/rpython/jit/backend/x86/assembler.py
@@ -2,7 +2,8 @@
import os
from rpython.jit.backend.llsupport import symbolic, jitframe
-from rpython.jit.backend.llsupport.assembler import GuardToken, BaseAssembler, DEBUG_COUNTER
+from rpython.jit.backend.llsupport.assembler import (GuardToken, BaseAssembler,
+ DEBUG_COUNTER, debug_bridge)
from rpython.jit.backend.llsupport.asmmemmgr import MachineDataBlockWrapper
from rpython.jit.backend.llsupport.gcmap import allocate_gcmap
from rpython.jit.metainterp.history import Const, Box
@@ -553,11 +554,7 @@
rawstart = self.materialize_loop(original_loop_token)
self.patch_stack_checks(frame_depth_no_fixed_size + JITFRAME_FIXED_SIZE,
rawstart)
- debug_start("jit-backend-addr")
- debug_print("bridge out of Guard 0x%x has address 0x%x to 0x%x" %
- (r_uint(descr_number), r_uint(rawstart),
- r_uint(rawstart + codeendpos)))
- debug_stop("jit-backend-addr")
+ debug_bridge(descr_number, rawstart, codeendpos)
self.patch_pending_failure_recoveries(rawstart)
# patch the jump from original guard
self.patch_jump_for_descr(faildescr, rawstart)
diff --git a/rpython/jit/metainterp/logger.py b/rpython/jit/metainterp/logger.py
--- a/rpython/jit/metainterp/logger.py
+++ b/rpython/jit/metainterp/logger.py
@@ -43,7 +43,7 @@
else:
debug_start("jit-log-opt-bridge")
debug_print("# bridge out of Guard",
- "%x" % compute_unique_id(descr),
+ "0x%x" % compute_unique_id(descr),
"with", len(operations), "ops")
logops = self._log_operations(inputargs, operations, ops_offset)
debug_stop("jit-log-opt-bridge")
@@ -134,7 +134,7 @@
descr = op.getdescr()
if is_guard and self.guard_number:
hash = compute_unique_id(descr)
- r = "<Guard%x>" % hash
+ r = "<Guard0x%x>" % hash
else:
r = self.repr_of_descr(descr)
if args:
diff --git a/rpython/jit/metainterp/test/test_logger.py b/rpython/jit/metainterp/test/test_logger.py
--- a/rpython/jit/metainterp/test/test_logger.py
+++ b/rpython/jit/metainterp/test/test_logger.py
@@ -166,7 +166,7 @@
loop = pure_parse(inp, namespace=namespace)
logger = Logger(self.make_metainterp_sd(), guard_number=True)
output = logger.log_loop(loop)
- assert re.match("guard_true\(i0, descr=<Guard[\da-f]+>\) \[i0\]", output.splitlines()[-1])
+ assert re.match("guard_true\(i0, descr=<Guard0x[\da-f]+>\) \[i0\]", output.splitlines()[-1])
pure_parse(output)
logger = Logger(self.make_metainterp_sd(), guard_number=False)
@@ -200,7 +200,7 @@
def test_intro_bridge(self):
bare_logger = logger.Logger(self.make_metainterp_sd())
output = capturing(bare_logger.log_bridge, [], [], 3)
- assert re.match("# bridge out of Guard [\da-f]+ with 0 ops",
+ assert re.match("# bridge out of Guard 0x[\da-f]+ with 0 ops",
output.splitlines()[0])
pure_parse(output)
diff --git a/rpython/rlib/rstacklet.py b/rpython/rlib/rstacklet.py
--- a/rpython/rlib/rstacklet.py
+++ b/rpython/rlib/rstacklet.py
@@ -47,6 +47,10 @@
def get_null_handle(self):
return self._gcrootfinder.get_null_handle()
+ def _freeze_(self):
+ raise Exception("StackletThread instances must not be seen during"
+ " translation.")
+
class StackletThreadDeleter(object):
# quick hack: the __del__ is on another object, so that
diff --git a/rpython/rlib/unicodedata/CompositionExclusions-6.0.0.txt b/rpython/rlib/unicodedata/CompositionExclusions-6.0.0.txt
new file mode 100644
--- /dev/null
+++ b/rpython/rlib/unicodedata/CompositionExclusions-6.0.0.txt
@@ -0,0 +1,206 @@
+# CompositionExclusions-6.0.0.txt
+# Date: 2010-06-25, 14:34:00 PDT [KW]
+#
+# This file lists the characters for the Composition Exclusion Table
+# defined in UAX #15, Unicode Normalization Forms.
+#
+# This file is a normative contributory data file in the
+# Unicode Character Database.
+#
+# Copyright (c) 1991-2010 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+#
+# For more information, see
+# http://www.unicode.org/unicode/reports/tr15/#Primary_Exclusion_List_Table
+#
+# For a full derivation of composition exclusions, see the derived property
+# Full_Composition_Exclusion in DerivedNormalizationProps.txt
+#
+
+# ================================================
+# (1) Script Specifics
+#
+# This list of characters cannot be derived from the UnicodeData.txt file.
+# ================================================
+
+0958 # DEVANAGARI LETTER QA
+0959 # DEVANAGARI LETTER KHHA
+095A # DEVANAGARI LETTER GHHA
+095B # DEVANAGARI LETTER ZA
+095C # DEVANAGARI LETTER DDDHA
+095D # DEVANAGARI LETTER RHA
+095E # DEVANAGARI LETTER FA
+095F # DEVANAGARI LETTER YYA
+09DC # BENGALI LETTER RRA
+09DD # BENGALI LETTER RHA
+09DF # BENGALI LETTER YYA
+0A33 # GURMUKHI LETTER LLA
+0A36 # GURMUKHI LETTER SHA
+0A59 # GURMUKHI LETTER KHHA
+0A5A # GURMUKHI LETTER GHHA
+0A5B # GURMUKHI LETTER ZA
+0A5E # GURMUKHI LETTER FA
+0B5C # ORIYA LETTER RRA
+0B5D # ORIYA LETTER RHA
+0F43 # TIBETAN LETTER GHA
+0F4D # TIBETAN LETTER DDHA
+0F52 # TIBETAN LETTER DHA
+0F57 # TIBETAN LETTER BHA
+0F5C # TIBETAN LETTER DZHA
+0F69 # TIBETAN LETTER KSSA
+0F76 # TIBETAN VOWEL SIGN VOCALIC R
+0F78 # TIBETAN VOWEL SIGN VOCALIC L
+0F93 # TIBETAN SUBJOINED LETTER GHA
+0F9D # TIBETAN SUBJOINED LETTER DDHA
+0FA2 # TIBETAN SUBJOINED LETTER DHA
+0FA7 # TIBETAN SUBJOINED LETTER BHA
+0FAC # TIBETAN SUBJOINED LETTER DZHA
+0FB9 # TIBETAN SUBJOINED LETTER KSSA
+FB1D # HEBREW LETTER YOD WITH HIRIQ
+FB1F # HEBREW LIGATURE YIDDISH YOD YOD PATAH
+FB2A # HEBREW LETTER SHIN WITH SHIN DOT
+FB2B # HEBREW LETTER SHIN WITH SIN DOT
+FB2C # HEBREW LETTER SHIN WITH DAGESH AND SHIN DOT
+FB2D # HEBREW LETTER SHIN WITH DAGESH AND SIN DOT
+FB2E # HEBREW LETTER ALEF WITH PATAH
+FB2F # HEBREW LETTER ALEF WITH QAMATS
+FB30 # HEBREW LETTER ALEF WITH MAPIQ
+FB31 # HEBREW LETTER BET WITH DAGESH
+FB32 # HEBREW LETTER GIMEL WITH DAGESH
+FB33 # HEBREW LETTER DALET WITH DAGESH
+FB34 # HEBREW LETTER HE WITH MAPIQ
+FB35 # HEBREW LETTER VAV WITH DAGESH
+FB36 # HEBREW LETTER ZAYIN WITH DAGESH
+FB38 # HEBREW LETTER TET WITH DAGESH
+FB39 # HEBREW LETTER YOD WITH DAGESH
+FB3A # HEBREW LETTER FINAL KAF WITH DAGESH
+FB3B # HEBREW LETTER KAF WITH DAGESH
+FB3C # HEBREW LETTER LAMED WITH DAGESH
+FB3E # HEBREW LETTER MEM WITH DAGESH
+FB40 # HEBREW LETTER NUN WITH DAGESH
+FB41 # HEBREW LETTER SAMEKH WITH DAGESH
+FB43 # HEBREW LETTER FINAL PE WITH DAGESH
+FB44 # HEBREW LETTER PE WITH DAGESH
+FB46 # HEBREW LETTER TSADI WITH DAGESH
+FB47 # HEBREW LETTER QOF WITH DAGESH
+FB48 # HEBREW LETTER RESH WITH DAGESH
+FB49 # HEBREW LETTER SHIN WITH DAGESH
+FB4A # HEBREW LETTER TAV WITH DAGESH
+FB4B # HEBREW LETTER VAV WITH HOLAM
+FB4C # HEBREW LETTER BET WITH RAFE
+FB4D # HEBREW LETTER KAF WITH RAFE
+FB4E # HEBREW LETTER PE WITH RAFE
+
+# Total code points: 67
+
+# ================================================
+# (2) Post Composition Version precomposed characters
+#
+# These characters cannot be derived solely from the UnicodeData.txt file
+# in this version of Unicode.
+#
+# Note that characters added to the standard after the
+# Composition Version and which have canonical decomposition mappings
+# are not automatically added to this list of Post Composition
+# Version precomposed characters.
+# ================================================
+
+2ADC # FORKING
+1D15E # MUSICAL SYMBOL HALF NOTE
+1D15F # MUSICAL SYMBOL QUARTER NOTE
+1D160 # MUSICAL SYMBOL EIGHTH NOTE
+1D161 # MUSICAL SYMBOL SIXTEENTH NOTE
+1D162 # MUSICAL SYMBOL THIRTY-SECOND NOTE
+1D163 # MUSICAL SYMBOL SIXTY-FOURTH NOTE
+1D164 # MUSICAL SYMBOL ONE HUNDRED TWENTY-EIGHTH NOTE
+1D1BB # MUSICAL SYMBOL MINIMA
+1D1BC # MUSICAL SYMBOL MINIMA BLACK
+1D1BD # MUSICAL SYMBOL SEMIMINIMA WHITE
+1D1BE # MUSICAL SYMBOL SEMIMINIMA BLACK
+1D1BF # MUSICAL SYMBOL FUSA WHITE
+1D1C0 # MUSICAL SYMBOL FUSA BLACK
+
+# Total code points: 14
+
+# ================================================
+# (3) Singleton Decompositions
+#
+# These characters can be derived from the UnicodeData.txt file
+# by including all canonically decomposable characters whose
+# canonical decomposition consists of a single character.
+#
+# These characters are simply quoted here for reference.
+# See also Full_Composition_Exclusion in DerivedNormalizationProps.txt
+# ================================================
+
+# 0340..0341 [2] COMBINING GRAVE TONE MARK..COMBINING ACUTE TONE MARK
+# 0343 COMBINING GREEK KORONIS
+# 0374 GREEK NUMERAL SIGN
+# 037E GREEK QUESTION MARK
+# 0387 GREEK ANO TELEIA
+# 1F71 GREEK SMALL LETTER ALPHA WITH OXIA
+# 1F73 GREEK SMALL LETTER EPSILON WITH OXIA
+# 1F75 GREEK SMALL LETTER ETA WITH OXIA
+# 1F77 GREEK SMALL LETTER IOTA WITH OXIA
+# 1F79 GREEK SMALL LETTER OMICRON WITH OXIA
+# 1F7B GREEK SMALL LETTER UPSILON WITH OXIA
+# 1F7D GREEK SMALL LETTER OMEGA WITH OXIA
+# 1FBB GREEK CAPITAL LETTER ALPHA WITH OXIA
+# 1FBE GREEK PROSGEGRAMMENI
+# 1FC9 GREEK CAPITAL LETTER EPSILON WITH OXIA
+# 1FCB GREEK CAPITAL LETTER ETA WITH OXIA
+# 1FD3 GREEK SMALL LETTER IOTA WITH DIALYTIKA AND OXIA
+# 1FDB GREEK CAPITAL LETTER IOTA WITH OXIA
+# 1FE3 GREEK SMALL LETTER UPSILON WITH DIALYTIKA AND OXIA
+# 1FEB GREEK CAPITAL LETTER UPSILON WITH OXIA
+# 1FEE..1FEF [2] GREEK DIALYTIKA AND OXIA..GREEK VARIA
+# 1FF9 GREEK CAPITAL LETTER OMICRON WITH OXIA
+# 1FFB GREEK CAPITAL LETTER OMEGA WITH OXIA
+# 1FFD GREEK OXIA
+# 2000..2001 [2] EN QUAD..EM QUAD
+# 2126 OHM SIGN
+# 212A..212B [2] KELVIN SIGN..ANGSTROM SIGN
+# 2329 LEFT-POINTING ANGLE BRACKET
+# 232A RIGHT-POINTING ANGLE BRACKET
+# F900..FA0D [270] CJK COMPATIBILITY IDEOGRAPH-F900..CJK COMPATIBILITY IDEOGRAPH-FA0D
+# FA10 CJK COMPATIBILITY IDEOGRAPH-FA10
+# FA12 CJK COMPATIBILITY IDEOGRAPH-FA12
+# FA15..FA1E [10] CJK COMPATIBILITY IDEOGRAPH-FA15..CJK COMPATIBILITY IDEOGRAPH-FA1E
+# FA20 CJK COMPATIBILITY IDEOGRAPH-FA20
+# FA22 CJK COMPATIBILITY IDEOGRAPH-FA22
+# FA25..FA26 [2] CJK COMPATIBILITY IDEOGRAPH-FA25..CJK COMPATIBILITY IDEOGRAPH-FA26
+# FA2A..FA2D [4] CJK COMPATIBILITY IDEOGRAPH-FA2A..CJK COMPATIBILITY IDEOGRAPH-FA2D
+# FA30..FA6D [62] CJK COMPATIBILITY IDEOGRAPH-FA30..CJK COMPATIBILITY IDEOGRAPH-FA6D
+# FA70..FAD9 [106] CJK COMPATIBILITY IDEOGRAPH-FA70..CJK COMPATIBILITY IDEOGRAPH-FAD9
+# 2F800..2FA1D [542] CJK COMPATIBILITY IDEOGRAPH-2F800..CJK COMPATIBILITY IDEOGRAPH-2FA1D
+
+# Total code points: 1033
+
+# ================================================
+# (4) Non-Starter Decompositions
+#
+# These characters can be derived from the UnicodeData file
+# by including each expanding canonical decomposition
+# (i.e., those which canonically decompose to a sequence
+# of characters instead of a single character), such that:
+#
+# A. The character is not a Starter.
+#
+# OR (inclusive)
+#
+# B. The character's canonical decomposition begins
+# with a character that is not a Starter.
+#
+# Note that a "Starter" is any character with a zero combining class.
+#
+# These characters are simply quoted here for reference.
+# See also Full_Composition_Exclusion in DerivedNormalizationProps.txt
+# ================================================
+
+# 0344 COMBINING GREEK DIALYTIKA TONOS
+# 0F73 TIBETAN VOWEL SIGN II
+# 0F75 TIBETAN VOWEL SIGN UU
+# 0F81 TIBETAN VOWEL SIGN REVERSED II
+
+# Total code points: 4
+
diff --git a/rpython/rlib/unicodedata/DerivedCoreProperties-6.0.0.txt b/rpython/rlib/unicodedata/DerivedCoreProperties-6.0.0.txt
new file mode 100644
--- /dev/null
+++ b/rpython/rlib/unicodedata/DerivedCoreProperties-6.0.0.txt
@@ -0,0 +1,9482 @@
+# DerivedCoreProperties-6.0.0.txt
+# Date: 2010-08-19, 00:48:05 GMT [MD]
+#
+# Unicode Character Database
+# Copyright (c) 1991-2010 Unicode, Inc.
+# For terms of use, see http://www.unicode.org/terms_of_use.html
+# For documentation, see http://www.unicode.org/reports/tr44/
+
+# ================================================
+
+# Derived Property: Math
+# Generated from: Sm + Other_Math
+
+002B ; Math # Sm PLUS SIGN
+003C..003E ; Math # Sm [3] LESS-THAN SIGN..GREATER-THAN SIGN
+005E ; Math # Sk CIRCUMFLEX ACCENT
+007C ; Math # Sm VERTICAL LINE
+007E ; Math # Sm TILDE
+00AC ; Math # Sm NOT SIGN
+00B1 ; Math # Sm PLUS-MINUS SIGN
+00D7 ; Math # Sm MULTIPLICATION SIGN
+00F7 ; Math # Sm DIVISION SIGN
+03D0..03D2 ; Math # L& [3] GREEK BETA SYMBOL..GREEK UPSILON WITH HOOK SYMBOL
+03D5 ; Math # L& GREEK PHI SYMBOL
+03F0..03F1 ; Math # L& [2] GREEK KAPPA SYMBOL..GREEK RHO SYMBOL
+03F4..03F5 ; Math # L& [2] GREEK CAPITAL THETA SYMBOL..GREEK LUNATE EPSILON SYMBOL
+03F6 ; Math # Sm GREEK REVERSED LUNATE EPSILON SYMBOL
+0606..0608 ; Math # Sm [3] ARABIC-INDIC CUBE ROOT..ARABIC RAY
+2016 ; Math # Po DOUBLE VERTICAL LINE
+2032..2034 ; Math # Po [3] PRIME..TRIPLE PRIME
+2040 ; Math # Pc CHARACTER TIE
+2044 ; Math # Sm FRACTION SLASH
+2052 ; Math # Sm COMMERCIAL MINUS SIGN
+2061..2064 ; Math # Cf [4] FUNCTION APPLICATION..INVISIBLE PLUS
+207A..207C ; Math # Sm [3] SUPERSCRIPT PLUS SIGN..SUPERSCRIPT EQUALS SIGN
+207D ; Math # Ps SUPERSCRIPT LEFT PARENTHESIS
+207E ; Math # Pe SUPERSCRIPT RIGHT PARENTHESIS
+208A..208C ; Math # Sm [3] SUBSCRIPT PLUS SIGN..SUBSCRIPT EQUALS SIGN
+208D ; Math # Ps SUBSCRIPT LEFT PARENTHESIS
+208E ; Math # Pe SUBSCRIPT RIGHT PARENTHESIS
+20D0..20DC ; Math # Mn [13] COMBINING LEFT HARPOON ABOVE..COMBINING FOUR DOTS ABOVE
+20E1 ; Math # Mn COMBINING LEFT RIGHT ARROW ABOVE
+20E5..20E6 ; Math # Mn [2] COMBINING REVERSE SOLIDUS OVERLAY..COMBINING DOUBLE VERTICAL STROKE OVERLAY
+20EB..20EF ; Math # Mn [5] COMBINING LONG DOUBLE SOLIDUS OVERLAY..COMBINING RIGHT ARROW BELOW
+2102 ; Math # L& DOUBLE-STRUCK CAPITAL C
+2107 ; Math # L& EULER CONSTANT
+210A..2113 ; Math # L& [10] SCRIPT SMALL G..SCRIPT SMALL L
+2115 ; Math # L& DOUBLE-STRUCK CAPITAL N
+2118 ; Math # Sm SCRIPT CAPITAL P
+2119..211D ; Math # L& [5] DOUBLE-STRUCK CAPITAL P..DOUBLE-STRUCK CAPITAL R
+2124 ; Math # L& DOUBLE-STRUCK CAPITAL Z
+2128 ; Math # L& BLACK-LETTER CAPITAL Z
+2129 ; Math # So TURNED GREEK SMALL LETTER IOTA
+212C..212D ; Math # L& [2] SCRIPT CAPITAL B..BLACK-LETTER CAPITAL C
+212F..2131 ; Math # L& [3] SCRIPT SMALL E..SCRIPT CAPITAL F
+2133..2134 ; Math # L& [2] SCRIPT CAPITAL M..SCRIPT SMALL O
+2135..2138 ; Math # Lo [4] ALEF SYMBOL..DALET SYMBOL
+213C..213F ; Math # L& [4] DOUBLE-STRUCK SMALL PI..DOUBLE-STRUCK CAPITAL PI
+2140..2144 ; Math # Sm [5] DOUBLE-STRUCK N-ARY SUMMATION..TURNED SANS-SERIF CAPITAL Y
+2145..2149 ; Math # L& [5] DOUBLE-STRUCK ITALIC CAPITAL D..DOUBLE-STRUCK ITALIC SMALL J
+214B ; Math # Sm TURNED AMPERSAND
+2190..2194 ; Math # Sm [5] LEFTWARDS ARROW..LEFT RIGHT ARROW
+2195..2199 ; Math # So [5] UP DOWN ARROW..SOUTH WEST ARROW
+219A..219B ; Math # Sm [2] LEFTWARDS ARROW WITH STROKE..RIGHTWARDS ARROW WITH STROKE
+219C..219F ; Math # So [4] LEFTWARDS WAVE ARROW..UPWARDS TWO HEADED ARROW
+21A0 ; Math # Sm RIGHTWARDS TWO HEADED ARROW
+21A1..21A2 ; Math # So [2] DOWNWARDS TWO HEADED ARROW..LEFTWARDS ARROW WITH TAIL
+21A3 ; Math # Sm RIGHTWARDS ARROW WITH TAIL
+21A4..21A5 ; Math # So [2] LEFTWARDS ARROW FROM BAR..UPWARDS ARROW FROM BAR
+21A6 ; Math # Sm RIGHTWARDS ARROW FROM BAR
+21A7 ; Math # So DOWNWARDS ARROW FROM BAR
+21A9..21AD ; Math # So [5] LEFTWARDS ARROW WITH HOOK..LEFT RIGHT WAVE ARROW
+21AE ; Math # Sm LEFT RIGHT ARROW WITH STROKE
+21B0..21B1 ; Math # So [2] UPWARDS ARROW WITH TIP LEFTWARDS..UPWARDS ARROW WITH TIP RIGHTWARDS
+21B6..21B7 ; Math # So [2] ANTICLOCKWISE TOP SEMICIRCLE ARROW..CLOCKWISE TOP SEMICIRCLE ARROW
+21BC..21CD ; Math # So [18] LEFTWARDS HARPOON WITH BARB UPWARDS..LEFTWARDS DOUBLE ARROW WITH STROKE
+21CE..21CF ; Math # Sm [2] LEFT RIGHT DOUBLE ARROW WITH STROKE..RIGHTWARDS DOUBLE ARROW WITH STROKE
+21D0..21D1 ; Math # So [2] LEFTWARDS DOUBLE ARROW..UPWARDS DOUBLE ARROW
+21D2 ; Math # Sm RIGHTWARDS DOUBLE ARROW
+21D3 ; Math # So DOWNWARDS DOUBLE ARROW
+21D4 ; Math # Sm LEFT RIGHT DOUBLE ARROW
+21D5..21DB ; Math # So [7] UP DOWN DOUBLE ARROW..RIGHTWARDS TRIPLE ARROW
+21DD ; Math # So RIGHTWARDS SQUIGGLE ARROW
+21E4..21E5 ; Math # So [2] LEFTWARDS ARROW TO BAR..RIGHTWARDS ARROW TO BAR
+21F4..22FF ; Math # Sm [268] RIGHT ARROW WITH SMALL CIRCLE..Z NOTATION BAG MEMBERSHIP
+2308..230B ; Math # Sm [4] LEFT CEILING..RIGHT FLOOR
+2320..2321 ; Math # Sm [2] TOP HALF INTEGRAL..BOTTOM HALF INTEGRAL
+237C ; Math # Sm RIGHT ANGLE WITH DOWNWARDS ZIGZAG ARROW
+239B..23B3 ; Math # Sm [25] LEFT PARENTHESIS UPPER HOOK..SUMMATION BOTTOM
+23B4..23B5 ; Math # So [2] TOP SQUARE BRACKET..BOTTOM SQUARE BRACKET
+23B7 ; Math # So RADICAL SYMBOL BOTTOM
+23D0 ; Math # So VERTICAL LINE EXTENSION
+23DC..23E1 ; Math # Sm [6] TOP PARENTHESIS..BOTTOM TORTOISE SHELL BRACKET
+23E2 ; Math # So WHITE TRAPEZIUM
+25A0..25A1 ; Math # So [2] BLACK SQUARE..WHITE SQUARE
+25AE..25B6 ; Math # So [9] BLACK VERTICAL RECTANGLE..BLACK RIGHT-POINTING TRIANGLE
+25B7 ; Math # Sm WHITE RIGHT-POINTING TRIANGLE
+25BC..25C0 ; Math # So [5] BLACK DOWN-POINTING TRIANGLE..BLACK LEFT-POINTING TRIANGLE
+25C1 ; Math # Sm WHITE LEFT-POINTING TRIANGLE
+25C6..25C7 ; Math # So [2] BLACK DIAMOND..WHITE DIAMOND
+25CA..25CB ; Math # So [2] LOZENGE..WHITE CIRCLE
+25CF..25D3 ; Math # So [5] BLACK CIRCLE..CIRCLE WITH UPPER HALF BLACK
+25E2 ; Math # So BLACK LOWER RIGHT TRIANGLE
+25E4 ; Math # So BLACK UPPER LEFT TRIANGLE
+25E7..25EC ; Math # So [6] SQUARE WITH LEFT HALF BLACK..WHITE UP-POINTING TRIANGLE WITH DOT
+25F8..25FF ; Math # Sm [8] UPPER LEFT TRIANGLE..LOWER RIGHT TRIANGLE
+2605..2606 ; Math # So [2] BLACK STAR..WHITE STAR
+2640 ; Math # So FEMALE SIGN
+2642 ; Math # So MALE SIGN
+2660..2663 ; Math # So [4] BLACK SPADE SUIT..BLACK CLUB SUIT
+266D..266E ; Math # So [2] MUSIC FLAT SIGN..MUSIC NATURAL SIGN
+266F ; Math # Sm MUSIC SHARP SIGN
+27C0..27C4 ; Math # Sm [5] THREE DIMENSIONAL ANGLE..OPEN SUPERSET
+27C5 ; Math # Ps LEFT S-SHAPED BAG DELIMITER
+27C6 ; Math # Pe RIGHT S-SHAPED BAG DELIMITER
+27C7..27CA ; Math # Sm [4] OR WITH DOT INSIDE..VERTICAL BAR WITH HORIZONTAL STROKE
+27CC ; Math # Sm LONG DIVISION
+27CE..27E5 ; Math # Sm [24] SQUARED LOGICAL AND..WHITE SQUARE WITH RIGHTWARDS TICK
+27E6 ; Math # Ps MATHEMATICAL LEFT WHITE SQUARE BRACKET
+27E7 ; Math # Pe MATHEMATICAL RIGHT WHITE SQUARE BRACKET
+27E8 ; Math # Ps MATHEMATICAL LEFT ANGLE BRACKET
+27E9 ; Math # Pe MATHEMATICAL RIGHT ANGLE BRACKET
+27EA ; Math # Ps MATHEMATICAL LEFT DOUBLE ANGLE BRACKET
+27EB ; Math # Pe MATHEMATICAL RIGHT DOUBLE ANGLE BRACKET
+27EC ; Math # Ps MATHEMATICAL LEFT WHITE TORTOISE SHELL BRACKET
+27ED ; Math # Pe MATHEMATICAL RIGHT WHITE TORTOISE SHELL BRACKET
+27EE ; Math # Ps MATHEMATICAL LEFT FLATTENED PARENTHESIS
+27EF ; Math # Pe MATHEMATICAL RIGHT FLATTENED PARENTHESIS
+27F0..27FF ; Math # Sm [16] UPWARDS QUADRUPLE ARROW..LONG RIGHTWARDS SQUIGGLE ARROW
+2900..2982 ; Math # Sm [131] RIGHTWARDS TWO-HEADED ARROW WITH VERTICAL STROKE..Z NOTATION TYPE COLON
+2983 ; Math # Ps LEFT WHITE CURLY BRACKET
+2984 ; Math # Pe RIGHT WHITE CURLY BRACKET
+2985 ; Math # Ps LEFT WHITE PARENTHESIS
+2986 ; Math # Pe RIGHT WHITE PARENTHESIS
+2987 ; Math # Ps Z NOTATION LEFT IMAGE BRACKET
+2988 ; Math # Pe Z NOTATION RIGHT IMAGE BRACKET
+2989 ; Math # Ps Z NOTATION LEFT BINDING BRACKET
+298A ; Math # Pe Z NOTATION RIGHT BINDING BRACKET
+298B ; Math # Ps LEFT SQUARE BRACKET WITH UNDERBAR
+298C ; Math # Pe RIGHT SQUARE BRACKET WITH UNDERBAR
+298D ; Math # Ps LEFT SQUARE BRACKET WITH TICK IN TOP CORNER
+298E ; Math # Pe RIGHT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+298F ; Math # Ps LEFT SQUARE BRACKET WITH TICK IN BOTTOM CORNER
+2990 ; Math # Pe RIGHT SQUARE BRACKET WITH TICK IN TOP CORNER
+2991 ; Math # Ps LEFT ANGLE BRACKET WITH DOT
+2992 ; Math # Pe RIGHT ANGLE BRACKET WITH DOT
+2993 ; Math # Ps LEFT ARC LESS-THAN BRACKET
+2994 ; Math # Pe RIGHT ARC GREATER-THAN BRACKET
+2995 ; Math # Ps DOUBLE LEFT ARC GREATER-THAN BRACKET
+2996 ; Math # Pe DOUBLE RIGHT ARC LESS-THAN BRACKET
+2997 ; Math # Ps LEFT BLACK TORTOISE SHELL BRACKET
+2998 ; Math # Pe RIGHT BLACK TORTOISE SHELL BRACKET
+2999..29D7 ; Math # Sm [63] DOTTED FENCE..BLACK HOURGLASS
+29D8 ; Math # Ps LEFT WIGGLY FENCE
+29D9 ; Math # Pe RIGHT WIGGLY FENCE
+29DA ; Math # Ps LEFT DOUBLE WIGGLY FENCE
+29DB ; Math # Pe RIGHT DOUBLE WIGGLY FENCE
+29DC..29FB ; Math # Sm [32] INCOMPLETE INFINITY..TRIPLE PLUS
+29FC ; Math # Ps LEFT-POINTING CURVED ANGLE BRACKET
+29FD ; Math # Pe RIGHT-POINTING CURVED ANGLE BRACKET
+29FE..2AFF ; Math # Sm [258] TINY..N-ARY WHITE VERTICAL BAR
+2B30..2B44 ; Math # Sm [21] LEFT ARROW WITH SMALL CIRCLE..RIGHTWARDS ARROW THROUGH SUPERSET
+2B47..2B4C ; Math # Sm [6] REVERSE TILDE OPERATOR ABOVE RIGHTWARDS ARROW..RIGHTWARDS ARROW ABOVE REVERSE TILDE OPERATOR
+FB29 ; Math # Sm HEBREW LETTER ALTERNATIVE PLUS SIGN
+FE61 ; Math # Po SMALL ASTERISK
+FE62 ; Math # Sm SMALL PLUS SIGN
+FE63 ; Math # Pd SMALL HYPHEN-MINUS
+FE64..FE66 ; Math # Sm [3] SMALL LESS-THAN SIGN..SMALL EQUALS SIGN
+FE68 ; Math # Po SMALL REVERSE SOLIDUS
+FF0B ; Math # Sm FULLWIDTH PLUS SIGN
+FF1C..FF1E ; Math # Sm [3] FULLWIDTH LESS-THAN SIGN..FULLWIDTH GREATER-THAN SIGN
+FF3C ; Math # Po FULLWIDTH REVERSE SOLIDUS
+FF3E ; Math # Sk FULLWIDTH CIRCUMFLEX ACCENT
+FF5C ; Math # Sm FULLWIDTH VERTICAL LINE
+FF5E ; Math # Sm FULLWIDTH TILDE
+FFE2 ; Math # Sm FULLWIDTH NOT SIGN
+FFE9..FFEC ; Math # Sm [4] HALFWIDTH LEFTWARDS ARROW..HALFWIDTH DOWNWARDS ARROW
+1D400..1D454 ; Math # L& [85] MATHEMATICAL BOLD CAPITAL A..MATHEMATICAL ITALIC SMALL G
+1D456..1D49C ; Math # L& [71] MATHEMATICAL ITALIC SMALL I..MATHEMATICAL SCRIPT CAPITAL A
+1D49E..1D49F ; Math # L& [2] MATHEMATICAL SCRIPT CAPITAL C..MATHEMATICAL SCRIPT CAPITAL D
+1D4A2 ; Math # L& MATHEMATICAL SCRIPT CAPITAL G
+1D4A5..1D4A6 ; Math # L& [2] MATHEMATICAL SCRIPT CAPITAL J..MATHEMATICAL SCRIPT CAPITAL K
+1D4A9..1D4AC ; Math # L& [4] MATHEMATICAL SCRIPT CAPITAL N..MATHEMATICAL SCRIPT CAPITAL Q
+1D4AE..1D4B9 ; Math # L& [12] MATHEMATICAL SCRIPT CAPITAL S..MATHEMATICAL SCRIPT SMALL D
+1D4BB ; Math # L& MATHEMATICAL SCRIPT SMALL F
+1D4BD..1D4C3 ; Math # L& [7] MATHEMATICAL SCRIPT SMALL H..MATHEMATICAL SCRIPT SMALL N
+1D4C5..1D505 ; Math # L& [65] MATHEMATICAL SCRIPT SMALL P..MATHEMATICAL FRAKTUR CAPITAL B
+1D507..1D50A ; Math # L& [4] MATHEMATICAL FRAKTUR CAPITAL D..MATHEMATICAL FRAKTUR CAPITAL G
+1D50D..1D514 ; Math # L& [8] MATHEMATICAL FRAKTUR CAPITAL J..MATHEMATICAL FRAKTUR CAPITAL Q
+1D516..1D51C ; Math # L& [7] MATHEMATICAL FRAKTUR CAPITAL S..MATHEMATICAL FRAKTUR CAPITAL Y
+1D51E..1D539 ; Math # L& [28] MATHEMATICAL FRAKTUR SMALL A..MATHEMATICAL DOUBLE-STRUCK CAPITAL B
+1D53B..1D53E ; Math # L& [4] MATHEMATICAL DOUBLE-STRUCK CAPITAL D..MATHEMATICAL DOUBLE-STRUCK CAPITAL G
+1D540..1D544 ; Math # L& [5] MATHEMATICAL DOUBLE-STRUCK CAPITAL I..MATHEMATICAL DOUBLE-STRUCK CAPITAL M
+1D546 ; Math # L& MATHEMATICAL DOUBLE-STRUCK CAPITAL O
+1D54A..1D550 ; Math # L& [7] MATHEMATICAL DOUBLE-STRUCK CAPITAL S..MATHEMATICAL DOUBLE-STRUCK CAPITAL Y
+1D552..1D6A5 ; Math # L& [340] MATHEMATICAL DOUBLE-STRUCK SMALL A..MATHEMATICAL ITALIC SMALL DOTLESS J
+1D6A8..1D6C0 ; Math # L& [25] MATHEMATICAL BOLD CAPITAL ALPHA..MATHEMATICAL BOLD CAPITAL OMEGA
+1D6C1 ; Math # Sm MATHEMATICAL BOLD NABLA
+1D6C2..1D6DA ; Math # L& [25] MATHEMATICAL BOLD SMALL ALPHA..MATHEMATICAL BOLD SMALL OMEGA
+1D6DB ; Math # Sm MATHEMATICAL BOLD PARTIAL DIFFERENTIAL
+1D6DC..1D6FA ; Math # L& [31] MATHEMATICAL BOLD EPSILON SYMBOL..MATHEMATICAL ITALIC CAPITAL OMEGA
+1D6FB ; Math # Sm MATHEMATICAL ITALIC NABLA
+1D6FC..1D714 ; Math # L& [25] MATHEMATICAL ITALIC SMALL ALPHA..MATHEMATICAL ITALIC SMALL OMEGA
+1D715 ; Math # Sm MATHEMATICAL ITALIC PARTIAL DIFFERENTIAL
+1D716..1D734 ; Math # L& [31] MATHEMATICAL ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD ITALIC CAPITAL OMEGA
+1D735 ; Math # Sm MATHEMATICAL BOLD ITALIC NABLA
+1D736..1D74E ; Math # L& [25] MATHEMATICAL BOLD ITALIC SMALL ALPHA..MATHEMATICAL BOLD ITALIC SMALL OMEGA
+1D74F ; Math # Sm MATHEMATICAL BOLD ITALIC PARTIAL DIFFERENTIAL
+1D750..1D76E ; Math # L& [31] MATHEMATICAL BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD CAPITAL OMEGA
+1D76F ; Math # Sm MATHEMATICAL SANS-SERIF BOLD NABLA
+1D770..1D788 ; Math # L& [25] MATHEMATICAL SANS-SERIF BOLD SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD SMALL OMEGA
+1D789 ; Math # Sm MATHEMATICAL SANS-SERIF BOLD PARTIAL DIFFERENTIAL
+1D78A..1D7A8 ; Math # L& [31] MATHEMATICAL SANS-SERIF BOLD EPSILON SYMBOL..MATHEMATICAL SANS-SERIF BOLD ITALIC CAPITAL OMEGA
+1D7A9 ; Math # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC NABLA
+1D7AA..1D7C2 ; Math # L& [25] MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL ALPHA..MATHEMATICAL SANS-SERIF BOLD ITALIC SMALL OMEGA
+1D7C3 ; Math # Sm MATHEMATICAL SANS-SERIF BOLD ITALIC PARTIAL DIFFERENTIAL
+1D7C4..1D7CB ; Math # L& [8] MATHEMATICAL SANS-SERIF BOLD ITALIC EPSILON SYMBOL..MATHEMATICAL BOLD SMALL DIGAMMA
+1D7CE..1D7FF ; Math # Nd [50] MATHEMATICAL BOLD DIGIT ZERO..MATHEMATICAL MONOSPACE DIGIT NINE
+
+# Total code points: 2165
+
+# ================================================
+
+# Derived Property: Alphabetic
+# Generated from: Lu+Ll+Lt+Lm+Lo+Nl + Other_Alphabetic
+
+0041..005A ; Alphabetic # L& [26] LATIN CAPITAL LETTER A..LATIN CAPITAL LETTER Z
+0061..007A ; Alphabetic # L& [26] LATIN SMALL LETTER A..LATIN SMALL LETTER Z
+00AA ; Alphabetic # L& FEMININE ORDINAL INDICATOR
+00B5 ; Alphabetic # L& MICRO SIGN
+00BA ; Alphabetic # L& MASCULINE ORDINAL INDICATOR
+00C0..00D6 ; Alphabetic # L& [23] LATIN CAPITAL LETTER A WITH GRAVE..LATIN CAPITAL LETTER O WITH DIAERESIS
+00D8..00F6 ; Alphabetic # L& [31] LATIN CAPITAL LETTER O WITH STROKE..LATIN SMALL LETTER O WITH DIAERESIS
+00F8..01BA ; Alphabetic # L& [195] LATIN SMALL LETTER O WITH STROKE..LATIN SMALL LETTER EZH WITH TAIL
+01BB ; Alphabetic # Lo LATIN LETTER TWO WITH STROKE
+01BC..01BF ; Alphabetic # L& [4] LATIN CAPITAL LETTER TONE FIVE..LATIN LETTER WYNN
+01C0..01C3 ; Alphabetic # Lo [4] LATIN LETTER DENTAL CLICK..LATIN LETTER RETROFLEX CLICK
+01C4..0293 ; Alphabetic # L& [208] LATIN CAPITAL LETTER DZ WITH CARON..LATIN SMALL LETTER EZH WITH CURL
+0294 ; Alphabetic # Lo LATIN LETTER GLOTTAL STOP
+0295..02AF ; Alphabetic # L& [27] LATIN LETTER PHARYNGEAL VOICED FRICATIVE..LATIN SMALL LETTER TURNED H WITH FISHHOOK AND TAIL
+02B0..02C1 ; Alphabetic # Lm [18] MODIFIER LETTER SMALL H..MODIFIER LETTER REVERSED GLOTTAL STOP
+02C6..02D1 ; Alphabetic # Lm [12] MODIFIER LETTER CIRCUMFLEX ACCENT..MODIFIER LETTER HALF TRIANGULAR COLON
+02E0..02E4 ; Alphabetic # Lm [5] MODIFIER LETTER SMALL GAMMA..MODIFIER LETTER SMALL REVERSED GLOTTAL STOP
+02EC ; Alphabetic # Lm MODIFIER LETTER VOICING
+02EE ; Alphabetic # Lm MODIFIER LETTER DOUBLE APOSTROPHE
+0345 ; Alphabetic # Mn COMBINING GREEK YPOGEGRAMMENI
+0370..0373 ; Alphabetic # L& [4] GREEK CAPITAL LETTER HETA..GREEK SMALL LETTER ARCHAIC SAMPI
+0374 ; Alphabetic # Lm GREEK NUMERAL SIGN
+0376..0377 ; Alphabetic # L& [2] GREEK CAPITAL LETTER PAMPHYLIAN DIGAMMA..GREEK SMALL LETTER PAMPHYLIAN DIGAMMA
+037A ; Alphabetic # Lm GREEK YPOGEGRAMMENI
+037B..037D ; Alphabetic # L& [3] GREEK SMALL REVERSED LUNATE SIGMA SYMBOL..GREEK SMALL REVERSED DOTTED LUNATE SIGMA SYMBOL
+0386 ; Alphabetic # L& GREEK CAPITAL LETTER ALPHA WITH TONOS
+0388..038A ; Alphabetic # L& [3] GREEK CAPITAL LETTER EPSILON WITH TONOS..GREEK CAPITAL LETTER IOTA WITH TONOS
+038C ; Alphabetic # L& GREEK CAPITAL LETTER OMICRON WITH TONOS
+038E..03A1 ; Alphabetic # L& [20] GREEK CAPITAL LETTER UPSILON WITH TONOS..GREEK CAPITAL LETTER RHO
+03A3..03F5 ; Alphabetic # L& [83] GREEK CAPITAL LETTER SIGMA..GREEK LUNATE EPSILON SYMBOL
+03F7..0481 ; Alphabetic # L& [139] GREEK CAPITAL LETTER SHO..CYRILLIC SMALL LETTER KOPPA
+048A..0527 ; Alphabetic # L& [158] CYRILLIC CAPITAL LETTER SHORT I WITH TAIL..CYRILLIC SMALL LETTER SHHA WITH DESCENDER
+0531..0556 ; Alphabetic # L& [38] ARMENIAN CAPITAL LETTER AYB..ARMENIAN CAPITAL LETTER FEH
+0559 ; Alphabetic # Lm ARMENIAN MODIFIER LETTER LEFT HALF RING
+0561..0587 ; Alphabetic # L& [39] ARMENIAN SMALL LETTER AYB..ARMENIAN SMALL LIGATURE ECH YIWN
+05B0..05BD ; Alphabetic # Mn [14] HEBREW POINT SHEVA..HEBREW POINT METEG
+05BF ; Alphabetic # Mn HEBREW POINT RAFE
+05C1..05C2 ; Alphabetic # Mn [2] HEBREW POINT SHIN DOT..HEBREW POINT SIN DOT
+05C4..05C5 ; Alphabetic # Mn [2] HEBREW MARK UPPER DOT..HEBREW MARK LOWER DOT
+05C7 ; Alphabetic # Mn HEBREW POINT QAMATS QATAN
+05D0..05EA ; Alphabetic # Lo [27] HEBREW LETTER ALEF..HEBREW LETTER TAV
+05F0..05F2 ; Alphabetic # Lo [3] HEBREW LIGATURE YIDDISH DOUBLE VAV..HEBREW LIGATURE YIDDISH DOUBLE YOD
+0610..061A ; Alphabetic # Mn [11] ARABIC SIGN SALLALLAHOU ALAYHE WASSALLAM..ARABIC SMALL KASRA
+0620..063F ; Alphabetic # Lo [32] ARABIC LETTER KASHMIRI YEH..ARABIC LETTER FARSI YEH WITH THREE DOTS ABOVE
+0640 ; Alphabetic # Lm ARABIC TATWEEL
+0641..064A ; Alphabetic # Lo [10] ARABIC LETTER FEH..ARABIC LETTER YEH
+064B..0657 ; Alphabetic # Mn [13] ARABIC FATHATAN..ARABIC INVERTED DAMMA
+0659..065F ; Alphabetic # Mn [7] ARABIC ZWARAKAY..ARABIC WAVY HAMZA BELOW
+066E..066F ; Alphabetic # Lo [2] ARABIC LETTER DOTLESS BEH..ARABIC LETTER DOTLESS QAF
+0670 ; Alphabetic # Mn ARABIC LETTER SUPERSCRIPT ALEF
+0671..06D3 ; Alphabetic # Lo [99] ARABIC LETTER ALEF WASLA..ARABIC LETTER YEH BARREE WITH HAMZA ABOVE
+06D5 ; Alphabetic # Lo ARABIC LETTER AE
+06D6..06DC ; Alphabetic # Mn [7] ARABIC SMALL HIGH LIGATURE SAD WITH LAM WITH ALEF MAKSURA..ARABIC SMALL HIGH SEEN
+06E1..06E4 ; Alphabetic # Mn [4] ARABIC SMALL HIGH DOTLESS HEAD OF KHAH..ARABIC SMALL HIGH MADDA
+06E5..06E6 ; Alphabetic # Lm [2] ARABIC SMALL WAW..ARABIC SMALL YEH
+06E7..06E8 ; Alphabetic # Mn [2] ARABIC SMALL HIGH YEH..ARABIC SMALL HIGH NOON
+06ED ; Alphabetic # Mn ARABIC SMALL LOW MEEM
+06EE..06EF ; Alphabetic # Lo [2] ARABIC LETTER DAL WITH INVERTED V..ARABIC LETTER REH WITH INVERTED V
+06FA..06FC ; Alphabetic # Lo [3] ARABIC LETTER SHEEN WITH DOT BELOW..ARABIC LETTER GHAIN WITH DOT BELOW
+06FF ; Alphabetic # Lo ARABIC LETTER HEH WITH INVERTED V
+0710 ; Alphabetic # Lo SYRIAC LETTER ALAPH
+0711 ; Alphabetic # Mn SYRIAC LETTER SUPERSCRIPT ALAPH
+0712..072F ; Alphabetic # Lo [30] SYRIAC LETTER BETH..SYRIAC LETTER PERSIAN DHALATH
+0730..073F ; Alphabetic # Mn [16] SYRIAC PTHAHA ABOVE..SYRIAC RWAHA
+074D..07A5 ; Alphabetic # Lo [89] SYRIAC LETTER SOGDIAN ZHAIN..THAANA LETTER WAAVU
+07A6..07B0 ; Alphabetic # Mn [11] THAANA ABAFILI..THAANA SUKUN
+07B1 ; Alphabetic # Lo THAANA LETTER NAA
+07CA..07EA ; Alphabetic # Lo [33] NKO LETTER A..NKO LETTER JONA RA
+07F4..07F5 ; Alphabetic # Lm [2] NKO HIGH TONE APOSTROPHE..NKO LOW TONE APOSTROPHE
+07FA ; Alphabetic # Lm NKO LAJANYALAN
+0800..0815 ; Alphabetic # Lo [22] SAMARITAN LETTER ALAF..SAMARITAN LETTER TAAF
+0816..0817 ; Alphabetic # Mn [2] SAMARITAN MARK IN..SAMARITAN MARK IN-ALAF
+081A ; Alphabetic # Lm SAMARITAN MODIFIER LETTER EPENTHETIC YUT
+081B..0823 ; Alphabetic # Mn [9] SAMARITAN MARK EPENTHETIC YUT..SAMARITAN VOWEL SIGN A
+0824 ; Alphabetic # Lm SAMARITAN MODIFIER LETTER SHORT A
+0825..0827 ; Alphabetic # Mn [3] SAMARITAN VOWEL SIGN SHORT A..SAMARITAN VOWEL SIGN U
+0828 ; Alphabetic # Lm SAMARITAN MODIFIER LETTER I
+0829..082C ; Alphabetic # Mn [4] SAMARITAN VOWEL SIGN LONG I..SAMARITAN VOWEL SIGN SUKUN
+0840..0858 ; Alphabetic # Lo [25] MANDAIC LETTER HALQA..MANDAIC LETTER AIN
+0900..0902 ; Alphabetic # Mn [3] DEVANAGARI SIGN INVERTED CANDRABINDU..DEVANAGARI SIGN ANUSVARA
+0903 ; Alphabetic # Mc DEVANAGARI SIGN VISARGA
+0904..0939 ; Alphabetic # Lo [54] DEVANAGARI LETTER SHORT A..DEVANAGARI LETTER HA
+093A ; Alphabetic # Mn DEVANAGARI VOWEL SIGN OE
+093B ; Alphabetic # Mc DEVANAGARI VOWEL SIGN OOE
+093D ; Alphabetic # Lo DEVANAGARI SIGN AVAGRAHA
+093E..0940 ; Alphabetic # Mc [3] DEVANAGARI VOWEL SIGN AA..DEVANAGARI VOWEL SIGN II
+0941..0948 ; Alphabetic # Mn [8] DEVANAGARI VOWEL SIGN U..DEVANAGARI VOWEL SIGN AI
+0949..094C ; Alphabetic # Mc [4] DEVANAGARI VOWEL SIGN CANDRA O..DEVANAGARI VOWEL SIGN AU
+094E..094F ; Alphabetic # Mc [2] DEVANAGARI VOWEL SIGN PRISHTHAMATRA E..DEVANAGARI VOWEL SIGN AW
+0950 ; Alphabetic # Lo DEVANAGARI OM
+0955..0957 ; Alphabetic # Mn [3] DEVANAGARI VOWEL SIGN CANDRA LONG E..DEVANAGARI VOWEL SIGN UUE
+0958..0961 ; Alphabetic # Lo [10] DEVANAGARI LETTER QA..DEVANAGARI LETTER VOCALIC LL
+0962..0963 ; Alphabetic # Mn [2] DEVANAGARI VOWEL SIGN VOCALIC L..DEVANAGARI VOWEL SIGN VOCALIC LL
+0971 ; Alphabetic # Lm DEVANAGARI SIGN HIGH SPACING DOT
+0972..0977 ; Alphabetic # Lo [6] DEVANAGARI LETTER CANDRA A..DEVANAGARI LETTER UUE
+0979..097F ; Alphabetic # Lo [7] DEVANAGARI LETTER ZHA..DEVANAGARI LETTER BBA
+0981 ; Alphabetic # Mn BENGALI SIGN CANDRABINDU
+0982..0983 ; Alphabetic # Mc [2] BENGALI SIGN ANUSVARA..BENGALI SIGN VISARGA
+0985..098C ; Alphabetic # Lo [8] BENGALI LETTER A..BENGALI LETTER VOCALIC L
+098F..0990 ; Alphabetic # Lo [2] BENGALI LETTER E..BENGALI LETTER AI
+0993..09A8 ; Alphabetic # Lo [22] BENGALI LETTER O..BENGALI LETTER NA
+09AA..09B0 ; Alphabetic # Lo [7] BENGALI LETTER PA..BENGALI LETTER RA
+09B2 ; Alphabetic # Lo BENGALI LETTER LA
+09B6..09B9 ; Alphabetic # Lo [4] BENGALI LETTER SHA..BENGALI LETTER HA
+09BD ; Alphabetic # Lo BENGALI SIGN AVAGRAHA
+09BE..09C0 ; Alphabetic # Mc [3] BENGALI VOWEL SIGN AA..BENGALI VOWEL SIGN II
+09C1..09C4 ; Alphabetic # Mn [4] BENGALI VOWEL SIGN U..BENGALI VOWEL SIGN VOCALIC RR
+09C7..09C8 ; Alphabetic # Mc [2] BENGALI VOWEL SIGN E..BENGALI VOWEL SIGN AI
+09CB..09CC ; Alphabetic # Mc [2] BENGALI VOWEL SIGN O..BENGALI VOWEL SIGN AU
+09CE ; Alphabetic # Lo BENGALI LETTER KHANDA TA
+09D7 ; Alphabetic # Mc BENGALI AU LENGTH MARK
+09DC..09DD ; Alphabetic # Lo [2] BENGALI LETTER RRA..BENGALI LETTER RHA
+09DF..09E1 ; Alphabetic # Lo [3] BENGALI LETTER YYA..BENGALI LETTER VOCALIC LL
+09E2..09E3 ; Alphabetic # Mn [2] BENGALI VOWEL SIGN VOCALIC L..BENGALI VOWEL SIGN VOCALIC LL
+09F0..09F1 ; Alphabetic # Lo [2] BENGALI LETTER RA WITH MIDDLE DIAGONAL..BENGALI LETTER RA WITH LOWER DIAGONAL
+0A01..0A02 ; Alphabetic # Mn [2] GURMUKHI SIGN ADAK BINDI..GURMUKHI SIGN BINDI
+0A03 ; Alphabetic # Mc GURMUKHI SIGN VISARGA
+0A05..0A0A ; Alphabetic # Lo [6] GURMUKHI LETTER A..GURMUKHI LETTER UU
+0A0F..0A10 ; Alphabetic # Lo [2] GURMUKHI LETTER EE..GURMUKHI LETTER AI
+0A13..0A28 ; Alphabetic # Lo [22] GURMUKHI LETTER OO..GURMUKHI LETTER NA
+0A2A..0A30 ; Alphabetic # Lo [7] GURMUKHI LETTER PA..GURMUKHI LETTER RA
+0A32..0A33 ; Alphabetic # Lo [2] GURMUKHI LETTER LA..GURMUKHI LETTER LLA
+0A35..0A36 ; Alphabetic # Lo [2] GURMUKHI LETTER VA..GURMUKHI LETTER SHA
+0A38..0A39 ; Alphabetic # Lo [2] GURMUKHI LETTER SA..GURMUKHI LETTER HA
+0A3E..0A40 ; Alphabetic # Mc [3] GURMUKHI VOWEL SIGN AA..GURMUKHI VOWEL SIGN II
+0A41..0A42 ; Alphabetic # Mn [2] GURMUKHI VOWEL SIGN U..GURMUKHI VOWEL SIGN UU
+0A47..0A48 ; Alphabetic # Mn [2] GURMUKHI VOWEL SIGN EE..GURMUKHI VOWEL SIGN AI
+0A4B..0A4C ; Alphabetic # Mn [2] GURMUKHI VOWEL SIGN OO..GURMUKHI VOWEL SIGN AU
+0A51 ; Alphabetic # Mn GURMUKHI SIGN UDAAT
+0A59..0A5C ; Alphabetic # Lo [4] GURMUKHI LETTER KHHA..GURMUKHI LETTER RRA
More information about the pypy-commit
mailing list