2005-04-01 Michael Snyder <msnyder@redhat.com>
* dummy-frame.c (dummy_frame_sniffer): Optimization: don't bother computing this_id if there are no dummy frames on the stack.
This commit is contained in:
parent
f6fe78d68c
commit
0c98cc2b81
|
@ -1,5 +1,8 @@
|
||||||
2005-04-01 Michael Snyder <msnyder@redhat.com>
|
2005-04-01 Michael Snyder <msnyder@redhat.com>
|
||||||
|
|
||||||
|
* dummy-frame.c (dummy_frame_sniffer): Optimization: don't bother
|
||||||
|
computing this_id if there are no dummy frames on the stack.
|
||||||
|
|
||||||
* mn10300-tdep.c (mn10300_frame_unwind_cache): Use
|
* mn10300-tdep.c (mn10300_frame_unwind_cache): Use
|
||||||
find_partial_func instead of unwind_pc to identify frame.
|
find_partial_func instead of unwind_pc to identify frame.
|
||||||
(mn10300_push_dummy_call): Handle struct args, struct_return.
|
(mn10300_push_dummy_call): Handle struct args, struct_return.
|
||||||
|
|
|
@ -137,25 +137,31 @@ dummy_frame_sniffer (const struct frame_unwind *self,
|
||||||
entry point, or some random address on the stack. Trying to use
|
entry point, or some random address on the stack. Trying to use
|
||||||
that PC to apply standard frame ID unwind techniques is just
|
that PC to apply standard frame ID unwind techniques is just
|
||||||
asking for trouble. */
|
asking for trouble. */
|
||||||
/* Use an architecture specific method to extract the prev's dummy
|
|
||||||
ID from the next frame. Note that this method uses
|
/* Don't bother unles there is at least one dummy frame. */
|
||||||
frame_register_unwind to obtain the register values needed to
|
if (dummy_frame_stack != NULL)
|
||||||
determine the dummy frame's ID. */
|
|
||||||
this_id = gdbarch_unwind_dummy_id (get_frame_arch (next_frame), next_frame);
|
|
||||||
|
|
||||||
/* Use that ID to find the corresponding cache entry. */
|
|
||||||
for (dummyframe = dummy_frame_stack;
|
|
||||||
dummyframe != NULL;
|
|
||||||
dummyframe = dummyframe->next)
|
|
||||||
{
|
{
|
||||||
if (frame_id_eq (dummyframe->id, this_id))
|
/* Use an architecture specific method to extract the prev's
|
||||||
|
dummy ID from the next frame. Note that this method uses
|
||||||
|
frame_register_unwind to obtain the register values needed to
|
||||||
|
determine the dummy frame's ID. */
|
||||||
|
this_id = gdbarch_unwind_dummy_id (get_frame_arch (next_frame),
|
||||||
|
next_frame);
|
||||||
|
|
||||||
|
/* Use that ID to find the corresponding cache entry. */
|
||||||
|
for (dummyframe = dummy_frame_stack;
|
||||||
|
dummyframe != NULL;
|
||||||
|
dummyframe = dummyframe->next)
|
||||||
{
|
{
|
||||||
struct dummy_frame_cache *cache;
|
if (frame_id_eq (dummyframe->id, this_id))
|
||||||
cache = FRAME_OBSTACK_ZALLOC (struct dummy_frame_cache);
|
{
|
||||||
cache->prev_regcache = dummyframe->regcache;
|
struct dummy_frame_cache *cache;
|
||||||
cache->this_id = this_id;
|
cache = FRAME_OBSTACK_ZALLOC (struct dummy_frame_cache);
|
||||||
(*this_prologue_cache) = cache;
|
cache->prev_regcache = dummyframe->regcache;
|
||||||
return 1;
|
cache->this_id = this_id;
|
||||||
|
(*this_prologue_cache) = cache;
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
|
|
Loading…
Reference in New Issue