comparison src/share/vm/graal/graalCompilerToVM.cpp @ 7221:2ae3e26b7e9a

Merge.
author Christian Haeubl <haeubl@ssw.jku.at>
date Tue, 11 Dec 2012 08:48:12 +0100
parents fcae6d960acd 88d626e2c2a8
children 720925633b3a
comparison
equal deleted inserted replaced
7220:fcae6d960acd 7221:2ae3e26b7e9a
512 } 512 }
513 Handle holder = GraalCompiler::get_JavaType(method->method_holder(), CHECK_NULL); 513 Handle holder = GraalCompiler::get_JavaType(method->method_holder(), CHECK_NULL);
514 return JNIHandles::make_local(THREAD, VMToCompiler::createResolvedJavaMethod(holder, method(), THREAD)); 514 return JNIHandles::make_local(THREAD, VMToCompiler::createResolvedJavaMethod(holder, method(), THREAD));
515 C2V_END 515 C2V_END
516 516
517 C2V_VMENTRY(jlong, getPrototypeMarkWord, (JNIEnv *, jobject, jobject klass))
518 KlassHandle klass_handle(java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaMirror(klass)));
519 if (klass_handle->oop_is_array()) {
520 return (int32_t)(intptr_t) markOopDesc::prototype();
521 } else {
522 return (jlong) (intptr_t) klass_handle->prototype_header();
523 }
524 C2V_END
525
526 C2V_VMENTRY(jboolean, isTypeInitialized,(JNIEnv *, jobject, jobject hotspot_klass)) 517 C2V_VMENTRY(jboolean, isTypeInitialized,(JNIEnv *, jobject, jobject hotspot_klass))
527 Klass* klass = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaMirror(hotspot_klass)); 518 Klass* klass = java_lang_Class::as_Klass(HotSpotResolvedObjectType::javaMirror(hotspot_klass));
528 assert(klass != NULL, "method must not be called for primitive types"); 519 assert(klass != NULL, "method must not be called for primitive types");
529 return InstanceKlass::cast(klass)->is_initialized(); 520 return InstanceKlass::cast(klass)->is_initialized();
530 C2V_END 521 C2V_END
583 fatal(err_msg("field not found: %s (%s)", name, sig)); 574 fatal(err_msg("field not found: %s (%s)", name, sig));
584 } 575 }
585 return id; 576 return id;
586 } 577 }
587 578
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 }; 579 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); 580 int basicTypeCount = sizeof(basicTypes) / sizeof(BasicType);
603 581
604 C2V_ENTRY(void, initializeConfiguration, (JNIEnv *env, jobject, jobject config)) 582 C2V_ENTRY(void, initializeConfiguration, (JNIEnv *env, jobject, jobject config))
583
584 #define set_boolean(name, value) do { env->SetBooleanField(config, getFieldID(env, config, name, "Z"), value); } while (0)
585 #define set_int(name, value) do { env->SetIntField(config, getFieldID(env, config, name, "I"), value); } while (0)
586 #define set_long(name, value) do { env->SetLongField(config, getFieldID(env, config, name, "J"), value); } while (0)
587 #define set_object(name, value) do { env->SetObjectField(config, getFieldID(env, config, name, "Ljava/lang/Object;"), value); } while (0)
588 #define set_int_array(name, value) do { env->SetObjectField(config, getFieldID(env, config, name, "[I"), value); } while (0)
589
590 guarantee(HeapWordSize == sizeof(char*), "Graal assumption that HeadWordSize == machine word size is wrong");
605 #ifdef _WIN64 591 #ifdef _WIN64
606 set_boolean(env, config, "windowsOs", true); 592 set_boolean(env, config, "windowsOs", true);
607 #else 593 #else
608 set_boolean(env, config, "windowsOs", false); 594 set_boolean("windowsOs", false);
609 #endif 595 #endif
610 set_boolean(env, config, "verifyOops", VerifyOops); 596 set_boolean("verifyOops", VerifyOops);
611 set_boolean(env, config, "useFastLocking", UseFastLocking); 597 set_boolean("useFastLocking", UseFastLocking);
612 set_boolean(env, config, "useFastNewObjectArray", UseFastNewObjectArray); 598 set_boolean("useFastNewObjectArray", UseFastNewObjectArray);
613 set_boolean(env, config, "useBiasedLocking", UseBiasedLocking); 599 set_boolean("useBiasedLocking", UseBiasedLocking);
614 set_boolean(env, config, "useFastNewTypeArray", UseFastNewTypeArray); 600 set_boolean("useFastNewTypeArray", UseFastNewTypeArray);
615 set_boolean(env, config, "useTLAB", UseTLAB); 601 set_boolean("useTLAB", UseTLAB);
616 set_int(env, config, "codeEntryAlignment", CodeEntryAlignment); 602 set_int("codeEntryAlignment", CodeEntryAlignment);
617 set_int(env, config, "vmPageSize", os::vm_page_size()); 603 set_int("vmPageSize", os::vm_page_size());
618 set_int(env, config, "stackShadowPages", StackShadowPages); 604 set_int("stackShadowPages", StackShadowPages);
619 set_int(env, config, "hubOffset", oopDesc::klass_offset_in_bytes()); 605 set_int("hubOffset", oopDesc::klass_offset_in_bytes());
620 set_int(env, config, "markOffset", oopDesc::mark_offset_in_bytes()); 606 set_int("markOffset", oopDesc::mark_offset_in_bytes());
621 set_int(env, config, "prototypeMarkWordOffset", in_bytes(Klass::prototype_header_offset())); 607 set_int("prototypeMarkWordOffset", in_bytes(Klass::prototype_header_offset()));
622 set_int(env, config, "superCheckOffsetOffset", in_bytes(Klass::super_check_offset_offset())); 608 set_int("superCheckOffsetOffset", in_bytes(Klass::super_check_offset_offset()));
623 set_int(env, config, "secondarySuperCacheOffset", in_bytes(Klass::secondary_super_cache_offset())); 609 set_int("secondarySuperCacheOffset", in_bytes(Klass::secondary_super_cache_offset()));
624 set_int(env, config, "secondarySupersOffset", in_bytes(Klass::secondary_supers_offset())); 610 set_int("secondarySupersOffset", in_bytes(Klass::secondary_supers_offset()));
625 set_int(env, config, "subklassOffset", in_bytes(Klass::subklass_offset())); 611 set_int("subklassOffset", in_bytes(Klass::subklass_offset()));
626 set_int(env, config, "nextSiblingOffset", in_bytes(Klass::next_sibling_offset())); 612 set_int("nextSiblingOffset", in_bytes(Klass::next_sibling_offset()));
627 set_int(env, config, "arrayLengthOffset", arrayOopDesc::length_offset_in_bytes()); 613 set_int("arrayLengthOffset", arrayOopDesc::length_offset_in_bytes());
628 set_int(env, config, "klassStateOffset", in_bytes(InstanceKlass::init_state_offset())); 614 set_int("klassStateOffset", in_bytes(InstanceKlass::init_state_offset()));
629 set_int(env, config, "klassStateFullyInitialized", (int)InstanceKlass::fully_initialized); 615 set_int("klassStateFullyInitialized", (int)InstanceKlass::fully_initialized);
630 set_int(env, config, "threadTlabTopOffset", in_bytes(JavaThread::tlab_top_offset())); 616 set_int("threadTlabTopOffset", in_bytes(JavaThread::tlab_top_offset()));
631 set_int(env, config, "threadTlabEndOffset", in_bytes(JavaThread::tlab_end_offset())); 617 set_int("threadTlabEndOffset", in_bytes(JavaThread::tlab_end_offset()));
632 set_int(env, config, "threadObjectOffset", in_bytes(JavaThread::threadObj_offset())); 618 set_int("threadObjectOffset", in_bytes(JavaThread::threadObj_offset()));
633 set_int(env, config, "osThreadOffset", in_bytes(JavaThread::osthread_offset())); 619 set_int("osThreadOffset", in_bytes(JavaThread::osthread_offset()));
634 set_int(env, config, "osThreadInterruptedOffset", in_bytes(OSThread::interrupted_offset())); 620 set_int("osThreadInterruptedOffset", in_bytes(OSThread::interrupted_offset()));
635 set_int(env, config, "unlockedMask", (int) markOopDesc::unlocked_value); 621 set_int("unlockedMask", (int) markOopDesc::unlocked_value);
636 set_int(env, config, "biasedLockMaskInPlace", (int) markOopDesc::biased_lock_mask_in_place); 622 set_int("biasedLockMaskInPlace", (int) markOopDesc::biased_lock_mask_in_place);
637 set_int(env, config, "ageMaskInPlace", (int) markOopDesc::age_mask_in_place); 623 set_int("ageMaskInPlace", (int) markOopDesc::age_mask_in_place);
638 set_int(env, config, "epochMaskInPlace", (int) markOopDesc::epoch_mask_in_place); 624 set_int("epochMaskInPlace", (int) markOopDesc::epoch_mask_in_place);
639 set_int(env, config, "biasedLockPattern", (int) markOopDesc::biased_lock_pattern); 625 set_int("biasedLockPattern", (int) markOopDesc::biased_lock_pattern);
640 set_int(env, config, "methodMaxLocalsOffset", in_bytes(Method::size_of_locals_offset())); 626 set_int("methodMaxLocalsOffset", in_bytes(Method::size_of_locals_offset()));
641 set_int(env, config, "methodMaxStackOffset", in_bytes(Method::max_stack_offset())); 627 set_int("methodMaxStackOffset", in_bytes(Method::max_stack_offset()));
642 set_int(env, config, "extraStackEntries", Method::extra_stack_entries()); 628 set_int("extraStackEntries", Method::extra_stack_entries());
643 set_int(env, config, "methodAccessFlagsOffset", in_bytes(Method::access_flags_offset())); 629 set_int("methodAccessFlagsOffset", in_bytes(Method::access_flags_offset()));
644 set_int(env, config, "klassHasFinalizerFlag", JVM_ACC_HAS_FINALIZER); 630 set_int("klassHasFinalizerFlag", JVM_ACC_HAS_FINALIZER);
645 set_int(env, config, "threadExceptionOopOffset", in_bytes(JavaThread::exception_oop_offset())); 631 set_int("threadExceptionOopOffset", in_bytes(JavaThread::exception_oop_offset()));
646 set_int(env, config, "threadExceptionPcOffset", in_bytes(JavaThread::exception_pc_offset())); 632 set_int("threadExceptionPcOffset", in_bytes(JavaThread::exception_pc_offset()));
647 set_long(env, config, "safepointPollingAddress", (jlong)(os::get_polling_page() + (SafepointPollOffset % os::vm_page_size()))); 633 set_long("safepointPollingAddress", (jlong)(os::get_polling_page() + (SafepointPollOffset % os::vm_page_size())));
648 set_boolean(env, config, "isPollingPageFar", Assembler::is_polling_page_far()); 634 set_boolean("isPollingPageFar", Assembler::is_polling_page_far());
649 set_int(env, config, "classMirrorOffset", in_bytes(Klass::java_mirror_offset())); 635 set_int("classMirrorOffset", in_bytes(Klass::java_mirror_offset()));
650 set_int(env, config, "runtimeCallStackSize", (jint)frame::arg_reg_save_area_bytes); 636 set_int("runtimeCallStackSize", (jint)frame::arg_reg_save_area_bytes);
651 set_int(env, config, "klassModifierFlagsOffset", in_bytes(Klass::modifier_flags_offset())); 637 set_int("klassModifierFlagsOffset", in_bytes(Klass::modifier_flags_offset()));
652 set_int(env, config, "klassAccessFlagsOffset", in_bytes(Klass::access_flags_offset())); 638 set_int("klassAccessFlagsOffset", in_bytes(Klass::access_flags_offset()));
653 set_int(env, config, "klassLayoutHelperOffset", in_bytes(Klass::layout_helper_offset())); 639 set_int("klassOffset", java_lang_Class::klass_offset_in_bytes());
654 set_int(env, config, "klassSuperKlassOffset", in_bytes(Klass::super_offset())); 640 set_int("graalMirrorInClassOffset", java_lang_Class::graal_mirror_offset_in_bytes());
655 set_int(env, config, "klassOffset", java_lang_Class::klass_offset_in_bytes()); 641 set_int("klassLayoutHelperOffset", in_bytes(Klass::layout_helper_offset()));
656 set_int(env, config, "graalMirrorInClassOffset", java_lang_Class::graal_mirror_offset_in_bytes()); 642 set_int("klassSuperKlassOffset", in_bytes(Klass::super_offset()));
657 set_int(env, config, "methodDataOffset", in_bytes(Method::method_data_offset())); 643 set_int("methodDataOffset", in_bytes(Method::method_data_offset()));
658 set_int(env, config, "nmethodEntryOffset", nmethod::verified_entry_point_offset()); 644 set_int("nmethodEntryOffset", nmethod::verified_entry_point_offset());
659 set_int(env, config, "methodCompiledEntryOffset", in_bytes(Method::from_compiled_offset())); 645 set_int("methodCompiledEntryOffset", in_bytes(Method::from_compiled_offset()));
660 set_int(env, config, "basicLockSize", sizeof(BasicLock)); 646 set_int("basicLockSize", sizeof(BasicLock));
661 set_int(env, config, "basicLockDisplacedHeaderOffset", BasicLock::displaced_header_offset_in_bytes()); 647 set_int("basicLockDisplacedHeaderOffset", BasicLock::displaced_header_offset_in_bytes());
662 set_int(env, config, "uninitializedIdentityHashCodeValue", markOopDesc::no_hash); 648 set_int("uninitializedIdentityHashCodeValue", markOopDesc::no_hash);
663 set_int(env, config, "identityHashCodeShift", markOopDesc::hash_shift); 649 set_int("identityHashCodeShift", markOopDesc::hash_shift);
664 650
665 set_int(env, config, "arrayKlassLayoutHelperIdentifier", 0x80000000); 651 set_int("arrayKlassLayoutHelperIdentifier", 0x80000000);
666 assert((Klass::_lh_array_tag_obj_value & Klass::_lh_array_tag_type_value & 0x80000000) != 0, "obj_array and type_array must have first bit set"); 652 assert((Klass::_lh_array_tag_obj_value & Klass::_lh_array_tag_type_value & 0x80000000) != 0, "obj_array and type_array must have first bit set");
667 set_int(env, config, "arrayKlassComponentMirrorOffset", in_bytes(ArrayKlass::component_mirror_offset())); 653 set_int("arrayKlassComponentMirrorOffset", in_bytes(ArrayKlass::component_mirror_offset()));
668 654
669 set_int(env, config, "metaspaceArrayLengthOffset", Array<Klass*>::length_offset_in_bytes()); 655 set_int("metaspaceArrayLengthOffset", Array<Klass*>::length_offset_in_bytes());
670 set_int(env, config, "metaspaceArrayBaseOffset", Array<Klass*>::base_offset_in_bytes()); 656 set_int("metaspaceArrayBaseOffset", Array<Klass*>::base_offset_in_bytes());
671 set_int(env, config, "methodDataOopDataOffset", in_bytes(MethodData::data_offset())); 657 set_int("methodDataOopDataOffset", in_bytes(MethodData::data_offset()));
672 set_int(env, config, "methodDataOopTrapHistoryOffset", in_bytes(MethodData::trap_history_offset())); 658 set_int("methodDataOopTrapHistoryOffset", in_bytes(MethodData::trap_history_offset()));
673 set_int(env, config, "dataLayoutHeaderSize", DataLayout::header_size_in_bytes()); 659 set_int("dataLayoutHeaderSize", DataLayout::header_size_in_bytes());
674 set_int(env, config, "dataLayoutTagOffset", in_bytes(DataLayout::tag_offset())); 660 set_int("dataLayoutTagOffset", in_bytes(DataLayout::tag_offset()));
675 set_int(env, config, "dataLayoutFlagsOffset", in_bytes(DataLayout::flags_offset())); 661 set_int("dataLayoutFlagsOffset", in_bytes(DataLayout::flags_offset()));
676 set_int(env, config, "dataLayoutBCIOffset", in_bytes(DataLayout::bci_offset())); 662 set_int("dataLayoutBCIOffset", in_bytes(DataLayout::bci_offset()));
677 set_int(env, config, "dataLayoutCellsOffset", in_bytes(DataLayout::cell_offset(0))); 663 set_int("dataLayoutCellsOffset", in_bytes(DataLayout::cell_offset(0)));
678 set_int(env, config, "dataLayoutCellSize", DataLayout::cell_size); 664 set_int("dataLayoutCellSize", DataLayout::cell_size);
679 set_int(env, config, "bciProfileWidth", BciProfileWidth); 665 set_int("bciProfileWidth", BciProfileWidth);
680 set_int(env, config, "typeProfileWidth", TypeProfileWidth); 666 set_int("typeProfileWidth", TypeProfileWidth);
681 667
682 set_long(env, config, "debugStub", VmIds::addStub((address)warning)); 668 set_int("tlabAlignmentReserve", (int32_t)ThreadLocalAllocBuffer::alignment_reserve());
683 set_long(env, config, "instanceofStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_slow_subtype_check_id))); 669 set_long("tlabIntArrayMarkWord", (intptr_t)markOopDesc::prototype()->copy_set_hash(0x2));
684 set_long(env, config, "newInstanceStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_new_instance_id))); 670 set_long("heapTopAddress", (jlong)(address) Universe::heap()->top_addr());
685 set_long(env, config, "newTypeArrayStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_new_type_array_id))); 671 set_long("heapEndAddress", (jlong)(address) Universe::heap()->end_addr());
686 set_long(env, config, "newObjectArrayStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_new_object_array_id))); 672 set_int("threadTlabStartOffset", in_bytes(JavaThread::tlab_start_offset()));
687 set_long(env, config, "newMultiArrayStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_new_multi_array_id))); 673 set_int("threadTlabSizeOffset", in_bytes(JavaThread::tlab_size_offset()));
688 set_long(env, config, "inlineCacheMissStub", VmIds::addStub(SharedRuntime::get_ic_miss_stub())); 674 set_int("threadAllocatedBytesOffset", in_bytes(JavaThread::allocated_bytes_offset()));
689 set_long(env, config, "handleExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_handle_exception_nofpu_id))); 675 set_int("tlabSlowAllocationsOffset", in_bytes(JavaThread::tlab_slow_allocations_offset()));
690 set_long(env, config, "handleDeoptStub", VmIds::addStub(SharedRuntime::deopt_blob()->unpack())); 676 set_int("tlabFastRefillWasteOffset", in_bytes(JavaThread::tlab_fast_refill_waste_offset()));
691 set_long(env, config, "monitorEnterStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_monitorenter_id))); 677 set_int("tlabNumberOfRefillsOffset", in_bytes(JavaThread::tlab_number_of_refills_offset()));
692 set_long(env, config, "monitorExitStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_monitorexit_id))); 678 set_int("tlabRefillWasteLimitOffset", in_bytes(JavaThread::tlab_refill_waste_limit_offset()));
693 set_long(env, config, "verifyOopStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_verify_oop_id))); 679 set_int("tlabRefillWasteIncrement", (int32_t) ThreadLocalAllocBuffer::refill_waste_limit_increment());
694 set_long(env, config, "vmErrorStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_vm_error_id))); 680 set_int("klassInstanceSizeOffset", in_bytes(Klass::layout_helper_offset()));
695 set_long(env, config, "deoptimizeStub", VmIds::addStub(SharedRuntime::deopt_blob()->uncommon_trap())); 681 set_boolean("tlabStats", TLABStats);
696 set_long(env, config, "unwindExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_unwind_exception_call_id))); 682 set_boolean("inlineContiguousAllocationSupported", !CMSIncrementalMode && Universe::heap()->supports_inline_contig_alloc());
697 set_long(env, config, "osrMigrationEndStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_OSR_migration_end_id))); 683
698 set_long(env, config, "registerFinalizerStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_register_finalizer_id))); 684 set_long("arrayPrototypeMarkWord", (intptr_t)markOopDesc::prototype());
699 set_long(env, config, "setDeoptInfoStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_set_deopt_info_id))); 685 set_int("layoutHelperLog2ElementSizeShift", Klass::_lh_log2_element_size_shift);
700 set_long(env, config, "createNullPointerExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_create_null_pointer_exception_id))); 686 set_int("layoutHelperLog2ElementSizeMask", Klass::_lh_log2_element_size_mask);
701 set_long(env, config, "createOutOfBoundsExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_create_out_of_bounds_exception_id))); 687 set_int("layoutHelperElementTypeShift", Klass::_lh_element_type_shift);
702 set_long(env, config, "javaTimeMillisStub", VmIds::addStub(CAST_FROM_FN_PTR(address, os::javaTimeMillis))); 688 set_int("layoutHelperElementTypeMask", Klass::_lh_element_type_mask);
703 set_long(env, config, "javaTimeNanosStub", VmIds::addStub(CAST_FROM_FN_PTR(address, os::javaTimeNanos))); 689 set_int("layoutHelperHeaderSizeShift", Klass::_lh_header_size_shift);
704 set_long(env, config, "arithmeticFremStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_arithmetic_frem_id))); 690 set_int("layoutHelperHeaderSizeMask", Klass::_lh_header_size_mask);
705 set_long(env, config, "arithmeticDremStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_arithmetic_drem_id))); 691 set_int("layoutHelperOffset", in_bytes(Klass::layout_helper_offset()));
706 set_long(env, config, "arithmeticSinStub", VmIds::addStub(CAST_FROM_FN_PTR(address, SharedRuntime::dsin))); 692
707 set_long(env, config, "arithmeticCosStub", VmIds::addStub(CAST_FROM_FN_PTR(address, SharedRuntime::dcos))); 693 set_long("debugStub", VmIds::addStub((address)warning));
708 set_long(env, config, "arithmeticTanStub", VmIds::addStub(CAST_FROM_FN_PTR(address, SharedRuntime::dtan))); 694 set_long("instanceofStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_slow_subtype_check_id)));
709 set_long(env, config, "logPrimitiveStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_log_primitive_id))); 695 set_long("newInstanceStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_new_instance_id)));
710 set_long(env, config, "logObjectStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_log_object_id))); 696 set_long("newArrayStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_new_array_id)));
711 set_long(env, config, "logPrintfStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_log_printf_id))); 697 set_long("newMultiArrayStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_new_multi_array_id)));
712 set_long(env, config, "identityHashCodeStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_identity_hash_code_id))); 698 set_long("identityHashCodeStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_identity_hash_code_id)));
713 set_long(env, config, "threadIsInterruptedStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_thread_is_interrupted_id))); 699 set_long("threadIsInterruptedStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_thread_is_interrupted_id)));
700 set_long("inlineCacheMissStub", VmIds::addStub(SharedRuntime::get_ic_miss_stub()));
701 set_long("handleExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_handle_exception_nofpu_id)));
702 set_long("handleDeoptStub", VmIds::addStub(SharedRuntime::deopt_blob()->unpack()));
703 set_long("monitorEnterStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_monitorenter_id)));
704 set_long("monitorExitStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_monitorexit_id)));
705 set_long("verifyOopStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_verify_oop_id)));
706 set_long("vmErrorStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_vm_error_id)));
707 set_long("deoptimizeStub", VmIds::addStub(SharedRuntime::deopt_blob()->uncommon_trap()));
708 set_long("unwindExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_unwind_exception_call_id)));
709 set_long("osrMigrationEndStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_OSR_migration_end_id)));
710 set_long("registerFinalizerStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_register_finalizer_id)));
711 set_long("setDeoptInfoStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_set_deopt_info_id)));
712 set_long("createNullPointerExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_create_null_pointer_exception_id)));
713 set_long("createOutOfBoundsExceptionStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_create_out_of_bounds_exception_id)));
714 set_long("javaTimeMillisStub", VmIds::addStub(CAST_FROM_FN_PTR(address, os::javaTimeMillis)));
715 set_long("javaTimeNanosStub", VmIds::addStub(CAST_FROM_FN_PTR(address, os::javaTimeNanos)));
716 set_long("arithmeticFremStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_arithmetic_frem_id)));
717 set_long("arithmeticDremStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_arithmetic_drem_id)));
718 set_long("arithmeticSinStub", VmIds::addStub(CAST_FROM_FN_PTR(address, SharedRuntime::dsin)));
719 set_long("arithmeticCosStub", VmIds::addStub(CAST_FROM_FN_PTR(address, SharedRuntime::dcos)));
720 set_long("arithmeticTanStub", VmIds::addStub(CAST_FROM_FN_PTR(address, SharedRuntime::dtan)));
721 set_long("logPrimitiveStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_log_primitive_id)));
722 set_long("logObjectStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_log_object_id)));
723 set_long("logPrintfStub", VmIds::addStub(GraalRuntime::entry_for(GraalRuntime::graal_log_printf_id)));
714 724
715 725
716 BarrierSet* bs = Universe::heap()->barrier_set(); 726 BarrierSet* bs = Universe::heap()->barrier_set();
717 switch (bs->kind()) { 727 switch (bs->kind()) {
718 case BarrierSet::CardTableModRef: 728 case BarrierSet::CardTableModRef:
719 case BarrierSet::CardTableExtension: { 729 case BarrierSet::CardTableExtension: {
720 jlong base = (jlong)((CardTableModRefBS*)bs)->byte_map_base; 730 jlong base = (jlong)((CardTableModRefBS*)bs)->byte_map_base;
721 assert(base != 0, "unexpected byte_map_base"); 731 assert(base != 0, "unexpected byte_map_base");
722 set_long(env, config, "cardtableStartAddress", base); 732 set_long("cardtableStartAddress", base);
723 set_int(env, config, "cardtableShift", CardTableModRefBS::card_shift); 733 set_int("cardtableShift", CardTableModRefBS::card_shift);
724 break; 734 break;
725 } 735 }
726 case BarrierSet::ModRef: 736 case BarrierSet::ModRef:
727 case BarrierSet::Other: 737 case BarrierSet::Other:
728 set_long(env, config, "cardtableStartAddress", 0); 738 set_long("cardtableStartAddress", 0);
729 set_int(env, config, "cardtableShift", 0); 739 set_int("cardtableShift", 0);
730 // No post barriers 740 // No post barriers
731 break; 741 break;
732 #ifndef SERIALGC 742 #ifndef SERIALGC
733 case BarrierSet::G1SATBCT: 743 case BarrierSet::G1SATBCT:
734 case BarrierSet::G1SATBCTLogging: 744 case BarrierSet::G1SATBCTLogging:
736 default: 746 default:
737 ShouldNotReachHere(); 747 ShouldNotReachHere();
738 break; 748 break;
739 } 749 }
740 750
741 set_int(env, config, "arrayClassElementOffset", in_bytes(ObjArrayKlass::element_klass_offset())); 751 set_int("arrayClassElementOffset", in_bytes(ObjArrayKlass::element_klass_offset()));
752
753 #undef set_boolean
754 #undef set_int
755 #undef set_long
756 #undef set_object
757 #undef set_int_array
758
742 C2V_END 759 C2V_END
743 760
744 C2V_VMENTRY(jint, installCode0, (JNIEnv *jniEnv, jobject, jobject compResult, jobject installed_code, jobject info)) 761 C2V_VMENTRY(jint, installCode0, (JNIEnv *jniEnv, jobject, jobject compResult, jobject installed_code, jobject info))
745 ResourceMark rm; 762 ResourceMark rm;
746 HandleMark hm; 763 HandleMark hm;
942 {CC"lookupMethodInPool", CC"("HS_RESOLVED_TYPE"IB)"METHOD, FN_PTR(lookupMethodInPool)}, 959 {CC"lookupMethodInPool", CC"("HS_RESOLVED_TYPE"IB)"METHOD, FN_PTR(lookupMethodInPool)},
943 {CC"lookupTypeInPool", CC"("HS_RESOLVED_TYPE"I)"TYPE, FN_PTR(lookupTypeInPool)}, 960 {CC"lookupTypeInPool", CC"("HS_RESOLVED_TYPE"I)"TYPE, FN_PTR(lookupTypeInPool)},
944 {CC"lookupReferencedTypeInPool", CC"("HS_RESOLVED_TYPE"IB)V", FN_PTR(lookupReferencedTypeInPool)}, 961 {CC"lookupReferencedTypeInPool", CC"("HS_RESOLVED_TYPE"IB)V", FN_PTR(lookupReferencedTypeInPool)},
945 {CC"lookupFieldInPool", CC"("HS_RESOLVED_TYPE"IB)"FIELD, FN_PTR(lookupFieldInPool)}, 962 {CC"lookupFieldInPool", CC"("HS_RESOLVED_TYPE"IB)"FIELD, FN_PTR(lookupFieldInPool)},
946 {CC"resolveMethod", CC"("HS_RESOLVED_TYPE STRING STRING")"METHOD, FN_PTR(resolveMethod)}, 963 {CC"resolveMethod", CC"("HS_RESOLVED_TYPE STRING STRING")"METHOD, FN_PTR(resolveMethod)},
947 {CC"getPrototypeMarkWord", CC"("HS_RESOLVED_TYPE")J", FN_PTR(getPrototypeMarkWord)},
948 {CC"getInstanceFields", CC"("HS_RESOLVED_TYPE")["HS_RESOLVED_FIELD, FN_PTR(getInstanceFields)}, 964 {CC"getInstanceFields", CC"("HS_RESOLVED_TYPE")["HS_RESOLVED_FIELD, FN_PTR(getInstanceFields)},
949 {CC"isTypeInitialized", CC"("HS_RESOLVED_TYPE")Z", FN_PTR(isTypeInitialized)}, 965 {CC"isTypeInitialized", CC"("HS_RESOLVED_TYPE")Z", FN_PTR(isTypeInitialized)},
950 {CC"initializeType", CC"("HS_RESOLVED_TYPE")V", FN_PTR(initializeType)}, 966 {CC"initializeType", CC"("HS_RESOLVED_TYPE")V", FN_PTR(initializeType)},
951 {CC"getMaxCallTargetOffset", CC"(J)J", FN_PTR(getMaxCallTargetOffset)}, 967 {CC"getMaxCallTargetOffset", CC"(J)J", FN_PTR(getMaxCallTargetOffset)},
952 {CC"getResolvedType", CC"("CLASS")"RESOLVED_TYPE, FN_PTR(getResolvedType)}, 968 {CC"getResolvedType", CC"("CLASS")"RESOLVED_TYPE, FN_PTR(getResolvedType)},