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;