< prev index next >

src/hotspot/cpu/ppc/compiledIC_ppc.cpp

Print this page

        

*** 177,191 **** // Creation also verifies the object. NativeMovConstReg* method_holder = nativeMovConstReg_at(stub + IC_pos_in_java_to_interp_stub); NativeJump* jump = nativeJump_at(method_holder->next_instruction_address()); #ifdef ASSERT ! // read the value once ! volatile intptr_t data = method_holder->data(); ! volatile address destination = jump->jump_destination(); ! assert(data == 0 || data == (intptr_t)callee(), "a) MT-unsafe modification of inline cache"); assert(destination == (address)-1 || destination == entry, "b) MT-unsafe modification of inline cache"); #endif // Update stub. --- 177,198 ---- // Creation also verifies the object. NativeMovConstReg* method_holder = nativeMovConstReg_at(stub + IC_pos_in_java_to_interp_stub); NativeJump* jump = nativeJump_at(method_holder->next_instruction_address()); #ifdef ASSERT ! // A generated lambda form might be deleted from the Lambdaform ! // cache in MethodTypeForm. If a jit compiled lambdaform method ! // becomes not entrant and the cache access returns null, the new ! // resolve will lead to a new generated LambdaForm. ! Method* volatile old_method = reinterpret_cast<Method*>(method_holder->data()); ! assert(old_method == NULL || old_method == callee() || ! callee->is_compiled_lambda_form() || ! !old_method->method_holder()->is_loader_alive() || ! old_method->is_old(), // may be race patching deoptimized nmethod due to redefinition. "a) MT-unsafe modification of inline cache"); + + volatile address destination = jump->jump_destination(); assert(destination == (address)-1 || destination == entry, "b) MT-unsafe modification of inline cache"); #endif // Update stub.
< prev index next >