223 {"StubRoutines::_squareToLen", "_aot_stub_routines_squareToLen" }, 224 {"StubRoutines::_mulAdd", "_aot_stub_routines_mulAdd" }, 225 {"StubRoutines::_montgomeryMultiply", "_aot_stub_routines_montgomeryMultiply" }, 226 {"StubRoutines::_montgomerySquare", "_aot_stub_routines_montgomerySquare" }, 227 {"StubRoutines::_vectorizedMismatch", "_aot_stub_routines_vectorizedMismatch" }, 228 229 {"StubRoutines::_throw_delayed_StackOverflowError_entry", "_aot_stub_routines_throw_delayed_StackOverflowError_entry" }, 230 231 232 {"os::javaTimeMillis", "_aot_os_javaTimeMillis"}, 233 {"os::javaTimeNanos", "_aot_os_javaTimeNanos"}, 234 235 {"JVMCIRuntime::monitorenter", "_aot_jvmci_runtime_monitorenter"}, 236 {"JVMCIRuntime::monitorexit", "_aot_jvmci_runtime_monitorexit"}, 237 {"JVMCIRuntime::object_notify", "_aot_object_notify"}, 238 {"JVMCIRuntime::object_notifyAll", "_aot_object_notifyAll"}, 239 {"JVMCIRuntime::log_object", "_aot_jvmci_runtime_log_object"}, 240 {"JVMCIRuntime::log_printf", "_aot_jvmci_runtime_log_printf"}, 241 {"JVMCIRuntime::vm_message", "_aot_jvmci_runtime_vm_message"}, 242 {"JVMCIRuntime::new_instance", "_aot_jvmci_runtime_new_instance"}, 243 {"JVMCIRuntime::log_primitive", "_aot_jvmci_runtime_log_primitive"}, 244 {"JVMCIRuntime::new_multi_array", "_aot_jvmci_runtime_new_multi_array"}, 245 {"JVMCIRuntime::validate_object", "_aot_jvmci_runtime_validate_object"}, 246 {"JVMCIRuntime::dynamic_new_array", "_aot_jvmci_runtime_dynamic_new_array"}, 247 {"JVMCIRuntime::write_barrier_pre", "_aot_jvmci_runtime_write_barrier_pre"}, 248 {"JVMCIRuntime::identity_hash_code", "_aot_jvmci_runtime_identity_hash_code"}, 249 {"JVMCIRuntime::write_barrier_post", "_aot_jvmci_runtime_write_barrier_post"}, 250 {"JVMCIRuntime::dynamic_new_instance", "_aot_jvmci_runtime_dynamic_new_instance"}, 251 {"JVMCIRuntime::thread_is_interrupted", "_aot_jvmci_runtime_thread_is_interrupted"}, 252 {"JVMCIRuntime::exception_handler_for_pc", "_aot_jvmci_runtime_exception_handler_for_pc"}, 253 {"JVMCIRuntime::test_deoptimize_call_int", "_aot_jvmci_runtime_test_deoptimize_call_int"}, 254 255 {"JVMCIRuntime::throw_and_post_jvmti_exception", "_aot_jvmci_runtime_throw_and_post_jvmti_exception"}, 256 {"JVMCIRuntime::throw_klass_external_name_exception", "_aot_jvmci_runtime_throw_klass_external_name_exception"}, 257 {"JVMCIRuntime::throw_class_cast_exception", "_aot_jvmci_runtime_throw_class_cast_exception"}, 258 259 {"JVMCIRuntime::vm_error", "_aot_jvmci_runtime_vm_error"}, 260 {"JVMCIRuntime::new_array", "_aot_jvmci_runtime_new_array"} 261 }; 262 //@formatter:on 263 264 static { 265 for (String[] entry : map) { 266 functionNamesToAOTSymbols.put(entry[0], entry[1]); 267 } 268 } 269 270 /** 271 * Allocates a {@code BinaryContainer} object whose content will be generated in a file with the 272 * prefix {@code prefix}. It also initializes internal code container, symbol table and 273 * relocation tables. 274 * 275 * @param graalOptions 276 */ 277 public BinaryContainer(OptionValues graalOptions, GraalHotSpotVMConfig graalHotSpotVMConfig, GraphBuilderConfiguration graphBuilderConfig, int gc, String jvmVersion) { 278 this.graalOptions = graalOptions; 279 280 this.codeSegmentSize = graalHotSpotVMConfig.codeSegmentSize; | 223 {"StubRoutines::_squareToLen", "_aot_stub_routines_squareToLen" }, 224 {"StubRoutines::_mulAdd", "_aot_stub_routines_mulAdd" }, 225 {"StubRoutines::_montgomeryMultiply", "_aot_stub_routines_montgomeryMultiply" }, 226 {"StubRoutines::_montgomerySquare", "_aot_stub_routines_montgomerySquare" }, 227 {"StubRoutines::_vectorizedMismatch", "_aot_stub_routines_vectorizedMismatch" }, 228 229 {"StubRoutines::_throw_delayed_StackOverflowError_entry", "_aot_stub_routines_throw_delayed_StackOverflowError_entry" }, 230 231 232 {"os::javaTimeMillis", "_aot_os_javaTimeMillis"}, 233 {"os::javaTimeNanos", "_aot_os_javaTimeNanos"}, 234 235 {"JVMCIRuntime::monitorenter", "_aot_jvmci_runtime_monitorenter"}, 236 {"JVMCIRuntime::monitorexit", "_aot_jvmci_runtime_monitorexit"}, 237 {"JVMCIRuntime::object_notify", "_aot_object_notify"}, 238 {"JVMCIRuntime::object_notifyAll", "_aot_object_notifyAll"}, 239 {"JVMCIRuntime::log_object", "_aot_jvmci_runtime_log_object"}, 240 {"JVMCIRuntime::log_printf", "_aot_jvmci_runtime_log_printf"}, 241 {"JVMCIRuntime::vm_message", "_aot_jvmci_runtime_vm_message"}, 242 {"JVMCIRuntime::new_instance", "_aot_jvmci_runtime_new_instance"}, 243 {"JVMCIRuntime::new_array", "_aot_jvmci_runtime_new_array"}, 244 {"JVMCIRuntime::new_multi_array", "_aot_jvmci_runtime_new_multi_array"}, 245 {"JVMCIRuntime::dynamic_new_instance", "_aot_jvmci_runtime_dynamic_new_instance"}, 246 {"JVMCIRuntime::dynamic_new_array", "_aot_jvmci_runtime_dynamic_new_array"}, 247 {"JVMCIRuntime::new_instance_or_null", "_aot_jvmci_runtime_new_instance_or_null"}, 248 {"JVMCIRuntime::new_array_or_null", "_aot_jvmci_runtime_new_array_or_null"}, 249 {"JVMCIRuntime::new_multi_array_or_null", "_aot_jvmci_runtime_new_multi_array_or_null"}, 250 {"JVMCIRuntime::dynamic_new_instance_or_null", "_aot_jvmci_runtime_dynamic_new_instance_or_null"}, 251 {"JVMCIRuntime::dynamic_new_array_or_null", "_aot_jvmci_runtime_dynamic_new_array_or_null"}, 252 {"JVMCIRuntime::log_primitive", "_aot_jvmci_runtime_log_primitive"}, 253 {"JVMCIRuntime::validate_object", "_aot_jvmci_runtime_validate_object"}, 254 {"JVMCIRuntime::write_barrier_pre", "_aot_jvmci_runtime_write_barrier_pre"}, 255 {"JVMCIRuntime::identity_hash_code", "_aot_jvmci_runtime_identity_hash_code"}, 256 {"JVMCIRuntime::write_barrier_post", "_aot_jvmci_runtime_write_barrier_post"}, 257 {"JVMCIRuntime::thread_is_interrupted", "_aot_jvmci_runtime_thread_is_interrupted"}, 258 {"JVMCIRuntime::exception_handler_for_pc", "_aot_jvmci_runtime_exception_handler_for_pc"}, 259 {"JVMCIRuntime::test_deoptimize_call_int", "_aot_jvmci_runtime_test_deoptimize_call_int"}, 260 261 {"JVMCIRuntime::throw_and_post_jvmti_exception", "_aot_jvmci_runtime_throw_and_post_jvmti_exception"}, 262 {"JVMCIRuntime::throw_klass_external_name_exception", "_aot_jvmci_runtime_throw_klass_external_name_exception"}, 263 {"JVMCIRuntime::throw_class_cast_exception", "_aot_jvmci_runtime_throw_class_cast_exception"}, 264 265 {"JVMCIRuntime::vm_error", "_aot_jvmci_runtime_vm_error"} 266 }; 267 //@formatter:on 268 269 static { 270 for (String[] entry : map) { 271 functionNamesToAOTSymbols.put(entry[0], entry[1]); 272 } 273 } 274 275 /** 276 * Allocates a {@code BinaryContainer} object whose content will be generated in a file with the 277 * prefix {@code prefix}. It also initializes internal code container, symbol table and 278 * relocation tables. 279 * 280 * @param graalOptions 281 */ 282 public BinaryContainer(OptionValues graalOptions, GraalHotSpotVMConfig graalHotSpotVMConfig, GraphBuilderConfiguration graphBuilderConfig, int gc, String jvmVersion) { 283 this.graalOptions = graalOptions; 284 285 this.codeSegmentSize = graalHotSpotVMConfig.codeSegmentSize; |