hotspot/src/share/vm/interpreter/interpreterRuntime.cpp
changeset 10546 e79347eebbc5
parent 10521 5c4fac522301
child 10967 e13ea25b2f0b
equal deleted inserted replaced
10545:fec876499aae 10546:e79347eebbc5
   982 ConstantPoolCacheEntry *cp_entry))
   982 ConstantPoolCacheEntry *cp_entry))
   983 
   983 
   984   // check the access_flags for the field in the klass
   984   // check the access_flags for the field in the klass
   985 
   985 
   986   instanceKlass* ik = instanceKlass::cast(java_lang_Class::as_klassOop(cp_entry->f1()));
   986   instanceKlass* ik = instanceKlass::cast(java_lang_Class::as_klassOop(cp_entry->f1()));
   987   typeArrayOop fields = ik->fields();
       
   988   int index = cp_entry->field_index();
   987   int index = cp_entry->field_index();
   989   assert(index < fields->length(), "holders field index is out of range");
   988   if ((ik->field_access_flags(index) & JVM_ACC_FIELD_ACCESS_WATCHED) == 0) return;
   990   // bail out if field accesses are not watched
       
   991   if ((fields->ushort_at(index) & JVM_ACC_FIELD_ACCESS_WATCHED) == 0) return;
       
   992 
   989 
   993   switch(cp_entry->flag_state()) {
   990   switch(cp_entry->flag_state()) {
   994     case btos:    // fall through
   991     case btos:    // fall through
   995     case ctos:    // fall through
   992     case ctos:    // fall through
   996     case stos:    // fall through
   993     case stos:    // fall through
  1019 
  1016 
  1020   klassOop k = java_lang_Class::as_klassOop(cp_entry->f1());
  1017   klassOop k = java_lang_Class::as_klassOop(cp_entry->f1());
  1021 
  1018 
  1022   // check the access_flags for the field in the klass
  1019   // check the access_flags for the field in the klass
  1023   instanceKlass* ik = instanceKlass::cast(k);
  1020   instanceKlass* ik = instanceKlass::cast(k);
  1024   typeArrayOop fields = ik->fields();
       
  1025   int index = cp_entry->field_index();
  1021   int index = cp_entry->field_index();
  1026   assert(index < fields->length(), "holders field index is out of range");
       
  1027   // bail out if field modifications are not watched
  1022   // bail out if field modifications are not watched
  1028   if ((fields->ushort_at(index) & JVM_ACC_FIELD_MODIFICATION_WATCHED) == 0) return;
  1023   if ((ik->field_access_flags(index) & JVM_ACC_FIELD_MODIFICATION_WATCHED) == 0) return;
  1029 
  1024 
  1030   char sig_type = '\0';
  1025   char sig_type = '\0';
  1031 
  1026 
  1032   switch(cp_entry->flag_state()) {
  1027   switch(cp_entry->flag_state()) {
  1033     case btos: sig_type = 'Z'; break;
  1028     case btos: sig_type = 'Z'; break;