src/share/vm/ci/ciMethod.cpp

changeset 5907
c775af091fe9
parent 5904
5cc2d82aa82a
child 5991
b2ee5dc63353
equal deleted inserted replaced
5906:5741fc86a2ee 5907:c775af091fe9
844 // 844 //
845 // Generate new MethodData* objects at compile time. 845 // Generate new MethodData* objects at compile time.
846 // Return true if allocation was successful or no MDO is required. 846 // Return true if allocation was successful or no MDO is required.
847 bool ciMethod::ensure_method_data(methodHandle h_m) { 847 bool ciMethod::ensure_method_data(methodHandle h_m) {
848 EXCEPTION_CONTEXT; 848 EXCEPTION_CONTEXT;
849 if (is_native() || is_abstract() || h_m()->is_accessor()) return true; 849 if (is_native() || is_abstract() || h_m()->is_accessor()) {
850 return true;
851 }
850 if (h_m()->method_data() == NULL) { 852 if (h_m()->method_data() == NULL) {
851 Method::build_interpreter_method_data(h_m, THREAD); 853 Method::build_interpreter_method_data(h_m, THREAD);
852 if (HAS_PENDING_EXCEPTION) { 854 if (HAS_PENDING_EXCEPTION) {
853 CLEAR_PENDING_EXCEPTION; 855 CLEAR_PENDING_EXCEPTION;
854 } 856 }
901 // ciMethod::method_data_or_null 903 // ciMethod::method_data_or_null
902 // Returns a pointer to ciMethodData if MDO exists on the VM side, 904 // Returns a pointer to ciMethodData if MDO exists on the VM side,
903 // NULL otherwise. 905 // NULL otherwise.
904 ciMethodData* ciMethod::method_data_or_null() { 906 ciMethodData* ciMethod::method_data_or_null() {
905 ciMethodData *md = method_data(); 907 ciMethodData *md = method_data();
906 if (md->is_empty()) return NULL; 908 if (md->is_empty()) {
909 return NULL;
910 }
907 return md; 911 return md;
908 } 912 }
909 913
910 // ------------------------------------------------------------------ 914 // ------------------------------------------------------------------
911 // ciMethod::ensure_method_counters 915 // ciMethod::ensure_method_counters
912 // 916 //
913 address ciMethod::ensure_method_counters() { 917 MethodCounters* ciMethod::ensure_method_counters() {
914 check_is_loaded(); 918 check_is_loaded();
915 VM_ENTRY_MARK; 919 VM_ENTRY_MARK;
916 methodHandle mh(THREAD, get_Method()); 920 methodHandle mh(THREAD, get_Method());
917 MethodCounters *counter = mh->method_counters(); 921 MethodCounters* method_counters = mh->get_method_counters(CHECK_NULL);
918 if (counter == NULL) { 922 return method_counters;
919 counter = Method::build_method_counters(mh(), CHECK_AND_CLEAR_NULL);
920 }
921 return (address)counter;
922 } 923 }
923 924
924 // ------------------------------------------------------------------ 925 // ------------------------------------------------------------------
925 // ciMethod::should_exclude 926 // ciMethod::should_exclude
926 // 927 //

mercurial