equal
deleted
inserted
replaced
372 // Bytes beyond offset NativeGeneralJump::instruction_size are copied by caller. |
372 // Bytes beyond offset NativeGeneralJump::instruction_size are copied by caller. |
373 |
373 |
374 // Finally patch out the jump. |
374 // Finally patch out the jump. |
375 volatile juint *jump_addr = (volatile juint*)instr_addr; |
375 volatile juint *jump_addr = (volatile juint*)instr_addr; |
376 // Release not needed because caller uses invalidate_range after copying the remaining bytes. |
376 // Release not needed because caller uses invalidate_range after copying the remaining bytes. |
377 //OrderAccess::release_store(jump_addr, *((juint*)code_buffer)); |
377 //Atomic::release_store(jump_addr, *((juint*)code_buffer)); |
378 *jump_addr = *((juint*)code_buffer); // atomically store code over branch instruction |
378 *jump_addr = *((juint*)code_buffer); // atomically store code over branch instruction |
379 ICache::ppc64_flush_icache_bytes(instr_addr, NativeGeneralJump::instruction_size); |
379 ICache::ppc64_flush_icache_bytes(instr_addr, NativeGeneralJump::instruction_size); |
380 } |
380 } |
381 |
381 |
382 |
382 |