153 generate_deopt_entry_for(ftos, i), 154 generate_deopt_entry_for(dtos, i), 155 generate_deopt_entry_for(vtos, i) 156 ); 157 } 158 } 159 160 { CodeletMark cm(_masm, "result handlers for native calls"); 161 // The various result converter stublets. 162 int is_generated[Interpreter::number_of_result_handlers]; 163 memset(is_generated, 0, sizeof(is_generated)); 164 165 for (int i = 0; i < Interpreter::number_of_result_handlers; i++) { 166 BasicType type = types[i]; 167 if (!is_generated[Interpreter::BasicType_as_index(type)]++) { 168 Interpreter::_native_abi_to_tosca[Interpreter::BasicType_as_index(type)] = generate_result_handler_for(type); 169 } 170 } 171 } 172 173 { CodeletMark cm(_masm, "continuation entry points"); 174 Interpreter::_continuation_entry = 175 EntryPoint( 176 generate_continuation_for(btos), 177 generate_continuation_for(ztos), 178 generate_continuation_for(ctos), 179 generate_continuation_for(stos), 180 generate_continuation_for(atos), 181 generate_continuation_for(itos), 182 generate_continuation_for(ltos), 183 generate_continuation_for(ftos), 184 generate_continuation_for(dtos), 185 generate_continuation_for(vtos) 186 ); 187 } 188 189 { CodeletMark cm(_masm, "safepoint entry points"); 190 Interpreter::_safept_entry = 191 EntryPoint( 192 generate_safept_entry_for(btos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 193 generate_safept_entry_for(ztos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 194 generate_safept_entry_for(ctos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 195 generate_safept_entry_for(stos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 196 generate_safept_entry_for(atos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 197 generate_safept_entry_for(itos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 198 generate_safept_entry_for(ltos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 199 generate_safept_entry_for(ftos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 200 generate_safept_entry_for(dtos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 201 generate_safept_entry_for(vtos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)) 202 ); 203 } 204 205 { CodeletMark cm(_masm, "exception handling"); 206 // (Note: this is not safepoint safe because thread may return to compiled code) 207 generate_throw_exception(); 208 } | 153 generate_deopt_entry_for(ftos, i), 154 generate_deopt_entry_for(dtos, i), 155 generate_deopt_entry_for(vtos, i) 156 ); 157 } 158 } 159 160 { CodeletMark cm(_masm, "result handlers for native calls"); 161 // The various result converter stublets. 162 int is_generated[Interpreter::number_of_result_handlers]; 163 memset(is_generated, 0, sizeof(is_generated)); 164 165 for (int i = 0; i < Interpreter::number_of_result_handlers; i++) { 166 BasicType type = types[i]; 167 if (!is_generated[Interpreter::BasicType_as_index(type)]++) { 168 Interpreter::_native_abi_to_tosca[Interpreter::BasicType_as_index(type)] = generate_result_handler_for(type); 169 } 170 } 171 } 172 173 { CodeletMark cm(_masm, "safepoint entry points"); 174 Interpreter::_safept_entry = 175 EntryPoint( 176 generate_safept_entry_for(btos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 177 generate_safept_entry_for(ztos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 178 generate_safept_entry_for(ctos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 179 generate_safept_entry_for(stos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 180 generate_safept_entry_for(atos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 181 generate_safept_entry_for(itos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 182 generate_safept_entry_for(ltos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 183 generate_safept_entry_for(ftos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 184 generate_safept_entry_for(dtos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)), 185 generate_safept_entry_for(vtos, CAST_FROM_FN_PTR(address, InterpreterRuntime::at_safepoint)) 186 ); 187 } 188 189 { CodeletMark cm(_masm, "exception handling"); 190 // (Note: this is not safepoint safe because thread may return to compiled code) 191 generate_throw_exception(); 192 } |