/*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*
*/
#include "precompiled.hpp"
#include "memory/memRegion.hpp"
#include "runtime/globals.hpp"
// A very simple data structure representing a contigous word-aligned
// region of address space.
}
return res;
}
// If one region is empty, return the other
// Otherwise, regions must overlap or be adjacent
"non-adjacent or overlapping regions");
return res;
}
// There seem to be 6 cases:
// |this MemRegion|
// |strictly below|
// |overlap beginning|
// |interior|
// |overlap ending|
// |strictly above|
// |completely overlapping|
// We can't deal with an interior case because it would
// produce two disjoint regions as a result.
// We aren't trying to be optimal in the number of tests below,
// but the order is important to distinguish the strictly cases
// from the overlapping cases.
// strictly below
}
// overlap beginning
}
// strictly above
}
// overlap ending
}
// completely overlapping
return MemRegion();
}
// interior
guarantee(false, "MemRegion::minus, but interior");
return MemRegion();
}
return MemRegion();
}