[aarch64-port-dev ] RFR: Large code cache
Andrew Dinn
adinn at redhat.com
Tue Dec 9 11:47:24 UTC 2014
On 08/12/14 15:51, Andrew Haley wrote:
The code between the start and end markers is redundant since it
duplicates the precise same check + return in
trampoline_stub_Relocation::get_trampoline_for().
> +address NativeCall::get_trampoline() {
> + address call_addr = addr_at(0);
> +
> + CodeBlob *code = CodeCache::find_blob(call_addr);
> + assert(code != NULL, "Could not find the containing code blob");
> +
> + address bl_destination
> + = MacroAssembler::pd_call_destination(call_addr);
> + if (code->content_contains(bl_destination) &&
> + is_NativeCallTrampolineStub_at(bl_destination))
> + return bl_destination;
> + //<=== !!! start
> + // There are no relocations available when the code gets relocated
> + // during CodeBuffer expansion.
> + if (code->relocation_size() == 0)
> + return NULL;
> + // <=== !!! end
> + // If the codeBlob is not a nmethod, this is because we get here from the
> + // CodeBlob constructor, which is called within the nmethod constructor.
> + return trampoline_stub_Relocation::get_trampoline_for(call_addr, (nmethod*)code);
> +}
regards,
Andrew Dinn
-----------
More information about the aarch64-port-dev
mailing list