src/share/vm/opto/chaitin.hpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File
*** old/src/share/vm/opto/chaitin.hpp Sat Jun 2 20:04:10 2012
--- new/src/share/vm/opto/chaitin.hpp Sat Jun 2 20:04:10 2012
*** 1,7 ****
--- 1,7 ----
/*
! * Copyright (c) 1997, 2011, Oracle and/or its affiliates. All rights reserved.
! * Copyright (c) 1997, 2012, Oracle and/or its affiliates. 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.
*** 97,109 ****
--- 97,116 ----
public:
int compute_mask_size() const { return _mask.is_AllStack() ? 65535 : _mask.Size(); }
void set_mask_size( int size ) {
assert((size == 65535) || (size == (int)_mask.Size()), "");
_mask_size = size;
debug_only(_msize_valid=1;)
debug_only( if( _num_regs == 2 && !_fat_proj ) _mask.VerifyPairs(); )
+ #ifdef ASSERT
+ _msize_valid=1;
+ if (_is_vector) {
+ assert(!_fat_proj, "sanity");
+ _mask.verify_sets(_num_regs);
+ } else if (_num_regs == 2 && !_fat_proj) {
+ _mask.verify_pairs();
}
+ #endif
+ }
void compute_set_mask_size() { set_mask_size(compute_mask_size()); }
int mask_size() const { assert( _msize_valid, "mask size not valid" );
return _mask_size; }
// Get the last mask size computed, even if it does not match the
// count of bits in the current mask.
*** 114,124 ****
--- 121,132 ----
void SUBTRACT( const RegMask &rm ) { _mask.SUBTRACT(rm); debug_only(_msize_valid=0;)}
void Clear() { _mask.Clear() ; debug_only(_msize_valid=1); _mask_size = 0; }
void Set_All() { _mask.Set_All(); debug_only(_msize_valid=1); _mask_size = RegMask::CHUNK_SIZE; }
void Insert( OptoReg::Name reg ) { _mask.Insert(reg); debug_only(_msize_valid=0;) }
void Remove( OptoReg::Name reg ) { _mask.Remove(reg); debug_only(_msize_valid=0;) }
! void ClearToPairs() { _mask.ClearToPairs(); debug_only(_msize_valid=0;) }
! void clear_to_pairs() { _mask.clear_to_pairs(); debug_only(_msize_valid=0;) }
+ void clear_to_sets() { _mask.clear_to_sets(_num_regs); debug_only(_msize_valid=0;) }
// Number of registers this live range uses when it colors
private:
uint8 _num_regs; // 2 for Longs and Doubles, 1 for all else
// except _num_regs is kill count for fat_proj
*** 148,157 ****
--- 156,166 ----
// Is this live range just barely "low-degree"? Trivially colorable?
bool just_lo_degree () const { return degree() == degrees_of_freedom(); }
uint _is_oop:1, // Live-range holds an oop
_is_float:1, // True if in float registers
+ _is_vector:1, // True if in vector registers
_was_spilled1:1, // True if prior spilling on def
_was_spilled2:1, // True if twice prior spilling on def
_is_bound:1, // live range starts life with no
// degrees of freedom.
_direct_conflict:1, // True if def and use registers in conflict
src/share/vm/opto/chaitin.hpp
Index
Unified diffs
Context diffs
Sdiffs
Wdiffs
Patch
New
Old
Previous File
Next File