equal
deleted
inserted
replaced
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 |