PageRenderTime 28ms CodeModel.GetById 26ms RepoModel.GetById 0ms app.codeStats 0ms

/rpython/memory/gc/test/test_inspector.py

https://bitbucket.org/pypy/pypy/
Python | 48 lines | 40 code | 6 blank | 2 comment | 3 complexity | 97c4c1306f71ff9abaf5f4c680e37766 MD5 | raw file
Possible License(s): AGPL-3.0, BSD-3-Clause, Apache-2.0
  1. import os
  2. from rpython.tool.udir import udir
  3. from rpython.memory.gc.test.test_direct import BaseDirectGCTest, S
  4. from rpython.memory.gc import inspector
  5. from rpython.rtyper.lltypesystem import llmemory
  6. class InspectorTest(BaseDirectGCTest):
  7. def test_dump_rpy_heap(self):
  8. p = self.malloc(S)
  9. p.x = 5
  10. q = self.malloc(S)
  11. q.x = 6
  12. self.write(p, 'next', q)
  13. self.stackroots.append(p)
  14. #
  15. saved = inspector.HeapDumper.flush.im_func
  16. try:
  17. seen = []
  18. def my_flush(self):
  19. for i in range(self.buf_count):
  20. seen.append(self.writebuffer[i])
  21. self.buf_count = 0
  22. inspector.HeapDumper.flush = my_flush
  23. inspector.dump_rpy_heap(self.gc, -123456)
  24. finally:
  25. inspector.HeapDumper.flush = saved
  26. #
  27. class ASize(object):
  28. def __eq__(self, other):
  29. return isinstance(other, llmemory.AddressOffset)
  30. adr_p = seen[0]
  31. adr_q = seen[3]
  32. expected = [adr_p, 1, ASize(), adr_q, -1,
  33. 0, 0, 0, -1,
  34. adr_q, 1, ASize(), -1]
  35. assert expected == seen
  36. class TestHybridGC(InspectorTest):
  37. from rpython.memory.gc.hybrid import HybridGC as GCClass
  38. class TestMiniMarkGCSimple(InspectorTest):
  39. from rpython.memory.gc.minimark import MiniMarkGC as GCClass
  40. from rpython.memory.gc.minimarktest import SimpleArenaCollection
  41. GC_PARAMS = {'ArenaCollectionClass': SimpleArenaCollection,
  42. "card_page_indices": 4}