equal
deleted
inserted
replaced
83 __ end_a_stub(); |
83 __ end_a_stub(); |
84 return base; |
84 return base; |
85 } |
85 } |
86 #undef __ |
86 #undef __ |
87 |
87 |
88 // size of C2 call stub, compiled java to interpretor |
|
89 int CompiledStaticCall::to_interp_stub_size() { |
|
90 return 8 * NativeInstruction::instruction_size; |
|
91 } |
|
92 |
|
93 // Relocation entries for call stub, compiled java to interpreter. |
88 // Relocation entries for call stub, compiled java to interpreter. |
94 int CompiledStaticCall::reloc_to_interp_stub() { |
89 int CompiledStaticCall::reloc_to_interp_stub() { |
95 return 10; // 4 in emit_to_interp_stub + 1 in Java_Static_Call |
90 return 10; // 4 in emit_to_interp_stub + 1 in Java_Static_Call |
96 } |
91 } |
97 #endif // COMPILER2 || JVMCI |
92 #endif // COMPILER2 || JVMCI |
|
93 |
|
94 // size of C2 call stub, compiled java to interpretor |
|
95 int CompiledStaticCall::to_interp_stub_size() { |
|
96 return 8 * NativeInstruction::instruction_size; |
|
97 } |
98 |
98 |
99 void CompiledDirectStaticCall::set_to_interpreted(const methodHandle& callee, address entry) { |
99 void CompiledDirectStaticCall::set_to_interpreted(const methodHandle& callee, address entry) { |
100 address stub = find_stub(/*is_aot*/ false); |
100 address stub = find_stub(/*is_aot*/ false); |
101 guarantee(stub != NULL, "stub not found"); |
101 guarantee(stub != NULL, "stub not found"); |
102 |
102 |
122 #endif |
122 #endif |
123 |
123 |
124 // Update stub. |
124 // Update stub. |
125 method_holder->set_data((intptr_t)callee()); |
125 method_holder->set_data((intptr_t)callee()); |
126 jump->set_jump_destination(entry); |
126 jump->set_jump_destination(entry); |
|
127 |
|
128 ICache::invalidate_range(stub, to_interp_stub_size()); |
127 |
129 |
128 // Update jump to call. |
130 // Update jump to call. |
129 set_destination_mt_safe(stub); |
131 set_destination_mt_safe(stub); |
130 } |
132 } |
131 |
133 |