Mercurial > hg > truffle
comparison src/cpu/zero/vm/frame_zero.inline.hpp @ 7599:c566b81b3323
8005817: Shark: implement deoptimization support
Reviewed-by: twisti
Contributed-by: Roman Kennke <rkennke@redhat.com>
author | twisti |
---|---|
date | Fri, 11 Jan 2013 16:47:23 -0800 |
parents | a3e2f723f2a5 |
children | c54a3122f9c8 |
comparison
equal
deleted
inserted
replaced
7598:f9bda35f4226 | 7599:c566b81b3323 |
---|---|
43 _sp = sp; | 43 _sp = sp; |
44 switch (zeroframe()->type()) { | 44 switch (zeroframe()->type()) { |
45 case ZeroFrame::ENTRY_FRAME: | 45 case ZeroFrame::ENTRY_FRAME: |
46 _pc = StubRoutines::call_stub_return_pc(); | 46 _pc = StubRoutines::call_stub_return_pc(); |
47 _cb = NULL; | 47 _cb = NULL; |
48 _deopt_state = not_deoptimized; | |
48 break; | 49 break; |
49 | 50 |
50 case ZeroFrame::INTERPRETER_FRAME: | 51 case ZeroFrame::INTERPRETER_FRAME: |
51 _pc = NULL; | 52 _pc = NULL; |
52 _cb = NULL; | 53 _cb = NULL; |
54 _deopt_state = not_deoptimized; | |
53 break; | 55 break; |
54 | 56 |
55 case ZeroFrame::SHARK_FRAME: | 57 case ZeroFrame::SHARK_FRAME: { |
56 _pc = zero_sharkframe()->pc(); | 58 _pc = zero_sharkframe()->pc(); |
57 _cb = CodeCache::find_blob_unsafe(pc()); | 59 _cb = CodeCache::find_blob_unsafe(pc()); |
60 address original_pc = nmethod::get_deopt_original_pc(this); | |
61 if (original_pc != NULL) { | |
62 _pc = original_pc; | |
63 _deopt_state = is_deoptimized; | |
64 } else { | |
65 _deopt_state = not_deoptimized; | |
66 } | |
58 break; | 67 break; |
59 | 68 } |
60 case ZeroFrame::FAKE_STUB_FRAME: | 69 case ZeroFrame::FAKE_STUB_FRAME: |
61 _pc = NULL; | 70 _pc = NULL; |
62 _cb = NULL; | 71 _cb = NULL; |
72 _deopt_state = not_deoptimized; | |
63 break; | 73 break; |
64 | 74 |
65 default: | 75 default: |
66 ShouldNotReachHere(); | 76 ShouldNotReachHere(); |
67 } | 77 } |
68 _deopt_state = not_deoptimized; | |
69 } | 78 } |
70 | 79 |
71 // Accessors | 80 // Accessors |
72 | 81 |
73 inline intptr_t* frame::sender_sp() const { | 82 inline intptr_t* frame::sender_sp() const { |