diff options
author | Yao Qi <yao.qi@linaro.org> | 2017-07-18 12:46:14 +0100 |
---|---|---|
committer | Yao Qi <yao.qi@linaro.org> | 2017-07-18 12:46:14 +0100 |
commit | cfb7e58b483faa7ca4a3a8bb0030ed3e990b2c5c (patch) | |
tree | 57310cba2c726033617ff662ebbd25e7a096e527 /gdb/regcache.c | |
parent | c646b4e87f4b3445f83d48fa7d85999dd702c50f (diff) | |
download | gdb-cfb7e58b483faa7ca4a3a8bb0030ed3e990b2c5c.zip gdb-cfb7e58b483faa7ca4a3a8bb0030ed3e990b2c5c.tar.gz gdb-cfb7e58b483faa7ca4a3a8bb0030ed3e990b2c5c.tar.bz2 |
Simplify regcache_cpy and remove regcache::cpy_no_passthrough
Nowadays, regcache_cpy is used where src is read-only and dst is not
read-only, so the regcache_cpy can be simplified to handle this case only.
As a result, regcache::cpy_no_passthrough, which is about two read-only
regcache copy, is no longer used, remove it as well.
gdb:
2017-07-18 Yao Qi <yao.qi@linaro.org>
* regcache.c (regcache_cpy): Simplify it.
(regcache::cpy_no_passthrough): Remove it.
* regcache.h (cpy_no_passthrough): Remove it.
(regcache_dup, regcache_cpy): Update comments.
Diffstat (limited to 'gdb/regcache.c')
-rw-r--r-- | gdb/regcache.c | 31 |
1 files changed, 2 insertions, 29 deletions
diff --git a/gdb/regcache.c b/gdb/regcache.c index 7eeb737..e8f92d6 100644 --- a/gdb/regcache.c +++ b/gdb/regcache.c @@ -388,36 +388,9 @@ regcache_cpy (struct regcache *dst, struct regcache *src) gdb_assert (src != NULL && dst != NULL); gdb_assert (src->m_descr->gdbarch == dst->m_descr->gdbarch); gdb_assert (src != dst); - gdb_assert (src->m_readonly_p || dst->m_readonly_p); + gdb_assert (src->m_readonly_p && !dst->m_readonly_p); - if (!src->m_readonly_p) - regcache_save (dst, do_cooked_read, src); - else if (!dst->m_readonly_p) - dst->restore (src); - else - dst->cpy_no_passthrough (src); -} - -/* Copy/duplicate the contents of a register cache. Unlike regcache_cpy, - which is pass-through, this does not go through to the target. - Only values values already in the cache are transferred. The SRC and DST - buffers must not overlap. */ - -void -regcache::cpy_no_passthrough (struct regcache *src) -{ - gdb_assert (src != NULL); - gdb_assert (src->m_descr->gdbarch == m_descr->gdbarch); - /* NOTE: cagney/2002-05-17: Don't let the caller do a no-passthrough - move of data into a thread's regcache. Doing this would be silly - - it would mean that regcache->register_status would be - completely invalid. */ - gdb_assert (m_readonly_p && src->m_readonly_p); - - memcpy (m_registers, src->m_registers, - m_descr->sizeof_cooked_registers); - memcpy (m_register_status, src->m_register_status, - m_descr->sizeof_cooked_register_status); + dst->restore (src); } struct regcache * |