hotspot/src/share/vm/ci/ciMethodBlocks.hpp

Print this page
rev 611 : Merge

@@ -1,10 +1,10 @@
 #ifdef USE_PRAGMA_IDENT_HDR
 #pragma ident "@(#)ciMethodBlocks.hpp   1.5 07/05/05 17:05:14 JVM"
 #endif
 /*
- * Copyright 2006 Sun Microsystems, Inc.  All Rights Reserved.
+ * Copyright 2006-2008 Sun Microsystems, Inc.  All Rights Reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
  * under the terms of the GNU General Public License version 2 only, as
  * published by the Free Software Foundation.

@@ -49,10 +49,12 @@
   ciBlock *split_block_at(int bci);
   bool is_block_start(int bci);
   int num_blocks()  { return _num_blocks;}
   void clear_processed();
 
+  ciBlock *make_dummy_block(); // a block not associated with a bci
+
 #ifndef PRODUCT
   void dump();
 #endif
 };
 

@@ -82,11 +84,11 @@
 public:
   enum {
     fall_through_bci = -1
   };
 
-  ciBlock(ciMethod *method, int index, ciMethodBlocks *mb, int start_bci);
+  ciBlock(ciMethod *method, int index, int start_bci);
   int start_bci() const         { return _start_bci; }
   int limit_bci() const         { return _limit_bci; }
   int control_bci() const       { return _control_bci; }
   int index() const             { return _idx; }
   void set_start_bci(int bci)   { _start_bci = bci; }

@@ -95,11 +97,10 @@
   void set_exception_range(int start_bci, int limit_bci);
   int ex_start_bci() const      { return _ex_start_bci; }
   int ex_limit_bci() const      { return _ex_limit_bci; }
   bool contains(int bci) const { return start_bci() <= bci && bci < limit_bci(); }
 
-
   // flag handling
   bool  processed() const           { return (_flags & Processed) != 0; }
   bool  is_handler() const          { return (_flags & Handler) != 0; }
   bool  may_throw() const           { return (_flags & MayThrow) != 0; }
   bool  does_jsr() const            { return (_flags & DoesJsr) != 0; }

@@ -111,13 +112,14 @@
   void  set_handler()               { _flags |= Handler; }
   void  set_may_throw()             { _flags |= MayThrow; }
   void  set_does_jsr()              { _flags |= DoesJsr; }
   void  clear_does_jsr()            { _flags &= ~DoesJsr; }
   void  set_does_ret()              { _flags |= DoesRet; }
-  void  clear_does_ret()            { _flags |= DoesRet; }
+  void  clear_does_ret()            { _flags &= ~DoesRet; }
   void  set_is_ret_target()         { _flags |= RetTarget; }
   void  set_has_handler()           { _flags |= HasHandler; }
+  void  clear_exception_handler()   { _flags &= ~Handler; _ex_start_bci = -1; _ex_limit_bci = -1; }
 #ifndef PRODUCT
   ciMethod *method() const          { return _method; }
   void dump();
   void print_on(outputStream* st) const  PRODUCT_RETURN;
 #endif