diff src/share/vm/jvmci/jvmciCodeInstaller.cpp @ 21731:df9d2375512a

Track max live register value in reference map
author Tom Rodriguez <tom.rodriguez@oracle.com>
date Wed, 03 Jun 2015 20:24:05 -0700
parents b9f9b8af17ff
children 861108f5408e
line wrap: on
line diff
--- a/src/share/vm/jvmci/jvmciCodeInstaller.cpp	Wed Jun 03 19:57:38 2015 -0700
+++ b/src/share/vm/jvmci/jvmciCodeInstaller.cpp	Wed Jun 03 20:24:05 2015 -0700
@@ -72,6 +72,9 @@
 // creates a HotSpot oop map out of the byte arrays provided by DebugInfo
 OopMap* CodeInstaller::create_oop_map(oop debug_info) {
   oop reference_map = DebugInfo::referenceMap(debug_info);
+  if (HotSpotReferenceMap::maxRegisterSize(reference_map) > 16) {
+    _has_wide_vector = true;
+  }
   OopMap* map = new OopMap(_total_frame_size, _parameter_count);
   objArrayOop objects = HotSpotReferenceMap::objects(reference_map);
   typeArrayOop bytesPerArray = HotSpotReferenceMap::bytesPerElement(reference_map);
@@ -447,8 +450,10 @@
       // Make sure a valid compile_id is associated with every compile
       id = CompileBroker::assign_compile_id_unlocked(Thread::current(), method, entry_bci);
     }
-    result = JVMCIEnv::register_method(method, nm, entry_bci, &_offsets, _custom_stack_area_offset, &buffer, stack_slots, _debug_recorder->_oopmaps, &_exception_handler_table,
-        JVMCICompiler::instance(), _debug_recorder, _dependencies, env, id, false, installed_code, compiled_code, speculation_log);
+    result = JVMCIEnv::register_method(method, nm, entry_bci, &_offsets, _custom_stack_area_offset, &buffer,
+                                       stack_slots, _debug_recorder->_oopmaps, &_exception_handler_table,
+                                       JVMCICompiler::instance(), _debug_recorder, _dependencies, env, id,
+                                       false, _has_wide_vector, installed_code, compiled_code, speculation_log);
     cb = nm;
   }
 
@@ -490,6 +495,8 @@
 #endif
 
   _next_call_type = INVOKE_INVALID;
+
+  _has_wide_vector = false;
 }
 
 int CodeInstaller::estimate_stub_entries() {