Print this page


Split Close
Expand all
Collapse all
          --- old/src/share/vm/interpreter/interpreterRuntime.cpp
          +++ new/src/share/vm/interpreter/interpreterRuntime.cpp
↓ open down ↓ 539 lines elided ↑ open up ↑
 540  540                                 !klass->is_initialized());
 541  541    Bytecodes::Code get_code = (Bytecodes::Code)0;
 542  542  
 543  543    if (!uninitialized_static) {
 544  544      get_code = ((is_static) ? Bytecodes::_getstatic : Bytecodes::_getfield);
 545  545      if (is_put || !info.access_flags().is_final()) {
 546  546        put_code = ((is_static) ? Bytecodes::_putstatic : Bytecodes::_putfield);
 547  547      }
 548  548    }
 549  549  
 550      -  if (is_put && !is_static && klass->is_subclass_of(SystemDictionary::CallSite_klass()) && (info.name() == vmSymbols::target_name())) {
 551      -    const jint direction = frame::interpreter_frame_expression_stack_direction();
 552      -    Handle call_site    (THREAD, *((oop*) thread->last_frame().interpreter_frame_tos_at(-1 * direction)));
 553      -    Handle method_handle(THREAD, *((oop*) thread->last_frame().interpreter_frame_tos_at( 0 * direction)));
 554      -    assert(call_site    ->is_a(SystemDictionary::CallSite_klass()),     "must be");
 555      -    assert(method_handle->is_a(SystemDictionary::MethodHandle_klass()), "must be");
 556      -
 557      -    {
 558      -      // Walk all nmethods depending on this call site.
 559      -      MutexLocker mu(Compile_lock, thread);
 560      -      Universe::flush_dependents_on(call_site, method_handle);
 561      -    }
 562      -
 563      -    // Don't allow fast path for setting CallSite.target and sub-classes.
 564      -    put_code = (Bytecodes::Code) 0;
 565      -  }
 566      -
 567  550    cache_entry(thread)->set_field(
 568  551      get_code,
 569  552      put_code,
 570  553      info.klass(),
 571  554      info.field_index(),
 572  555      info.field_offset(),
 573  556      state,
 574  557      info.access_flags().is_final(),
 575  558      info.access_flags().is_volatile()
 576  559    );
↓ open down ↓ 694 lines elided ↑ open up ↑
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX