hotspot/src/cpu/x86/vm/interpreter_x86_64.cpp
changeset 34651 07b1cc0f6040
parent 33465 6063f28a6efb
child 35146 9ebfec283f56
child 35214 d86005e0b4c2
equal deleted inserted replaced
34648:b7ea5d095ef5 34651:07b1cc0f6040
     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 }