hotspot/src/cpu/ppc/vm/templateInterpreterGenerator_ppc.cpp
changeset 35214 d86005e0b4c2
parent 35166 23125410af16
child 35232 76aed99c0ddd
child 35479 62c12ca7a45e
equal deleted inserted replaced
35211:3771329165d4 35214:d86005e0b4c2
    25 
    25 
    26 #include "precompiled.hpp"
    26 #include "precompiled.hpp"
    27 #include "asm/macroAssembler.inline.hpp"
    27 #include "asm/macroAssembler.inline.hpp"
    28 #include "interpreter/bytecodeHistogram.hpp"
    28 #include "interpreter/bytecodeHistogram.hpp"
    29 #include "interpreter/interpreter.hpp"
    29 #include "interpreter/interpreter.hpp"
    30 #include "interpreter/interpreterGenerator.hpp"
       
    31 #include "interpreter/interpreterRuntime.hpp"
    30 #include "interpreter/interpreterRuntime.hpp"
    32 #include "interpreter/interp_masm.hpp"
    31 #include "interpreter/interp_masm.hpp"
       
    32 #include "interpreter/templateInterpreterGenerator.hpp"
    33 #include "interpreter/templateTable.hpp"
    33 #include "interpreter/templateTable.hpp"
    34 #include "oops/arrayOop.hpp"
    34 #include "oops/arrayOop.hpp"
    35 #include "oops/methodData.hpp"
    35 #include "oops/methodData.hpp"
    36 #include "oops/method.hpp"
    36 #include "oops/method.hpp"
    37 #include "oops/oop.inline.hpp"
    37 #include "oops/oop.inline.hpp"
  1243 //
  1243 //
  1244 /**
  1244 /**
  1245  * Method entry for static native methods:
  1245  * Method entry for static native methods:
  1246  *   int java.util.zip.CRC32.update(int crc, int b)
  1246  *   int java.util.zip.CRC32.update(int crc, int b)
  1247  */
  1247  */
  1248 address InterpreterGenerator::generate_CRC32_update_entry() {
  1248 address TemplateInterpreterGenerator::generate_CRC32_update_entry() {
  1249   if (UseCRC32Intrinsics) {
  1249   if (UseCRC32Intrinsics) {
  1250     address start = __ pc();  // Remember stub start address (is rtn value).
  1250     address start = __ pc();  // Remember stub start address (is rtn value).
  1251     Label slow_path;
  1251     Label slow_path;
  1252 
  1252 
  1253     // Safepoint check
  1253     // Safepoint check
  1303 /**
  1303 /**
  1304  * Method entry for static native methods:
  1304  * Method entry for static native methods:
  1305  *   int java.util.zip.CRC32.updateBytes(     int crc, byte[] b,  int off, int len)
  1305  *   int java.util.zip.CRC32.updateBytes(     int crc, byte[] b,  int off, int len)
  1306  *   int java.util.zip.CRC32.updateByteBuffer(int crc, long* buf, int off, int len)
  1306  *   int java.util.zip.CRC32.updateByteBuffer(int crc, long* buf, int off, int len)
  1307  */
  1307  */
  1308 address InterpreterGenerator::generate_CRC32_updateBytes_entry(AbstractInterpreter::MethodKind kind) {
  1308 address TemplateInterpreterGenerator::generate_CRC32_updateBytes_entry(AbstractInterpreter::MethodKind kind) {
  1309   if (UseCRC32Intrinsics) {
  1309   if (UseCRC32Intrinsics) {
  1310     address start = __ pc();  // Remember stub start address (is rtn value).
  1310     address start = __ pc();  // Remember stub start address (is rtn value).
  1311     Label slow_path;
  1311     Label slow_path;
  1312 
  1312 
  1313     // Safepoint check
  1313     // Safepoint check
  1389   }
  1389   }
  1390 
  1390 
  1391   return NULL;
  1391   return NULL;
  1392 }
  1392 }
  1393 
  1393 
       
  1394 // Not supported
       
  1395 address TemplateInterpreterGenerator::generate_CRC32C_updateBytes_entry(AbstractInterpreter::MethodKind kind) {
       
  1396   return NULL;
       
  1397 }
       
  1398 
  1394 // =============================================================================
  1399 // =============================================================================
  1395 // Exceptions
  1400 // Exceptions
  1396 
  1401 
  1397 void TemplateInterpreterGenerator::generate_throw_exception() {
  1402 void TemplateInterpreterGenerator::generate_throw_exception() {
  1398   Register Rexception    = R17_tos,
  1403   Register Rexception    = R17_tos,
  1638   bep = cep = sep =
  1643   bep = cep = sep =
  1639   iep = __ pc();  __ push_i();
  1644   iep = __ pc();  __ push_i();
  1640   vep = __ pc();
  1645   vep = __ pc();
  1641   __ bind(L);
  1646   __ bind(L);
  1642   generate_and_dispatch(t);
  1647   generate_and_dispatch(t);
  1643 }
       
  1644 
       
  1645 //-----------------------------------------------------------------------------
       
  1646 // Generation of individual instructions
       
  1647 
       
  1648 // helpers for generate_and_dispatch
       
  1649 
       
  1650 InterpreterGenerator::InterpreterGenerator(StubQueue* code)
       
  1651   : TemplateInterpreterGenerator(code) {
       
  1652   generate_all(); // Down here so it can be "virtual".
       
  1653 }
  1648 }
  1654 
  1649 
  1655 //-----------------------------------------------------------------------------
  1650 //-----------------------------------------------------------------------------
  1656 
  1651 
  1657 // Non-product code
  1652 // Non-product code