Mercurial > hg > graal-jvmci-8
comparison src/cpu/zero/vm/frame_zero.cpp @ 1078:8e7adf982378
6896043: first round of zero fixes
Reviewed-by: kvn
Contributed-by: Gary Benson <gbenson@redhat.com>
author | twisti |
---|---|
date | Fri, 27 Nov 2009 07:56:58 -0800 |
parents | 354d3184f6b2 |
children | 0c5b3cf3c1f5 |
comparison
equal
deleted
inserted
replaced
1073:de44705e6b33 | 1078:8e7adf982378 |
---|---|
34 | 34 |
35 bool frame::is_interpreted_frame() const { | 35 bool frame::is_interpreted_frame() const { |
36 return zeroframe()->is_interpreter_frame(); | 36 return zeroframe()->is_interpreter_frame(); |
37 } | 37 } |
38 | 38 |
39 bool frame::is_fake_stub_frame() const { | |
40 return zeroframe()->is_fake_stub_frame(); | |
41 } | |
42 | |
43 frame frame::sender_for_entry_frame(RegisterMap *map) const { | 39 frame frame::sender_for_entry_frame(RegisterMap *map) const { |
40 assert(zeroframe()->is_entry_frame(), "wrong type of frame"); | |
44 assert(map != NULL, "map must be set"); | 41 assert(map != NULL, "map must be set"); |
45 assert(!entry_frame_is_first(), "next Java fp must be non zero"); | 42 assert(!entry_frame_is_first(), "next Java fp must be non zero"); |
46 assert(entry_frame_call_wrapper()->anchor()->last_Java_sp() == sender_sp(), | 43 assert(entry_frame_call_wrapper()->anchor()->last_Java_sp() == sender_sp(), |
47 "sender should be next Java frame"); | 44 "sender should be next Java frame"); |
48 map->clear(); | 45 map->clear(); |
49 assert(map->include_argument_oops(), "should be set by clear"); | 46 assert(map->include_argument_oops(), "should be set by clear"); |
50 return frame(sender_sp(), sp() + 1); | 47 return frame(sender_sp(), sp() + 1); |
51 } | 48 } |
52 | 49 |
53 frame frame::sender_for_interpreter_frame(RegisterMap *map) const { | 50 frame frame::sender_for_nonentry_frame(RegisterMap *map) const { |
54 return frame(sender_sp(), sp() + 1); | 51 assert(zeroframe()->is_interpreter_frame() || |
55 } | 52 zeroframe()->is_shark_frame() || |
56 | 53 zeroframe()->is_fake_stub_frame(), "wrong type of frame"); |
57 frame frame::sender_for_compiled_frame(RegisterMap *map) const { | |
58 return frame(sender_sp(), sp() + 1); | |
59 } | |
60 | |
61 frame frame::sender_for_fake_stub_frame(RegisterMap *map) const { | |
62 return frame(sender_sp(), sp() + 1); | 54 return frame(sender_sp(), sp() + 1); |
63 } | 55 } |
64 | 56 |
65 frame frame::sender(RegisterMap* map) const { | 57 frame frame::sender(RegisterMap* map) const { |
66 // Default is not to follow arguments; the various | 58 // Default is not to follow arguments; the various |
67 // sender_for_xxx methods update this accordingly. | 59 // sender_for_xxx methods update this accordingly. |
68 map->set_include_argument_oops(false); | 60 map->set_include_argument_oops(false); |
69 | 61 |
70 if (is_entry_frame()) | 62 if (is_entry_frame()) |
71 return sender_for_entry_frame(map); | 63 return sender_for_entry_frame(map); |
72 | 64 else |
73 if (is_interpreted_frame()) | 65 return sender_for_nonentry_frame(map); |
74 return sender_for_interpreter_frame(map); | |
75 | |
76 if (is_compiled_frame()) | |
77 return sender_for_compiled_frame(map); | |
78 | |
79 if (is_fake_stub_frame()) | |
80 return sender_for_fake_stub_frame(map); | |
81 | |
82 ShouldNotReachHere(); | |
83 } | 66 } |
84 | 67 |
85 #ifdef CC_INTERP | 68 #ifdef CC_INTERP |
86 BasicObjectLock* frame::interpreter_frame_monitor_begin() const { | 69 BasicObjectLock* frame::interpreter_frame_monitor_begin() const { |
87 return get_interpreterState()->monitor_base(); | 70 return get_interpreterState()->monitor_base(); |