equal
deleted
inserted
replaced
64 if (trampoline) { |
64 if (trampoline) { |
65 return nativeCallTrampolineStub_at(trampoline)->destination(); |
65 return nativeCallTrampolineStub_at(trampoline)->destination(); |
66 } |
66 } |
67 } |
67 } |
68 if (orig_addr != NULL) { |
68 if (orig_addr != NULL) { |
69 return MacroAssembler::pd_call_destination(orig_addr); |
69 address new_addr = MacroAssembler::pd_call_destination(orig_addr); |
|
70 // If call is branch to self, don't try to relocate it, just leave it |
|
71 // as branch to self. This happens during code generation if the code |
|
72 // buffer expands. It will be relocated to the trampoline above once |
|
73 // code generation is complete. |
|
74 new_addr = (new_addr == orig_addr) ? addr() : new_addr; |
|
75 return new_addr; |
70 } |
76 } |
71 return MacroAssembler::pd_call_destination(addr()); |
77 return MacroAssembler::pd_call_destination(addr()); |
72 } |
78 } |
73 |
79 |
74 |
80 |