Mercurial > hg > graal-compiler
comparison src/share/vm/graal/graalCompilerToVM.cpp @ 7143:445193cc2a7d
added support for writing stubs in Java and wrote the TLAB fast refill stub
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Fri, 07 Dec 2012 15:12:05 +0100 |
parents | ce248dc0a656 |
children | 6c46172c04bf |
comparison
equal
deleted
inserted
replaced
7142:283fe237085b | 7143:445193cc2a7d |
---|---|
583 fatal(err_msg("field not found: %s (%s)", name, sig)); | 583 fatal(err_msg("field not found: %s (%s)", name, sig)); |
584 } | 584 } |
585 return id; | 585 return id; |
586 } | 586 } |
587 | 587 |
588 void set_boolean(JNIEnv* env, jobject obj, const char* name, bool value) { env->SetBooleanField(obj, getFieldID(env, obj, name, "Z"), value); } | |
589 void set_int(JNIEnv* env, jobject obj, const char* name, int value) { env->SetIntField(obj, getFieldID(env, obj, name, "I"), value); } | |
590 void set_long(JNIEnv* env, jobject obj, const char* name, jlong value) { env->SetLongField(obj, getFieldID(env, obj, name, "J"), value); } | |
591 void set_object(JNIEnv* env, jobject obj, const char* name, jobject value) { env->SetObjectField(obj, getFieldID(env, obj, name, "Ljava/lang/Object;"), value); } | |
592 void set_int_array(JNIEnv* env, jobject obj, const char* name, jarray value) { env->SetObjectField(obj, getFieldID(env, obj, name, "[I"), value); } | |
593 | |
594 jboolean get_boolean(JNIEnv* env, jobject obj, const char* name) { return env->GetBooleanField(obj, getFieldID(env, obj, name, "Z")); } | |
595 jint get_int(JNIEnv* env, jobject obj, const char* name) { return env->GetIntField(obj, getFieldID(env, obj, name, "I")); } | |
596 jlong get_long(JNIEnv* env, jobject obj, const char* name) { return env->GetLongField(obj, getFieldID(env, obj, name, "J")); } | |
597 jobject get_object(JNIEnv* env, jobject obj, const char* name) { return env->GetObjectField(obj, getFieldID(env, obj, name, "Ljava/lang/Object;")); } | |
598 jobject get_object(JNIEnv* env, jobject obj, const char* name, const char* sig) { return env->GetObjectField(obj, getFieldID(env, obj, name, sig)); } | |
599 | |
600 | |
601 BasicType basicTypes[] = { T_BOOLEAN, T_BYTE, T_SHORT, T_CHAR, T_INT, T_FLOAT, T_LONG, T_DOUBLE, T_OBJECT }; | 588 BasicType basicTypes[] = { T_BOOLEAN, T_BYTE, T_SHORT, T_CHAR, T_INT, T_FLOAT, T_LONG, T_DOUBLE, T_OBJECT }; |
602 int basicTypeCount = sizeof(basicTypes) / sizeof(BasicType); | 589 int basicTypeCount = sizeof(basicTypes) / sizeof(BasicType); |
603 | 590 |
604 C2V_ENTRY(void, initializeConfiguration, (JNIEnv *env, jobject, jobject config)) | 591 C2V_ENTRY(void, initializeConfiguration, (JNIEnv *env, jobject, jobject config)) |
592 | |
593 #define set_boolean(name, value) do { env->SetBooleanField(config, getFieldID(env, config, name, "Z"), value); } while (0) | |
594 #define set_int(name, value) do { env->SetIntField(config, getFieldID(env, config, name, "I"), value); } while (0) | |
595 #define set_long(name, value) do { env->SetLongField(config, getFieldID(env, config, name, "J"), value); } while (0) | |
596 #define set_object(name, value) do { env->SetObjectField(config, getFieldID(env, config, name, "Ljava/lang/Object;"), value); } while (0) | |
597 #define set_int_array(name, value) do { env->SetObjectField(config, getFieldID(env, config, name, "[I"), value); } while (0) | |
598 | |
599 guarantee(HeapWordSize == sizeof(char*), "Graal assumption that HeadWordSize == machine word size is wrong"); | |
605 #ifdef _WIN64 | 600 #ifdef _WIN64 |
606 set_boolean(env, config, "windowsOs", true); | 601 set_boolean(env, config, "windowsOs", true); |
607 #else | 602 #else |
608 set_boolean(env, config, "windowsOs", false); | 603 set_boolean("windowsOs", false); |
609 #endif | 604 #endif |
610 set_boolean(env, config, "verifyOops", VerifyOops); | 605 set_boolean("verifyOops", VerifyOops); |
611 set_boolean(env, config, "useFastLocking", UseFastLocking); | 606 set_boolean("useFastLocking", UseFastLocking); |
612 set_boolean(env, config, "useFastNewObjectArray", UseFastNewObjectArray); | 607 set_boolean("useFastNewObjectArray", UseFastNewObjectArray); |
613 set_boolean(env, config, "useBiasedLocking", UseBiasedLocking); | 608 set_boolean("useBiasedLocking", UseBiasedLocking); |
614 set_boolean(env, config, "useFastNewTypeArray", UseFastNewTypeArray); | 609 set_boolean("useFastNewTypeArray", UseFastNewTypeArray); |
615 set_boolean(env, config, "useTLAB", UseTLAB); | 610 set_boolean("useTLAB", UseTLAB); |
616 set_int(env, config, "codeEntryAlignment", CodeEntryAlignment); | 611 set_int("codeEntryAlignment", CodeEntryAlignment); |
617 set_int(env, config, "vmPageSize", os::vm_page_size()); | 612 set_int("vmPageSize", os::vm_page_size()); |
618 set_int(env, config, "stackShadowPages", StackShadowPages); | 613 set_int("stackShadowPages", StackShadowPages); |
619 set_int(env, config, "hubOffset", oopDesc::klass_offset_in_bytes()); | 614 set_int("hubOffset", oopDesc::klass_offset_in_bytes()); |
620 set_int(env, config, "markOffset", oopDesc::mark_offset_in_bytes()); | 615 set_int("markOffset", oopDesc::mark_offset_in_bytes()); |
621 set_int(env, config, "prototypeMarkWordOffset", in_bytes(Klass::prototype_header_offset())); | 616 set_int("prototypeMarkWordOffset", in_bytes(Klass::prototype_header_offset())); |
622 set_int(env, config, "superCheckOffsetOffset", in_bytes(Klass::super_check_offset_offset())); | 617 set_int("superCheckOffsetOffset", in_bytes(Klass::super_check_offset_offset())); |
623 set_int(env, config, "secondarySuperCacheOffset", in_bytes(Klass::secondary_super_cache_offset())); | 618 set_int("secondarySuperCacheOffset", in_bytes(Klass::secondary_super_cache_offset())); |
624 set_int(env, config, "secondarySupersOffset", in_bytes(Klass::secondary_supers_offset())); | 619 set_int("secondarySupersOffset", in_bytes(Klass::secondary_supers_offset())); |
625 set_int(env, config, "subklassOffset", in_bytes(Klass::subklass_offset())); | 620 set_int("subklassOffset", in_bytes(Klass::subklass_offset())); |
626 set_int(env, config, "nextSiblingOffset", in_bytes(Klass::next_sibling_offset())); | 621 set_int("nextSiblingOffset", in_bytes(Klass::next_sibling_offset())); |
627 set_int(env, config, "arrayLengthOffset", arrayOopDesc::length_offset_in_bytes()); | 622 set_int("arrayLengthOffset", arrayOopDesc::length_offset_in_bytes()); |
628 set_int(env, config, "klassStateOffset", in_bytes(InstanceKlass::init_state_offset())); | 623 set_int("klassStateOffset", in_bytes(InstanceKlass::init_state_offset())); |
629 set_int(env, config, "klassStateFullyInitialized", (int)InstanceKlass::fully_initialized); | 624 set_int("klassStateFullyInitialized", (int)InstanceKlass::fully_initialized); |
630 set_int(env, config, "threadTlabTopOffset", in_bytes(JavaThread::tlab_top_offset())); | 625 set_int("threadTlabTopOffset", in_bytes(JavaThread::tlab_top_offset())); |
631 set_int(env, config, "threadTlabEndOffset", in_bytes(JavaThread::tlab_end_offset())); | 626 set_int("threadTlabEndOffset", in_bytes(JavaThread::tlab_end_offset())); |
632 set_int(env, config, "threadObjectOffset", in_bytes(JavaThread::threadObj_offset())); | 627 set_int("threadObjectOffset", in_bytes(JavaThread::threadObj_offset())); |
633 set_int(env, config, "unlockedMask", (int) markOopDesc::unlocked_value); | 628 set_int("unlockedMask", (int) markOopDesc::unlocked_value); |
634 set_int(env, config, "biasedLockMaskInPlace", (int) markOopDesc::biased_lock_mask_in_place); | 629 set_int("biasedLockMaskInPlace", (int) markOopDesc::biased_lock_mask_in_place); |
635 set_int(env, config, "ageMaskInPlace", (int) markOopDesc::age_mask_in_place); | 630 set_int("ageMaskInPlace", (int) markOopDesc::age_mask_in_place); |
636 set_int(env, config, "epochMaskInPlace", (int) markOopDesc::epoch_mask_in_place); | 631 set_int("epochMaskInPlace", (int) markOopDesc::epoch_mask_in_place); |
637 set_int(env, config, "biasedLockPattern", (int) markOopDesc::biased_lock_pattern); | 632 set_int("biasedLockPattern", (int) markOopDesc::biased_lock_pattern); |
638 set_int(env, config, "methodMaxLocalsOffset", in_bytes(Method::size_of_locals_offset())); | 633 set_int("methodMaxLocalsOffset", in_bytes(Method::size_of_locals_offset())); |
639 set_int(env, config, "methodMaxStackOffset", in_bytes(Method::max_stack_offset())); | 634 set_int("methodMaxStackOffset", in_bytes(Method::max_stack_offset())); |
640 set_int(env, config, "extraStackEntries", Method::extra_stack_entries()); | 635 set_int("extraStackEntries", Method::extra_stack_entries()); |
641 set_int(env, config, "methodAccessFlagsOffset", in_bytes(Method::access_flags_offset())); | 636 set_int("methodAccessFlagsOffset", in_bytes(Method::access_flags_offset())); |
642 set_int(env, config, "klassHasFinalizerFlag", JVM_ACC_HAS_FINALIZER); | 637 set_int("klassHasFinalizerFlag", JVM_ACC_HAS_FINALIZER); |
643 set_int(env, config, "threadExceptionOopOffset", in_bytes(JavaThread::exception_oop_offset())); | 638 set_int("threadExceptionOopOffset", in_bytes(JavaThread::exception_oop_offset())); |
644 set_int(env, config, "threadExceptionPcOffset", in_bytes(JavaThread::exception_pc_offset())); | 639 set_int("threadExceptionPcOffset", in_bytes(JavaThread::exception_pc_offset())); |
645 set_long(env, config, "safepointPollingAddress", (jlong)(os::get_polling_page() + (SafepointPollOffset % os::vm_page_size()))); | 640 set_long("safepointPollingAddress", (jlong)(os::get_polling_page() + (SafepointPollOffset % os::vm_page_size()))); |
646 set_boolean(env, config, "isPollingPageFar", Assembler::is_polling_page_far()); | 641 set_boolean("isPollingPageFar", Assembler::is_polling_page_far()); |
647 set_int(env, config, "classMirrorOffset", in_bytes(Klass::java_mirror_offset())); | 642 set_int("classMirrorOffset", in_bytes(Klass::java_mirror_offset())); |
648 set_int(env, config, "runtimeCallStackSize", (jint)frame::arg_reg_save_area_bytes); | 643 set_int("runtimeCallStackSize", (jint)frame::arg_reg_save_area_bytes); |
649 set_int(env, config, "klassModifierFlagsOffset", in_bytes(Klass::modifier_flags_offset())); | 644 set_int("klassModifierFlagsOffset", in_bytes(Klass::modifier_flags_offset())); |
650 set_int(env, config, "klassAccessFlagsOffset", in_bytes(Klass::access_flags_offset())); | 645 set_int("klassAccessFlagsOffset", in_bytes(Klass::access_flags_offset())); |
651 set_int(env, config, "klassOffset", java_lang_Class::klass_offset_in_bytes()); | 646 set_int("klassOffset", java_lang_Class::klass_offset_in_bytes()); |
652 set_int(env, config, "graalMirrorInClassOffset", java_lang_Class::graal_mirror_offset_in_bytes()); | 647 set_int("graalMirrorInClassOffset", java_lang_Class::graal_mirror_offset_in_bytes()); |
653 set_int(env, config, "methodDataOffset", in_bytes(Method::method_data_offset())); | 648 set_int("methodDataOffset", in_bytes(Method::method_data_offset())); |
654 set_int(env, config, "nmethodEntryOffset", nmethod::verified_entry_point_offset()); | 649 set_int("nmethodEntryOffset", nmethod::verified_entry_point_offset()); |
655 set_int(env, config, "methodCompiledEntryOffset", in_bytes(Method::from_compiled_offset())); | 650 set_int("methodCompiledEntryOffset", in_bytes(Method::from_compiled_offset())); |
656 set_int(env, config, "basicLockSize", sizeof(BasicLock)); | 651 set_int("basicLockSize", sizeof(BasicLock)); |
657 set_int(env, config, "basicLockDisplacedHeaderOffset", BasicLock::displaced_header_offset_in_bytes()); | 652 set_int("basicLockDisplacedHeaderOffset", BasicLock::displaced_header_offset_in_bytes()); |
658 | 653 |
659 set_int(env, config, "metaspaceArrayLengthOffset", Array<Klass*>::length_offset_in_bytes()); | 654 set_int("metaspaceArrayLengthOffset", Array<Klass*>::length_offset_in_bytes()); |
660 set_int(env, config, "metaspaceArrayBaseOffset", Array<Klass*>::base_offset_in_bytes()); | 655 set_int("metaspaceArrayBaseOffset", Array<Klass*>::base_offset_in_bytes()); |
661 set_int(env, config, "methodDataOopDataOffset", in_bytes(MethodData::data_offset())); | 656 set_int("methodDataOopDataOffset", in_bytes(MethodData::data_offset())); |
662 set_int(env, config, "methodDataOopTrapHistoryOffset", in_bytes(MethodData::trap_history_offset())); | 657 set_int("methodDataOopTrapHistoryOffset", in_bytes(MethodData::trap_history_offset())); |
663 set_int(env, config, "dataLayoutHeaderSize", DataLayout::header_size_in_bytes()); | 658 set_int("dataLayoutHeaderSize", DataLayout::header_size_in_bytes()); |
664 set_int(env, config, "dataLayoutTagOffset", in_bytes(DataLayout::tag_offset())); | 659 set_int("dataLayoutTagOffset", in_bytes(DataLayout::tag_offset())); |
665 set_int(env, config, "dataLayoutFlagsOffset", in_bytes(DataLayout::flags_offset())); | 660 set_int("dataLayoutFlagsOffset", in_bytes(DataLayout::flags_offset())); |
666 set_int(env, config, "dataLayoutBCIOffset", in_bytes(DataLayout::bci_offset())); | 661 set_int("dataLayoutBCIOffset", in_bytes(DataLayout::bci_offset())); |
667 set_int(env, config, "dataLayoutCellsOffset", in_bytes(DataLayout::cell_offset(0))); | 662 set_int("dataLayoutCellsOffset", in_bytes(DataLayout::cell_offset(0))); |
668 set_int(env, config, "dataLayoutCellSize", DataLayout::cell_size); | 663 set_int("dataLayoutCellSize", DataLayout::cell_size); |
669 set_int(env, config, "bciProfileWidth", BciProfileWidth); | 664 set_int("bciProfileWidth", BciProfileWidth); |
670 set_int(env, config, "typeProfileWidth", TypeProfileWidth); | 665 set_int("typeProfileWidth", TypeProfileWidth); |
671 | 666 |
672 set_long(env, config, "debugStub", VmIds::addStub((address)warning)); | 667 set_int("tlabAlignmentReserve", (int32_t)ThreadLocalAllocBuffer::alignment_reserve()); |
673 set_long(env, config, "instanceofStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_slow_subtype_check_id))); | 668 set_long("tlabIntArrayMarkWord", (intptr_t)markOopDesc::prototype()->copy_set_hash(0x2)); |
674 set_long(env, config, "newInstanceStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_new_instance_id))); | 669 set_long("heapTopAddress", (jlong)(address) Universe::heap()->top_addr()); |
675 set_long(env, config, "newTypeArrayStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_new_type_array_id))); | 670 set_long("heapEndAddress", (jlong)(address) Universe::heap()->end_addr()); |
676 set_long(env, config, "newObjectArrayStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_new_object_array_id))); | 671 set_int("threadTlabStartOffset", in_bytes(JavaThread::tlab_start_offset())); |
677 set_long(env, config, "newMultiArrayStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_new_multi_array_id))); | 672 set_int("threadTlabSizeOffset", in_bytes(JavaThread::tlab_size_offset())); |
678 set_long(env, config, "inlineCacheMissStub", VmIds::addStub(SharedRuntime::get_ic_miss_stub())); | 673 set_int("threadAllocatedBytesOffset", in_bytes(JavaThread::allocated_bytes_offset())); |
679 set_long(env, config, "handleExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_handle_exception_nofpu_id))); | 674 set_int("tlabSlowAllocationsOffset", in_bytes(JavaThread::tlab_slow_allocations_offset())); |
680 set_long(env, config, "handleDeoptStub", VmIds::addStub(SharedRuntime::deopt_blob()->unpack())); | 675 set_int("tlabFastRefillWasteOffset", in_bytes(JavaThread::tlab_fast_refill_waste_offset())); |
681 set_long(env, config, "monitorEnterStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_monitorenter_id))); | 676 set_int("tlabNumberOfRefillsOffset", in_bytes(JavaThread::tlab_number_of_refills_offset())); |
682 set_long(env, config, "monitorExitStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_monitorexit_id))); | 677 set_int("tlabRefillWasteLimitOffset", in_bytes(JavaThread::tlab_refill_waste_limit_offset())); |
683 set_long(env, config, "verifyOopStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_verify_oop_id))); | 678 set_int("tlabRefillWasteIncrement", (int32_t) ThreadLocalAllocBuffer::refill_waste_limit_increment()); |
684 set_long(env, config, "vmErrorStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_vm_error_id))); | 679 set_int("klassInstanceSizeOffset", in_bytes(Klass::layout_helper_offset())); |
685 set_long(env, config, "deoptimizeStub", VmIds::addStub(SharedRuntime::deopt_blob()->uncommon_trap())); | 680 set_boolean("tlabStats", TLABStats); |
686 set_long(env, config, "unwindExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_unwind_exception_call_id))); | 681 set_boolean("inlineContiguousAllocationSupported", !CMSIncrementalMode && Universe::heap()->supports_inline_contig_alloc()); |
687 set_long(env, config, "osrMigrationEndStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_OSR_migration_end_id))); | 682 |
688 set_long(env, config, "registerFinalizerStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_register_finalizer_id))); | 683 set_long("debugStub", VmIds::addStub((address)warning)); |
689 set_long(env, config, "setDeoptInfoStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_set_deopt_info_id))); | 684 set_long("instanceofStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_slow_subtype_check_id))); |
690 set_long(env, config, "createNullPointerExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_create_null_pointer_exception_id))); | 685 set_long("newInstanceStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_new_instance_id))); |
691 set_long(env, config, "createOutOfBoundsExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_create_out_of_bounds_exception_id))); | 686 set_long("newTypeArrayStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_new_type_array_id))); |
692 set_long(env, config, "javaTimeMillisStub", VmIds::addStub(CAST_FROM_FN_PTR(address, os::javaTimeMillis))); | 687 set_long("newObjectArrayStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_new_object_array_id))); |
693 set_long(env, config, "javaTimeNanosStub", VmIds::addStub(CAST_FROM_FN_PTR(address, os::javaTimeNanos))); | 688 set_long("newMultiArrayStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_new_multi_array_id))); |
694 set_long(env, config, "arithmeticFremStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_arithmetic_frem_id))); | 689 set_long("inlineCacheMissStub", VmIds::addStub(SharedRuntime::get_ic_miss_stub())); |
695 set_long(env, config, "arithmeticDremStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_arithmetic_drem_id))); | 690 set_long("handleExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_handle_exception_nofpu_id))); |
696 set_long(env, config, "arithmeticSinStub", VmIds::addStub(CAST_FROM_FN_PTR(address, SharedRuntime::dsin))); | 691 set_long("handleDeoptStub", VmIds::addStub(SharedRuntime::deopt_blob()->unpack())); |
697 set_long(env, config, "arithmeticCosStub", VmIds::addStub(CAST_FROM_FN_PTR(address, SharedRuntime::dcos))); | 692 set_long("monitorEnterStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_monitorenter_id))); |
698 set_long(env, config, "arithmeticTanStub", VmIds::addStub(CAST_FROM_FN_PTR(address, SharedRuntime::dtan))); | 693 set_long("monitorExitStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_monitorexit_id))); |
699 set_long(env, config, "logPrimitiveStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_log_primitive_id))); | 694 set_long("verifyOopStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_verify_oop_id))); |
700 set_long(env, config, "logObjectStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_log_object_id))); | 695 set_long("vmErrorStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_vm_error_id))); |
701 set_long(env, config, "logPrintfStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_log_printf_id))); | 696 set_long("deoptimizeStub", VmIds::addStub(SharedRuntime::deopt_blob()->uncommon_trap())); |
697 set_long("unwindExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_unwind_exception_call_id))); | |
698 set_long("osrMigrationEndStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_OSR_migration_end_id))); | |
699 set_long("registerFinalizerStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_register_finalizer_id))); | |
700 set_long("setDeoptInfoStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_set_deopt_info_id))); | |
701 set_long("createNullPointerExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_create_null_pointer_exception_id))); | |
702 set_long("createOutOfBoundsExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_create_out_of_bounds_exception_id))); | |
703 set_long("javaTimeMillisStub", VmIds::addStub(CAST_FROM_FN_PTR(address, os::javaTimeMillis))); | |
704 set_long("javaTimeNanosStub", VmIds::addStub(CAST_FROM_FN_PTR(address, os::javaTimeNanos))); | |
705 set_long("arithmeticFremStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_arithmetic_frem_id))); | |
706 set_long("arithmeticDremStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_arithmetic_drem_id))); | |
707 set_long("arithmeticSinStub", VmIds::addStub(CAST_FROM_FN_PTR(address, SharedRuntime::dsin))); | |
708 set_long("arithmeticCosStub", VmIds::addStub(CAST_FROM_FN_PTR(address, SharedRuntime::dcos))); | |
709 set_long("arithmeticTanStub", VmIds::addStub(CAST_FROM_FN_PTR(address, SharedRuntime::dtan))); | |
710 set_long("logPrimitiveStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_log_primitive_id))); | |
711 set_long("logObjectStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_log_object_id))); | |
712 set_long("logPrintfStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_log_printf_id))); | |
702 | 713 |
703 | 714 |
704 BarrierSet* bs = Universe::heap()->barrier_set(); | 715 BarrierSet* bs = Universe::heap()->barrier_set(); |
705 switch (bs->kind()) { | 716 switch (bs->kind()) { |
706 case BarrierSet::CardTableModRef: | 717 case BarrierSet::CardTableModRef: |
707 case BarrierSet::CardTableExtension: { | 718 case BarrierSet::CardTableExtension: { |
708 jlong base = (jlong)((CardTableModRefBS*)bs)->byte_map_base; | 719 jlong base = (jlong)((CardTableModRefBS*)bs)->byte_map_base; |
709 assert(base != 0, "unexpected byte_map_base"); | 720 assert(base != 0, "unexpected byte_map_base"); |
710 set_long(env, config, "cardtableStartAddress", base); | 721 set_long("cardtableStartAddress", base); |
711 set_int(env, config, "cardtableShift", CardTableModRefBS::card_shift); | 722 set_int("cardtableShift", CardTableModRefBS::card_shift); |
712 break; | 723 break; |
713 } | 724 } |
714 case BarrierSet::ModRef: | 725 case BarrierSet::ModRef: |
715 case BarrierSet::Other: | 726 case BarrierSet::Other: |
716 set_long(env, config, "cardtableStartAddress", 0); | 727 set_long("cardtableStartAddress", 0); |
717 set_int(env, config, "cardtableShift", 0); | 728 set_int("cardtableShift", 0); |
718 // No post barriers | 729 // No post barriers |
719 break; | 730 break; |
720 #ifndef SERIALGC | 731 #ifndef SERIALGC |
721 case BarrierSet::G1SATBCT: | 732 case BarrierSet::G1SATBCT: |
722 case BarrierSet::G1SATBCTLogging: | 733 case BarrierSet::G1SATBCTLogging: |
724 default: | 735 default: |
725 ShouldNotReachHere(); | 736 ShouldNotReachHere(); |
726 break; | 737 break; |
727 } | 738 } |
728 | 739 |
729 set_int(env, config, "arrayClassElementOffset", in_bytes(ObjArrayKlass::element_klass_offset())); | 740 set_int("arrayClassElementOffset", in_bytes(ObjArrayKlass::element_klass_offset())); |
741 | |
742 #undef set_boolean | |
743 #undef set_int | |
744 #undef set_long | |
745 #undef set_object | |
746 #undef set_int_array | |
747 | |
730 C2V_END | 748 C2V_END |
731 | 749 |
732 C2V_VMENTRY(jint, installCode0, (JNIEnv *jniEnv, jobject, jobject compResult, jobject installed_code, jobject info)) | 750 C2V_VMENTRY(jint, installCode0, (JNIEnv *jniEnv, jobject, jobject compResult, jobject installed_code, jobject info)) |
733 ResourceMark rm; | 751 ResourceMark rm; |
734 HandleMark hm; | 752 HandleMark hm; |