[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