equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2003, 2015, Oracle and/or its affiliates. All rights reserved. |
3 * Copyright (c) 2014, Red Hat Inc. All rights reserved. |
3 * Copyright (c) 2014, Red Hat Inc. All rights reserved. |
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
5 * |
5 * |
6 * This code is free software; you can redistribute it and/or modify it |
6 * This code is free software; you can redistribute it and/or modify it |
7 * under the terms of the GNU General Public License version 2 only, as |
7 * under the terms of the GNU General Public License version 2 only, as |
37 #include "oops/oop.inline.hpp" |
37 #include "oops/oop.inline.hpp" |
38 #include "prims/jvmtiExport.hpp" |
38 #include "prims/jvmtiExport.hpp" |
39 #include "prims/jvmtiThreadState.hpp" |
39 #include "prims/jvmtiThreadState.hpp" |
40 #include "prims/methodHandles.hpp" |
40 #include "prims/methodHandles.hpp" |
41 #include "runtime/arguments.hpp" |
41 #include "runtime/arguments.hpp" |
42 #include "runtime/deoptimization.hpp" |
|
43 #include "runtime/frame.inline.hpp" |
42 #include "runtime/frame.inline.hpp" |
44 #include "runtime/sharedRuntime.hpp" |
43 #include "runtime/sharedRuntime.hpp" |
45 #include "runtime/stubRoutines.hpp" |
44 #include "runtime/stubRoutines.hpp" |
46 #include "runtime/synchronizer.hpp" |
45 #include "runtime/synchronizer.hpp" |
47 #include "runtime/timer.hpp" |
46 #include "runtime/timer.hpp" |
257 // the call_VM checks for exception, so we should never return here. |
256 // the call_VM checks for exception, so we should never return here. |
258 __ should_not_reach_here(); |
257 __ should_not_reach_here(); |
259 |
258 |
260 return entry_point; |
259 return entry_point; |
261 } |
260 } |
262 |
|
263 |
|
264 void Deoptimization::unwind_callee_save_values(frame* f, vframeArray* vframe_array) { |
|
265 |
|
266 // This code is sort of the equivalent of C2IAdapter::setup_stack_frame back in |
|
267 // the days we had adapter frames. When we deoptimize a situation where a |
|
268 // compiled caller calls a compiled caller will have registers it expects |
|
269 // to survive the call to the callee. If we deoptimize the callee the only |
|
270 // way we can restore these registers is to have the oldest interpreter |
|
271 // frame that we create restore these values. That is what this routine |
|
272 // will accomplish. |
|
273 |
|
274 // At the moment we have modified c2 to not have any callee save registers |
|
275 // so this problem does not exist and this routine is just a place holder. |
|
276 |
|
277 assert(f->is_interpreted_frame(), "must be interpreted"); |
|
278 } |
|