< prev index next >

src/share/vm/classfile/javaClasses.cpp

Print this page

        

*** 2965,3015 **** // Support for java_lang_invoke_CallSite int java_lang_invoke_CallSite::_target_offset; int java_lang_invoke_CallSite::_context_offset; - int java_lang_invoke_CallSite::_default_context_offset; void java_lang_invoke_CallSite::compute_offsets() { Klass* k = SystemDictionary::CallSite_klass(); if (k != NULL) { compute_offset(_target_offset, k, vmSymbols::target_name(), vmSymbols::java_lang_invoke_MethodHandle_signature()); ! compute_offset(_context_offset, k, vmSymbols::context_name(), vmSymbols::sun_misc_Cleaner_signature()); ! compute_offset(_default_context_offset, k, ! vmSymbols::DEFAULT_CONTEXT_name(), vmSymbols::sun_misc_Cleaner_signature(), ! /*is_static=*/true, /*allow_super=*/false); } } ! oop java_lang_invoke_CallSite::context_volatile(oop call_site) { assert(java_lang_invoke_CallSite::is_instance(call_site), ""); ! oop dep_oop = call_site->obj_field_volatile(_context_offset); return dep_oop; } ! void java_lang_invoke_CallSite::set_context_volatile(oop call_site, oop context) { ! assert(java_lang_invoke_CallSite::is_instance(call_site), ""); ! call_site->obj_field_put_volatile(_context_offset, context); } ! bool java_lang_invoke_CallSite::set_context_cas(oop call_site, oop context, oop expected) { ! assert(java_lang_invoke_CallSite::is_instance(call_site), ""); ! HeapWord* context_addr = call_site->obj_field_addr<HeapWord>(_context_offset); ! oop res = oopDesc::atomic_compare_exchange_oop(context, context_addr, expected, true); ! bool success = (res == expected); ! if (success) { ! update_barrier_set((void*)context_addr, context); ! } ! return success; } ! oop java_lang_invoke_CallSite::default_context() { ! InstanceKlass* ik = InstanceKlass::cast(SystemDictionary::CallSite_klass()); ! oop def_context_oop = ik->java_mirror()->obj_field(_default_context_offset); ! assert(!oopDesc::is_null(def_context_oop), ""); ! return def_context_oop; } // Support for java_security_AccessControlContext int java_security_AccessControlContext::_context_offset = 0; --- 2965,3009 ---- // Support for java_lang_invoke_CallSite int java_lang_invoke_CallSite::_target_offset; int java_lang_invoke_CallSite::_context_offset; void java_lang_invoke_CallSite::compute_offsets() { Klass* k = SystemDictionary::CallSite_klass(); if (k != NULL) { compute_offset(_target_offset, k, vmSymbols::target_name(), vmSymbols::java_lang_invoke_MethodHandle_signature()); ! compute_offset(_context_offset, k, vmSymbols::context_name(), vmSymbols::java_lang_invoke_CallSite_Context_signature()); } } ! oop java_lang_invoke_CallSite::context(oop call_site) { assert(java_lang_invoke_CallSite::is_instance(call_site), ""); ! oop dep_oop = call_site->obj_field(_context_offset); return dep_oop; } ! // Support for java_lang_invoke_CallSite_Context ! ! int java_lang_invoke_CallSite_Context::_dependencies_offset; ! ! void java_lang_invoke_CallSite_Context::compute_offsets() { ! Klass* k = SystemDictionary::Context_klass(); ! if (k != NULL) { ! compute_offset(_dependencies_offset, k, vmSymbols::dependencies_name(), vmSymbols::long_signature()); ! } } ! nmethodBucket* java_lang_invoke_CallSite_Context::dependencies(oop call_site) { ! assert(java_lang_invoke_CallSite_Context::is_instance(call_site), ""); ! return (nmethodBucket*) (address) call_site->long_field(_dependencies_offset); } ! void java_lang_invoke_CallSite_Context::set_dependencies(oop call_site, nmethodBucket* context) { ! assert(java_lang_invoke_CallSite_Context::is_instance(call_site), ""); ! call_site->long_field_put(_dependencies_offset, (jlong) (address) context); } // Support for java_security_AccessControlContext int java_security_AccessControlContext::_context_offset = 0;
*** 3401,3410 **** --- 3395,3405 ---- java_lang_invoke_DirectMethodHandle::compute_offsets(); java_lang_invoke_MemberName::compute_offsets(); java_lang_invoke_LambdaForm::compute_offsets(); java_lang_invoke_MethodType::compute_offsets(); java_lang_invoke_CallSite::compute_offsets(); + java_lang_invoke_CallSite_Context::compute_offsets(); java_security_AccessControlContext::compute_offsets(); // Initialize reflection classes. The layouts of these classes // changed with the new reflection implementation in JDK 1.4, and // since the Universe doesn't know what JDK version it is until this // point we defer computation of these offsets until now.
< prev index next >