Main Page   Class Hierarchy   Compound List   File List   Header Files   Compound Members   File Members  

nlrSupport.h

This is the verbatim text of the nlrSupport.h include file.
/* Sun-$Revision: 23.3 $ */

/* Copyright 1992-9 Sun Microsystems, Inc. and Stanford University.
   See the LICENSE file for license information. */

# pragma interface


class NLRSupport /* AllStatic */ {
 private:
  // When the compiled code for an NLR
  static bool _have_NLR_through_C;            // set before Self returns to C
  
 public:
  static bool       have_NLR_through_C() { return _have_NLR_through_C; }
  static void reset_have_NLR_through_C() { _have_NLR_through_C = false; }
  static void   set_have_NLR_through_C() { _have_NLR_through_C = true;  }

  // accessors for NLR vars above:
  static oop    NLR_result_from_C();
  static int32  NLR_home_from_C();
  static int32  NLR_home_ID_from_C();
  
  static void   set_NLR_result_from_C(oop x);
  static void   set_NLR_home_from_C(int32 x);
  static void   set_NLR_home_ID_from_C(int32 x);
  
  
  // for non-local returns coming from C
  static void volatile continue_NLR_into_Self(bool removePatches);
                                                   // to continue the NLR after C cleanup

  static void save_NLR_results(oop res, int32 targetFrame = 0, int32 targetID = 0);

  static bool is_bad_home_reference(char* addr);
  
  static void volatile unwind_stack_to_kill_process(oop res);
  
  // Handling nonlifo block NLRs from compiled code  
# if defined(FAST_COMPILER) || defined(SIC_COMPILER)
  static void non_lifo_abort_from_continuePC();
  static void non_lifo_abort(pc_t contPC);
 private:
  static void fix_current_return_address(char* addr);
# endif

 public:

  
 private:
  static volatile void continue_NLR_into_interpreted_Self();
  static volatile void continue_NLR_from_compiled_nonLIFO_block(frame* vmf);
  static volatile void continue_NLR_into_compiled_Self(bool remove_patches, frame* vmf);
};

Generated at Tue Jun 27 12:08:25 2000 for SelfVM by doxygen 1.0.0 written by Dimitri van Heesch, © 1997-1999