def test_blockbuildermixin(translated=True): mc = BlockBuilderMixin(translated) writtencode = [] for i in range(mc.SUBBLOCK_SIZE * 2 + 3): assert mc.get_relative_pos() == i mc.writechar(chr(i % 255)) writtencode.append(chr(i % 255)) if translated: assert mc._cursubindex == 3 assert mc._cursubblock assert mc._cursubblock.prev assert mc._cursubblock.prev.prev assert not mc._cursubblock.prev.prev.prev # for i in range(0, mc.SUBBLOCK_SIZE * 2 + 3, 2): mc.overwrite(i, chr((i + 63) % 255)) writtencode[i] = chr((i + 63) % 255) # p = lltype.malloc(rffi.CCHARP.TO, mc.SUBBLOCK_SIZE * 2 + 3, flavor='raw') addr = rffi.cast(lltype.Signed, p) mc.copy_to_raw_memory(addr) # for i in range(mc.SUBBLOCK_SIZE * 2 + 3): assert p[i] == writtencode[i] # debug._log = debug.DebugLog() try: mc._dump(addr, 'test-logname-section') log = list(debug._log) finally: debug._log = None encoded = ''.join(writtencode).encode('hex').upper() ataddr = '@%x' % addr assert log == [('test-logname-section', [('debug_print', 'SYS_EXECUTABLE', '??'), ('debug_print', 'CODE_DUMP', ataddr, '+0 ', encoded)])] lltype.free(p, flavor='raw')
def test_blockbuildermixin(translated=True): mc = BlockBuilderMixin(translated) writtencode = [] for i in range(mc.SUBBLOCK_SIZE * 2 + 3): assert mc.get_relative_pos() == i mc.writechar(chr(i % 255)) writtencode.append(chr(i % 255)) if translated: assert mc._cursubindex == 3 assert mc._cursubblock assert mc._cursubblock.prev assert mc._cursubblock.prev.prev assert not mc._cursubblock.prev.prev.prev # for i in range(0, mc.SUBBLOCK_SIZE * 2 + 3, 2): mc.overwrite(i, chr((i + 63) % 255)) writtencode[i] = chr((i + 63) % 255) # p = lltype.malloc(rffi.CCHARP.TO, mc.SUBBLOCK_SIZE * 2 + 3, flavor='raw') addr = rffi.cast(lltype.Signed, p) mc.copy_to_raw_memory(addr) # for i in range(mc.SUBBLOCK_SIZE * 2 + 3): assert p[i] == writtencode[i] # debug._log = debug.DebugLog() try: mc._dump(addr, 'test-logname-section') log = list(debug._log) finally: debug._log = None encoded = ''.join(writtencode).encode('hex').upper() ataddr = '@%x' % addr assert log == [('test-logname-section', [('debug_print', 'SYS_EXECUTABLE', '??'), ('debug_print', 'CODE_DUMP', ataddr, '+0 ', encoded)])] lltype.free(p, flavor='raw')
def get_relative_pos(self, break_basic_block=True): if break_basic_block: self.forget_scratch_register() return BlockBuilderMixin.get_relative_pos(self)