diff src/share/vm/code/nmethod.cpp @ 2106:91fe28b03d6a

Merge.
author Thomas Wuerthinger <wuerthinger@ssw.jku.at>
date Wed, 26 Jan 2011 18:17:37 +0100
parents 06f017f7daa7 5a1e52a439fa
children d25d4ca69222
line wrap: on
line diff
--- a/src/share/vm/code/nmethod.cpp	Sat Jan 22 17:31:11 2011 +0100
+++ b/src/share/vm/code/nmethod.cpp	Wed Jan 26 18:17:37 2011 +0100
@@ -811,11 +811,13 @@
     _stub_offset             = content_offset()      + code_buffer->total_offset_of(code_buffer->stubs());
 
     // Exception handler and deopt handler are in the stub section
+    assert(offsets->value(CodeOffsets::Exceptions) != -1, "must be set");
+    assert(offsets->value(CodeOffsets::Deopt     ) != -1, "must be set");
     if (UseC1X) {
       // c1x produces no (!) stub section
       _exception_offset        = code_offset()          + offsets->value(CodeOffsets::Exceptions);
       _deoptimize_offset       = code_offset()          + offsets->value(CodeOffsets::Deopt);
-      if (has_method_handle_invokes()) {
+      if (offsets->value(CodeOffsets::DeoptMH) != -1) {
         _deoptimize_mh_offset  = code_offset()          + offsets->value(CodeOffsets::DeoptMH);
       } else {
         _deoptimize_mh_offset  = -1;
@@ -823,7 +825,7 @@
     } else {
       _exception_offset        = _stub_offset          + offsets->value(CodeOffsets::Exceptions);
       _deoptimize_offset       = _stub_offset          + offsets->value(CodeOffsets::Deopt);
-      if (has_method_handle_invokes()) {
+      if (offsets->value(CodeOffsets::DeoptMH) != -1) {
         _deoptimize_mh_offset  = _stub_offset          + offsets->value(CodeOffsets::DeoptMH);
       } else {
         _deoptimize_mh_offset  = -1;
@@ -1926,6 +1928,7 @@
       break;
     }
   }
+  assert(has_method_handle_invokes() == (_deoptimize_mh_offset != -1), "must have deopt mh handler");
 
   int size = count * sizeof(PcDesc);
   assert(scopes_pcs_size() >= size, "oob");