< prev index next >

src/share/vm/compiler/oopMap.hpp

Print this page
rev 9088 : 8139040: Fix initializations before ShouldNotReachHere() etc. and enable -Wuninitialized on linux.
Reviewed-by: stuefe, coleenp


  56   enum { type_bits                = 4,
  57          register_bits            = BitsPerShort - type_bits };
  58 
  59   enum { type_shift               = 0,
  60          register_shift           = type_bits };
  61 
  62   enum { type_mask                = right_n_bits(type_bits),
  63          type_mask_in_place       = type_mask << type_shift,
  64          register_mask            = right_n_bits(register_bits),
  65          register_mask_in_place   = register_mask << register_shift };
  66 
  67   enum oop_types {              // must fit in type_bits
  68          unused_value =0,       // powers of 2, for masking OopMapStream
  69          oop_value = 1,
  70          narrowoop_value = 2,
  71          callee_saved_value = 4,
  72          derived_oop_value= 8 };
  73 
  74   // Constructors
  75   OopMapValue () { set_value(0); set_content_reg(VMRegImpl::Bad()); }
  76   OopMapValue (VMReg reg, oop_types t) { set_reg_type(reg,t); }
  77   OopMapValue (VMReg reg, oop_types t, VMReg reg2) { set_reg_type(reg,t); set_content_reg(reg2); }
  78   OopMapValue (CompressedReadStream* stream) { read_from(stream); }
  79 
  80   // Archiving
  81   void write_on(CompressedWriteStream* stream) {
  82     stream->write_int(value());
  83     if(is_callee_saved() || is_derived_oop()) {
  84       stream->write_int(content_reg()->value());
  85     }
  86   }
  87 
  88   void read_from(CompressedReadStream* stream) {
  89     set_value(stream->read_int());
  90     if(is_callee_saved() || is_derived_oop()) {
  91       set_content_reg(VMRegImpl::as_VMReg(stream->read_int(), true));
  92     }
  93   }
  94 
  95   // Querying
  96   bool is_oop()               { return mask_bits(value(), type_mask_in_place) == oop_value; }
  97   bool is_narrowoop()           { return mask_bits(value(), type_mask_in_place) == narrowoop_value; }
  98   bool is_callee_saved()      { return mask_bits(value(), type_mask_in_place) == callee_saved_value; }
  99   bool is_derived_oop()       { return mask_bits(value(), type_mask_in_place) == derived_oop_value; }
 100 
 101   void set_oop()              { set_value((value() & register_mask_in_place) | oop_value); }
 102   void set_narrowoop()          { set_value((value() & register_mask_in_place) | narrowoop_value); }
 103   void set_callee_saved()     { set_value((value() & register_mask_in_place) | callee_saved_value); }
 104   void set_derived_oop()      { set_value((value() & register_mask_in_place) | derived_oop_value); }
 105 
 106   VMReg reg() const { return VMRegImpl::as_VMReg(mask_bits(value(), register_mask_in_place) >> register_shift); }
 107   oop_types type() const      { return (oop_types)mask_bits(value(), type_mask_in_place); }
 108 
 109   static bool legal_vm_reg_name(VMReg p) {
 110     return (p->value()  == (p->value() & register_mask));




  56   enum { type_bits                = 4,
  57          register_bits            = BitsPerShort - type_bits };
  58 
  59   enum { type_shift               = 0,
  60          register_shift           = type_bits };
  61 
  62   enum { type_mask                = right_n_bits(type_bits),
  63          type_mask_in_place       = type_mask << type_shift,
  64          register_mask            = right_n_bits(register_bits),
  65          register_mask_in_place   = register_mask << register_shift };
  66 
  67   enum oop_types {              // must fit in type_bits
  68          unused_value =0,       // powers of 2, for masking OopMapStream
  69          oop_value = 1,
  70          narrowoop_value = 2,
  71          callee_saved_value = 4,
  72          derived_oop_value= 8 };
  73 
  74   // Constructors
  75   OopMapValue () { set_value(0); set_content_reg(VMRegImpl::Bad()); }
  76   OopMapValue (VMReg reg, oop_types t) { set_reg_type(reg, t); set_content_reg(VMRegImpl::Bad()); }
  77   OopMapValue (VMReg reg, oop_types t, VMReg reg2) { set_reg_type(reg, t); set_content_reg(reg2); }
  78   OopMapValue (CompressedReadStream* stream) { read_from(stream); }
  79 
  80   // Archiving
  81   void write_on(CompressedWriteStream* stream) {
  82     stream->write_int(value());
  83     if(is_callee_saved() || is_derived_oop()) {
  84       stream->write_int(content_reg()->value());
  85     }
  86   }
  87 
  88   void read_from(CompressedReadStream* stream) {
  89     set_value(stream->read_int());
  90     if (is_callee_saved() || is_derived_oop()) {
  91       set_content_reg(VMRegImpl::as_VMReg(stream->read_int(), true));
  92     }
  93   }
  94 
  95   // Querying
  96   bool is_oop()               { return mask_bits(value(), type_mask_in_place) == oop_value; }
  97   bool is_narrowoop()           { return mask_bits(value(), type_mask_in_place) == narrowoop_value; }
  98   bool is_callee_saved()      { return mask_bits(value(), type_mask_in_place) == callee_saved_value; }
  99   bool is_derived_oop()       { return mask_bits(value(), type_mask_in_place) == derived_oop_value; }
 100 
 101   void set_oop()              { set_value((value() & register_mask_in_place) | oop_value); }
 102   void set_narrowoop()          { set_value((value() & register_mask_in_place) | narrowoop_value); }
 103   void set_callee_saved()     { set_value((value() & register_mask_in_place) | callee_saved_value); }
 104   void set_derived_oop()      { set_value((value() & register_mask_in_place) | derived_oop_value); }
 105 
 106   VMReg reg() const { return VMRegImpl::as_VMReg(mask_bits(value(), register_mask_in_place) >> register_shift); }
 107   oop_types type() const      { return (oop_types)mask_bits(value(), type_mask_in_place); }
 108 
 109   static bool legal_vm_reg_name(VMReg p) {
 110     return (p->value()  == (p->value() & register_mask));


< prev index next >