hotspot/src/share/vm/interpreter/abstractInterpreter.hpp
changeset 35479 62c12ca7a45e
parent 35214 d86005e0b4c2
child 37439 e8970711113b
equal deleted inserted replaced
35474:8333d76c7fee 35479:62c12ca7a45e
     1 /*
     1 /*
     2  * Copyright (c) 1997, 2015, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 1997, 2016, 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.
   282     case T_DOUBLE:  set_long_in_slot(slot_addr, jlong_cast(value->d));  break;
   282     case T_DOUBLE:  set_long_in_slot(slot_addr, jlong_cast(value->d));  break;
   283     case T_OBJECT:  *oop_addr_in_slot(slot_addr) = (oop) value->l;      break;
   283     case T_OBJECT:  *oop_addr_in_slot(slot_addr) = (oop) value->l;      break;
   284     default:        ShouldNotReachHere();
   284     default:        ShouldNotReachHere();
   285     }
   285     }
   286   }
   286   }
       
   287 
       
   288   static void initialize_method_handle_entries();
       
   289 
       
   290   // PPC-only: Support abs and sqrt like in compiler.
       
   291   // For others we can use a normal (native) entry.
       
   292   static bool math_entry_available(MethodKind kind);
   287 };
   293 };
   288 
   294 
   289 //------------------------------------------------------------------------------------------------------------------------
   295 //------------------------------------------------------------------------------------------------------------------------
   290 // The interpreter generator.
   296 // The interpreter generator.
   291 
   297 
   292 class Template;
   298 class Template;
   293 class AbstractInterpreterGenerator: public StackObj {
   299 class AbstractInterpreterGenerator: public StackObj {
   294  protected:
   300  protected:
   295   InterpreterMacroAssembler* _masm;
   301   InterpreterMacroAssembler* _masm;
   296 
   302 
   297   // shared code sequences
       
   298   // Converter for native abi result to tosca result
       
   299   address generate_result_handler_for(BasicType type);
       
   300   address generate_slow_signature_handler();
       
   301 
       
   302   void bang_stack_shadow_pages(bool native_call);
       
   303 
       
   304   void generate_all();
       
   305   void initialize_method_handle_entries();
       
   306 
       
   307  public:
   303  public:
   308   AbstractInterpreterGenerator(StubQueue* _code);
   304   AbstractInterpreterGenerator(StubQueue* _code);
   309 };
   305 };
   310 
   306 
   311 #endif // SHARE_VM_INTERPRETER_ABSTRACTINTERPRETER_HPP
   307 #endif // SHARE_VM_INTERPRETER_ABSTRACTINTERPRETER_HPP