84 if (mr2.start() >= end()) {
85 // strictly above
86 return MemRegion(start(), end());
87 }
88 if (mr2.start() >= start() && mr2.end() >= end()) {
89 // overlap ending
90 return MemRegion(start(), mr2.start());
91 }
92 if (mr2.start() <= start() && mr2.end() >= end()) {
93 // completely overlapping
94 return MemRegion();
95 }
96 if (mr2.start() > start() && mr2.end() < end()) {
97 // interior
98 guarantee(false, "MemRegion::minus, but interior");
99 return MemRegion();
100 }
101 ShouldNotReachHere();
102 return MemRegion();
103 }
|
84 if (mr2.start() >= end()) {
85 // strictly above
86 return MemRegion(start(), end());
87 }
88 if (mr2.start() >= start() && mr2.end() >= end()) {
89 // overlap ending
90 return MemRegion(start(), mr2.start());
91 }
92 if (mr2.start() <= start() && mr2.end() >= end()) {
93 // completely overlapping
94 return MemRegion();
95 }
96 if (mr2.start() > start() && mr2.end() < end()) {
97 // interior
98 guarantee(false, "MemRegion::minus, but interior");
99 return MemRegion();
100 }
101 ShouldNotReachHere();
102 return MemRegion();
103 }
104
105 MemRegion* MemRegion::create(uint length, MEMFLAGS flags) {
106 MemRegion* result = NEW_C_HEAP_ARRAY(MemRegion, length, flags);
107 for (uint i = 0; i < length; i++) {
108 ::new (&result[i]) MemRegion();
109 }
110 return result;
111 }
|