equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * |
4 * |
5 * This code is free software; you can redistribute it and/or modify it |
5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as |
6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. |
7 * published by the Free Software Foundation. |
36 #include "oops/oop.inline.hpp" |
36 #include "oops/oop.inline.hpp" |
37 #include "prims/jvmtiExport.hpp" |
37 #include "prims/jvmtiExport.hpp" |
38 #include "prims/jvmtiThreadState.hpp" |
38 #include "prims/jvmtiThreadState.hpp" |
39 #include "prims/methodHandles.hpp" |
39 #include "prims/methodHandles.hpp" |
40 #include "runtime/arguments.hpp" |
40 #include "runtime/arguments.hpp" |
41 #include "runtime/deoptimization.hpp" |
|
42 #include "runtime/frame.inline.hpp" |
41 #include "runtime/frame.inline.hpp" |
43 #include "runtime/sharedRuntime.hpp" |
42 #include "runtime/sharedRuntime.hpp" |
44 #include "runtime/stubRoutines.hpp" |
43 #include "runtime/stubRoutines.hpp" |
45 #include "runtime/synchronizer.hpp" |
44 #include "runtime/synchronizer.hpp" |
46 #include "runtime/timer.hpp" |
45 #include "runtime/timer.hpp" |
182 __ mov(rsp, rsi); // set sp to sender sp |
181 __ mov(rsp, rsi); // set sp to sender sp |
183 __ jmp(rdi); |
182 __ jmp(rdi); |
184 |
183 |
185 return entry_point; |
184 return entry_point; |
186 } |
185 } |
187 |
|
188 |
|
189 void Deoptimization::unwind_callee_save_values(frame* f, vframeArray* vframe_array) { |
|
190 |
|
191 // This code is sort of the equivalent of C2IAdapter::setup_stack_frame back in |
|
192 // the days we had adapter frames. When we deoptimize a situation where a |
|
193 // compiled caller calls a compiled caller will have registers it expects |
|
194 // to survive the call to the callee. If we deoptimize the callee the only |
|
195 // way we can restore these registers is to have the oldest interpreter |
|
196 // frame that we create restore these values. That is what this routine |
|
197 // will accomplish. |
|
198 |
|
199 // At the moment we have modified c2 to not have any callee save registers |
|
200 // so this problem does not exist and this routine is just a place holder. |
|
201 |
|
202 assert(f->is_interpreted_frame(), "must be interpreted"); |
|
203 } |
|