hotspot/src/share/vm/asm/assembler.hpp
changeset 14624 8f5ec8cfe196
parent 13963 e5b53c306fb5
child 14625 b02f361c324e
--- a/hotspot/src/share/vm/asm/assembler.hpp	Tue Nov 27 17:24:15 2012 -0800
+++ b/hotspot/src/share/vm/asm/assembler.hpp	Tue Nov 27 17:41:38 2012 -0800
@@ -348,52 +348,60 @@
   void       end_a_stub();
   // Ditto for constants.
   address    start_a_const(int required_space, int required_align = sizeof(double));
-  void       end_a_const();
+  void       end_a_const(CodeSection* cs);  // Pass the codesection to continue in (insts or stubs?).
 
   // constants support
+  //
+  // We must remember the code section (insts or stubs) in c1
+  // so we can reset to the proper section in end_a_const().
   address long_constant(jlong c) {
+    CodeSection* c1 = _code_section;
     address ptr = start_a_const(sizeof(c), sizeof(c));
     if (ptr != NULL) {
       *(jlong*)ptr = c;
       _code_pos = ptr + sizeof(c);
-      end_a_const();
+      end_a_const(c1);
     }
     return ptr;
   }
   address double_constant(jdouble c) {
+    CodeSection* c1 = _code_section;
     address ptr = start_a_const(sizeof(c), sizeof(c));
     if (ptr != NULL) {
       *(jdouble*)ptr = c;
       _code_pos = ptr + sizeof(c);
-      end_a_const();
+      end_a_const(c1);
     }
     return ptr;
   }
   address float_constant(jfloat c) {
+    CodeSection* c1 = _code_section;
     address ptr = start_a_const(sizeof(c), sizeof(c));
     if (ptr != NULL) {
       *(jfloat*)ptr = c;
       _code_pos = ptr + sizeof(c);
-      end_a_const();
+      end_a_const(c1);
     }
     return ptr;
   }
   address address_constant(address c) {
+    CodeSection* c1 = _code_section;
     address ptr = start_a_const(sizeof(c), sizeof(c));
     if (ptr != NULL) {
       *(address*)ptr = c;
       _code_pos = ptr + sizeof(c);
-      end_a_const();
+      end_a_const(c1);
     }
     return ptr;
   }
   address address_constant(address c, RelocationHolder const& rspec) {
+    CodeSection* c1 = _code_section;
     address ptr = start_a_const(sizeof(c), sizeof(c));
     if (ptr != NULL) {
       relocate(rspec);
       *(address*)ptr = c;
       _code_pos = ptr + sizeof(c);
-      end_a_const();
+      end_a_const(c1);
     }
     return ptr;
   }