equal
deleted
inserted
replaced
1 /* |
1 /* |
2 * Copyright (c) 2003, 2014, Oracle and/or its affiliates. All rights reserved. |
2 * Copyright (c) 2003, 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" |
296 __ mov(rsp, r13); |
295 __ mov(rsp, r13); |
297 __ jmp(rax); |
296 __ jmp(rax); |
298 |
297 |
299 return entry_point; |
298 return entry_point; |
300 } |
299 } |
301 |
|
302 void Deoptimization::unwind_callee_save_values(frame* f, vframeArray* vframe_array) { |
|
303 |
|
304 // This code is sort of the equivalent of C2IAdapter::setup_stack_frame back in |
|
305 // the days we had adapter frames. When we deoptimize a situation where a |
|
306 // compiled caller calls a compiled caller will have registers it expects |
|
307 // to survive the call to the callee. If we deoptimize the callee the only |
|
308 // way we can restore these registers is to have the oldest interpreter |
|
309 // frame that we create restore these values. That is what this routine |
|
310 // will accomplish. |
|
311 |
|
312 // At the moment we have modified c2 to not have any callee save registers |
|
313 // so this problem does not exist and this routine is just a place holder. |
|
314 |
|
315 assert(f->is_interpreted_frame(), "must be interpreted"); |
|
316 } |
|