Author: fijal
Branch:
Changeset: r83595:cea17113ade7
Date: 2016-04-09 20:09 +0100
http://bitbucket.org/pypy/pypy/changeset/cea17113ade7/
Log: kill the depthmap calculation - it's unused by anything and takes
memory. Leave the frame size calculations, so we can assert things
(why not)
diff --git a/rpython/jit/backend/llsupport/asmmemmgr.py
b/rpython/jit/backend/llsupport/asmmemmgr.py
--- a/rpython/jit/backend/llsupport/asmmemmgr.py
+++ b/rpython/jit/backend/llsupport/asmmemmgr.py
@@ -216,9 +216,6 @@
gcroot_markers = None
- frame_positions = None
- frame_assignments = None
-
def __init__(self, translated=None):
if translated is None:
translated = we_are_translated()
@@ -323,12 +320,6 @@
assert gcrootmap is not None
for pos, mark in self.gcroot_markers:
gcrootmap.register_asm_addr(rawstart + pos, mark)
- if cpu.HAS_CODEMAP:
- cpu.codemap.register_frame_depth_map(rawstart, rawstart + size,
- self.frame_positions,
- self.frame_assignments)
- self.frame_positions = None
- self.frame_assignments = None
return rawstart
def _become_a_plain_block_builder(self):
diff --git a/rpython/jit/backend/llsupport/codemap.py
b/rpython/jit/backend/llsupport/codemap.py
--- a/rpython/jit/backend/llsupport/codemap.py
+++ b/rpython/jit/backend/llsupport/codemap.py
@@ -41,10 +41,6 @@
RPY_EXTERN long pypy_yield_codemap_at_addr(void *codemap_raw, long addr,
long *current_pos_addr);
-RPY_EXTERN long pypy_jit_depthmap_add(unsigned long addr, unsigned int size,
- unsigned int stackdepth);
-RPY_EXTERN void pypy_jit_depthmap_clear(unsigned long addr, unsigned int size);
-
"""], separate_module_sources=[
open(os.path.join(srcdir, 'skiplist.c'), 'r').read() +
open(os.path.join(srcdir, 'codemap.c'), 'r').read()
@@ -64,15 +60,6 @@
pypy_jit_codemap_firstkey = llexternal('pypy_jit_codemap_firstkey',
[], lltype.Signed)
-pypy_jit_depthmap_add = llexternal('pypy_jit_depthmap_add',
- [lltype.Signed, lltype.Signed,
- lltype.Signed], lltype.Signed)
-pypy_jit_depthmap_clear = llexternal('pypy_jit_depthmap_clear',
- [lltype.Signed, lltype.Signed],
- lltype.Void)
-
-stack_depth_at_loc = llexternal('pypy_jit_stack_depth_at_loc',
- [lltype.Signed], lltype.Signed)
find_codemap_at_addr = llexternal('pypy_find_codemap_at_addr',
[lltype.Signed,
rffi.CArrayPtr(lltype.Signed)],
llmemory.Address)
@@ -102,20 +89,6 @@
items = pypy_jit_codemap_del(start, stop - start)
if items:
lltype.free(items, flavor='raw', track_allocation=False)
- pypy_jit_depthmap_clear(start, stop - start)
-
- def register_frame_depth_map(self, rawstart, rawstop, frame_positions,
- frame_assignments):
- if not frame_positions:
- return
- assert len(frame_positions) == len(frame_assignments)
- for i in range(len(frame_positions)-1, -1, -1):
- pos = rawstart + frame_positions[i]
- length = rawstop - pos
- if length > 0:
- #print "ADD:", pos, length, frame_assignments[i]
- pypy_jit_depthmap_add(pos, length, frame_assignments[i])
- rawstop = pos
def register_codemap(self, (start, size, l)):
items = lltype.malloc(INT_LIST_PTR.TO, len(l), flavor='raw',
diff --git a/rpython/jit/backend/llsupport/src/codemap.c
b/rpython/jit/backend/llsupport/src/codemap.c
--- a/rpython/jit/backend/llsupport/src/codemap.c
+++ b/rpython/jit/backend/llsupport/src/codemap.c
@@ -139,78 +139,3 @@
current_pos = data->bytecode_info[current_pos + 3];
}
}
-
-/************************************************************/
-/*** depthmap storage ***/
-/************************************************************/
-
-typedef struct {
- unsigned int block_size;
- unsigned int stack_depth;
-} depthmap_data_t;
-
-static skipnode_t jit_depthmap_head;
-
-/*** interface used from codemap.py ***/
-
-RPY_EXTERN
-long pypy_jit_depthmap_add(unsigned long addr, unsigned int size,
- unsigned int stackdepth)
-{
- skipnode_t *new = skiplist_malloc(sizeof(depthmap_data_t));
- depthmap_data_t *data;
- if (new == NULL)
- return -1; /* too bad */
-
- new->key = addr;
- data = (depthmap_data_t *)new->data;
- data->block_size = size;
- data->stack_depth = stackdepth;
-
- pypy_codemap_invalid_set(1);
- skiplist_insert(&jit_depthmap_head, new);
- pypy_codemap_invalid_set(0);
- return 0;
-}
-
-RPY_EXTERN
-void pypy_jit_depthmap_clear(unsigned long addr, unsigned int size)
-{
- unsigned long search_key = addr + size - 1;
- if (size == 0)
- return;
-
- pypy_codemap_invalid_set(1);
- while (1) {
- /* search for all nodes belonging to the range, and remove them */
- skipnode_t *node = skiplist_search(&jit_depthmap_head, search_key);
- if (node->key < addr)
- break; /* exhausted */
- skiplist_remove(&jit_depthmap_head, node->key);
- free(node);
- }
- pypy_codemap_invalid_set(0);
-}
-
-/*** interface used from pypy/module/_vmprof ***/
-
-RPY_EXTERN
-long pypy_jit_stack_depth_at_loc(long loc)
-{
- skipnode_t *depthmap = skiplist_search(&jit_depthmap_head,
- (unsigned long)loc);
- depthmap_data_t *data;
- unsigned long rel_addr;
-
- if (depthmap == &jit_depthmap_head)
- return -1;
-
- rel_addr = (unsigned long)loc - depthmap->key;
- data = (depthmap_data_t *)depthmap->data;
- if (rel_addr >= data->block_size)
- return -1;
-
- return data->stack_depth;
-}
-
-/************************************************************/
diff --git a/rpython/jit/backend/llsupport/test/test_codemap.py
b/rpython/jit/backend/llsupport/test/test_codemap.py
--- a/rpython/jit/backend/llsupport/test/test_codemap.py
+++ b/rpython/jit/backend/llsupport/test/test_codemap.py
@@ -1,6 +1,5 @@
from rpython.rtyper.lltypesystem import rffi, lltype
-from rpython.jit.backend.llsupport.codemap import stack_depth_at_loc
from rpython.jit.backend.llsupport.codemap import CodemapStorage, \
CodemapBuilder, unpack_traceback, find_codemap_at_addr
@@ -27,34 +26,6 @@
#
codemap.free()
-def test_find_jit_frame_depth():
- codemap = CodemapStorage()
- codemap.setup()
- codemap.register_frame_depth_map(11, 26, [0, 5, 10], [1, 2, 3])
- codemap.register_frame_depth_map(30, 41, [0, 5, 10], [4, 5, 6])
- codemap.register_frame_depth_map(0, 11, [0, 5, 10], [7, 8, 9])
- assert stack_depth_at_loc(13) == 1
- assert stack_depth_at_loc(-3) == -1
- assert stack_depth_at_loc(40) == 6
- assert stack_depth_at_loc(41) == -1
- assert stack_depth_at_loc(5) == 8
- assert stack_depth_at_loc(17) == 2
- assert stack_depth_at_loc(38) == 5
- assert stack_depth_at_loc(25) == 3
- assert stack_depth_at_loc(26) == -1
- assert stack_depth_at_loc(11) == 1
- assert stack_depth_at_loc(10) == 9
- codemap.free_asm_block(11, 26)
- assert stack_depth_at_loc(11) == -1
- assert stack_depth_at_loc(13) == -1
- assert stack_depth_at_loc(-3) == -1
- assert stack_depth_at_loc(40) == 6
- assert stack_depth_at_loc(41) == -1
- assert stack_depth_at_loc(5) == 8
- assert stack_depth_at_loc(38) == 5
- assert stack_depth_at_loc(10) == 9
- codemap.free()
-
def test_free_with_alignment():
codemap = CodemapStorage()
codemap.setup()
diff --git a/rpython/jit/backend/x86/rx86.py b/rpython/jit/backend/x86/rx86.py
--- a/rpython/jit/backend/x86/rx86.py
+++ b/rpython/jit/backend/x86/rx86.py
@@ -470,8 +470,6 @@
"""Abstract base class."""
def __init__(self):
- self.frame_positions = []
- self.frame_assignments = []
self.force_frame_size(self.WORD)
def writechar(self, char):
@@ -492,15 +490,11 @@
self.writechar(chr((imm >> 24) & 0xFF))
def force_frame_size(self, frame_size):
- self.frame_positions.append(self.get_relative_pos())
- self.frame_assignments.append(frame_size)
self._frame_size = frame_size
def stack_frame_size_delta(self, delta):
"Called when we generate an instruction that changes the value of ESP"
self._frame_size += delta
- self.frame_positions.append(self.get_relative_pos())
- self.frame_assignments.append(self._frame_size)
assert self._frame_size >= self.WORD
def check_stack_size_at_ret(self):
diff --git a/rpython/rlib/rvmprof/src/vmprof_get_custom_offset.h
b/rpython/rlib/rvmprof/src/vmprof_get_custom_offset.h
--- a/rpython/rlib/rvmprof/src/vmprof_get_custom_offset.h
+++ b/rpython/rlib/rvmprof/src/vmprof_get_custom_offset.h
@@ -2,7 +2,6 @@
void *pypy_find_codemap_at_addr(long addr, long *start_addr);
long pypy_yield_codemap_at_addr(void *codemap_raw, long addr,
long *current_pos_addr);
-long pypy_jit_stack_depth_at_loc(long loc);
static long vmprof_write_header_for_jit_addr(intptr_t *result, long n,
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit