< prev index next >

src/hotspot/share/classfile/javaClasses.cpp

Print this page

        

@@ -1,7 +1,8 @@
 /*
  * Copyright (c) 1997, 2018, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 2015-2018, Azul Systems, Inc. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -4271,10 +4272,18 @@
 int java_lang_AssertionStatusDirectives::deflt_offset;
 int java_nio_Buffer::_limit_offset;
 int java_util_concurrent_locks_AbstractOwnableSynchronizer::_owner_offset;
 int reflect_ConstantPool::_oop_offset;
 int reflect_UnsafeStaticFieldAccessorImpl::_base_offset;
+#ifdef AARCH32
+int com_sun_crypto_provider_AESCrypt::_K_offset;
+int com_sun_crypto_provider_CipherBlockChaining::_r_offset;
+int com_sun_crypto_provider_FeedbackCipher::_embeddedCipher_offset;
+int sun_security_provider_SHA::_state_offset;
+int sun_security_provider_SHA2::_state_offset;
+int sun_security_provider_SHA5::_state_offset;
+#endif
 
 #define STACKTRACEELEMENT_FIELDS_DO(macro) \
   macro(declaringClassObject_offset,  k, "declaringClassObject", class_signature, false); \
   macro(classLoaderName_offset, k, "classLoaderName", string_signature, false); \
   macro(moduleName_offset,      k, "moduleName",      string_signature, false); \

@@ -4433,10 +4442,90 @@
 
 static int member_offset(int hardcoded_offset) {
   return (hardcoded_offset * heapOopSize) + instanceOopDesc::base_offset_in_bytes();
 }
 
+#ifdef AARCH32
+// Support for intrinsification of com.sun.crypto.provider.AESCrypto.encrypt
+#define AESCRYPT_FIELDS_DO(macro)                       \
+  macro(_K_offset, k, "K", int_array_signature, false)
+
+void com_sun_crypto_provider_AESCrypt::compute_offsets() {
+  InstanceKlass* k = SystemDictionary::AESCrypt_klass();
+  AESCRYPT_FIELDS_DO(FIELD_COMPUTE_OFFSET);
+}
+
+int com_sun_crypto_provider_AESCrypt::K_offset() {
+  return _K_offset;
+}
+
+// Support for intrinsification of com_sun_crypto_provider_CipherBlockChaining.encrypt
+#define CBC_FIELDS_DO(macro) \
+  macro(_r_offset, k, "r", byte_array_signature, false)
+
+void com_sun_crypto_provider_CipherBlockChaining::compute_offsets() {
+  InstanceKlass* k = SystemDictionary::CipherBlockChaining_klass();
+  CBC_FIELDS_DO(FIELD_COMPUTE_OFFSET);
+}
+
+int com_sun_crypto_provider_CipherBlockChaining::r_offset() {
+  return _r_offset;
+}
+
+// Support for intrinsification of com_sun_crypto_provider_CipherBlockChaining.encrypt
+#define FC_FIELDS_DO(macro) \
+  macro(_embeddedCipher_offset, k, "embeddedCipher", symmetriccipher_signature, false)
+
+void com_sun_crypto_provider_FeedbackCipher::compute_offsets() {
+  InstanceKlass* k = SystemDictionary::FeedbackCipher_klass();
+  FC_FIELDS_DO(FIELD_COMPUTE_OFFSET);
+}
+
+int com_sun_crypto_provider_FeedbackCipher::embeddedCipher_offset() {
+  return _embeddedCipher_offset;
+}
+
+// Support for intrinsification of sun_security_provider_SHA.implCompress
+#define SHA_FIELDS_DO(macro) \
+  macro(_state_offset, k, "state", int_array_signature, false)
+
+void sun_security_provider_SHA::compute_offsets() {
+  InstanceKlass* k = SystemDictionary::SHA_klass();
+  SHA_FIELDS_DO(FIELD_COMPUTE_OFFSET);
+}
+
+int sun_security_provider_SHA::state_offset() {
+  return _state_offset;
+}
+
+// Support for intrinsification of sun_security_provider_SHA2.implCompress
+#define SHA2_FIELDS_DO(macro) \
+  macro(_state_offset, k, "state", int_array_signature, false)
+
+void sun_security_provider_SHA2::compute_offsets() {
+  InstanceKlass* k = SystemDictionary::SHA2_klass();
+  SHA2_FIELDS_DO(FIELD_COMPUTE_OFFSET);
+}
+
+int sun_security_provider_SHA2::state_offset() {
+  return _state_offset;
+}
+
+// Support for intrinsification of sun_security_provider_SHA5.implCompress
+#define SHA5_FIELDS_DO(macro) \
+  macro(_state_offset, k, "state", long_array_signature, false)
+
+void sun_security_provider_SHA5::compute_offsets() {
+  InstanceKlass* k = SystemDictionary::SHA5_klass();
+  SHA5_FIELDS_DO(FIELD_COMPUTE_OFFSET);
+}
+
+int sun_security_provider_SHA5::state_offset() {
+  return _state_offset;
+}
+#endif
+
 // Compute hard-coded offsets
 // Invoked before SystemDictionary::initialize, so pre-loaded classes
 // are not available to determine the offset_of_static_fields.
 void JavaClasses::compute_hard_coded_offsets() {
 

@@ -4493,10 +4582,19 @@
   java_lang_LiveStackFrameInfo::compute_offsets();
   java_util_concurrent_locks_AbstractOwnableSynchronizer::compute_offsets();
 
   // generated interpreter code wants to know about the offsets we just computed:
   AbstractAssembler::update_delayed_values();
+
+#ifdef AARCH32
+  com_sun_crypto_provider_AESCrypt::compute_offsets();
+  com_sun_crypto_provider_FeedbackCipher::compute_offsets();
+  com_sun_crypto_provider_CipherBlockChaining::compute_offsets();
+  sun_security_provider_SHA::compute_offsets();
+  sun_security_provider_SHA2::compute_offsets();
+  sun_security_provider_SHA5::compute_offsets();
+#endif
 }
 
 #ifndef PRODUCT
 
 // These functions exist to assert the validity of hard-coded field offsets to guard
< prev index next >