13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 #include "precompiled.hpp" 25 #include "gc/z/zPage.inline.hpp" 26 #include "gc/z/zPageTable.inline.hpp" 27 #include "runtime/orderAccess.hpp" 28 #include "utilities/debug.hpp" 29 30 ZPageTable::ZPageTable() : 31 _map() {} 32 33 ZPageTableEntry* ZPageTable::addr() const { 34 return _map.addr(); 35 } 36 37 ZPageTableEntry ZPageTable::get_entry(ZPage* page) const { 38 const uintptr_t addr = ZAddress::good(page->start()); 39 return _map.get(addr); 40 } 41 42 void ZPageTable::put_entry(ZPage* page, ZPageTableEntry entry) { 43 // Make sure a newly created page is globally visible before 44 // updating the pagetable. 45 OrderAccess::storestore(); 46 47 const uintptr_t start = ZAddress::good(page->start()); 48 const uintptr_t end = start + page->size(); 49 for (uintptr_t addr = start; addr < end; addr += ZPageSizeMin) { 50 _map.put(addr, entry); 51 } 52 } 53 54 void ZPageTable::insert(ZPage* page) { 55 assert(get_entry(page).page() == NULL || 56 get_entry(page).page() == page, "Invalid entry"); | 13 * accompanied this code). 14 * 15 * You should have received a copy of the GNU General Public License version 16 * 2 along with this work; if not, write to the Free Software Foundation, 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. 18 * 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA 20 * or visit www.oracle.com if you need additional information or have any 21 * questions. 22 */ 23 24 #include "precompiled.hpp" 25 #include "gc/z/zPage.inline.hpp" 26 #include "gc/z/zPageTable.inline.hpp" 27 #include "runtime/orderAccess.hpp" 28 #include "utilities/debug.hpp" 29 30 ZPageTable::ZPageTable() : 31 _map() {} 32 33 ZPageTableEntry ZPageTable::get_entry(ZPage* page) const { 34 const uintptr_t addr = ZAddress::good(page->start()); 35 return _map.get(addr); 36 } 37 38 void ZPageTable::put_entry(ZPage* page, ZPageTableEntry entry) { 39 // Make sure a newly created page is globally visible before 40 // updating the pagetable. 41 OrderAccess::storestore(); 42 43 const uintptr_t start = ZAddress::good(page->start()); 44 const uintptr_t end = start + page->size(); 45 for (uintptr_t addr = start; addr < end; addr += ZPageSizeMin) { 46 _map.put(addr, entry); 47 } 48 } 49 50 void ZPageTable::insert(ZPage* page) { 51 assert(get_entry(page).page() == NULL || 52 get_entry(page).page() == page, "Invalid entry"); |