annotate src/hotspot/os_cpu/linux_x86/gc/z/zGlobals_linux_x86.hpp @ 54606:fe82f635d840

Merge
author pliden
date Thu, 14 Mar 2019 10:22:59 +0100
parents ed3c6f07faab a30b9d3d067b
children 1ceee6af65da
rev   line source
duke@50132 1 /*
coleenp@53729 2 * Copyright (c) 2015, 2019, Oracle and/or its affiliates. All rights reserved.
duke@50132 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@50132 4 *
duke@50132 5 * This code is free software; you can redistribute it and/or modify it
duke@50132 6 * under the terms of the GNU General Public License version 2 only, as
duke@50132 7 * published by the Free Software Foundation.
duke@50132 8 *
duke@50132 9 * This code is distributed in the hope that it will be useful, but WITHOUT
duke@50132 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@50132 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@50132 12 * version 2 for more details (a copy is included in the LICENSE file that
duke@50132 13 * accompanied this code).
duke@50132 14 *
duke@50132 15 * You should have received a copy of the GNU General Public License version
duke@50132 16 * 2 along with this work; if not, write to the Free Software Foundation,
duke@50132 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@50132 18 *
duke@50132 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
duke@50132 20 * or visit www.oracle.com if you need additional information or have any
duke@50132 21 * questions.
duke@50132 22 */
duke@50132 23
coleenp@53729 24 #ifndef OS_CPU_LINUX_X86_GC_Z_ZGLOBALS_LINUX_X86_HPP
coleenp@53729 25 #define OS_CPU_LINUX_X86_GC_Z_ZGLOBALS_LINUX_X86_HPP
duke@50132 26
duke@50132 27 //
duke@50132 28 // Page Allocation Tiers
duke@50132 29 // ---------------------
duke@50132 30 //
duke@50132 31 // Page Type Page Size Object Size Limit Object Alignment
duke@50132 32 // ------------------------------------------------------------------
duke@50132 33 // Small 2M <= 265K <MinObjAlignmentInBytes>
duke@50132 34 // Medium 32M <= 4M 4K
duke@50132 35 // Large X*M > 4M 2M
duke@50132 36 // ------------------------------------------------------------------
duke@50132 37 //
duke@50132 38 //
duke@50132 39 // Address Space & Pointer Layout
duke@50132 40 // ------------------------------
duke@50132 41 //
duke@50132 42 // +--------------------------------+ 0x00007FFFFFFFFFFF (127TB)
duke@50132 43 // . .
duke@50132 44 // . .
duke@50132 45 // . .
duke@50132 46 // +--------------------------------+ 0x0000140000000000 (20TB)
duke@50132 47 // | Remapped View |
duke@50132 48 // +--------------------------------+ 0x0000100000000000 (16TB)
duke@50132 49 // | (Reserved, but unused) |
duke@50132 50 // +--------------------------------+ 0x00000c0000000000 (12TB)
duke@50132 51 // | Marked1 View |
duke@50132 52 // +--------------------------------+ 0x0000080000000000 (8TB)
duke@50132 53 // | Marked0 View |
duke@50132 54 // +--------------------------------+ 0x0000040000000000 (4TB)
duke@50132 55 // . .
duke@50132 56 // +--------------------------------+ 0x0000000000000000
duke@50132 57 //
duke@50132 58 //
duke@50132 59 // 6 4 4 4 4 4 0
duke@50132 60 // 3 7 6 5 2 1 0
duke@50132 61 // +-------------------+-+----+-----------------------------------------------+
duke@50132 62 // |00000000 00000000 0|0|1111|11 11111111 11111111 11111111 11111111 11111111|
duke@50132 63 // +-------------------+-+----+-----------------------------------------------+
duke@50132 64 // | | | |
duke@50132 65 // | | | * 41-0 Object Offset (42-bits, 4TB address space)
duke@50132 66 // | | |
duke@50132 67 // | | * 45-42 Metadata Bits (4-bits) 0001 = Marked0 (Address view 4-8TB)
duke@50132 68 // | | 0010 = Marked1 (Address view 8-12TB)
duke@50132 69 // | | 0100 = Remapped (Address view 16-20TB)
duke@50132 70 // | | 1000 = Finalizable (Address view N/A)
duke@50132 71 // | |
duke@50132 72 // | * 46-46 Unused (1-bit, always zero)
duke@50132 73 // |
duke@50132 74 // * 63-47 Fixed (17-bits, always zero)
duke@50132 75 //
duke@50132 76
pliden@54583 77 const size_t ZPlatformGranuleSizeShift = 21; // 2M
duke@50132 78
eosterlund@53403 79 const size_t ZPlatformAddressOffsetBits = 42; // 4TB
duke@50132 80
eosterlund@53403 81 const uintptr_t ZPlatformAddressMetadataShift = ZPlatformAddressOffsetBits;
duke@50132 82
eosterlund@53403 83 const uintptr_t ZPlatformAddressSpaceStart = (uintptr_t)1 << ZPlatformAddressOffsetBits;
eosterlund@53403 84 const uintptr_t ZPlatformAddressSpaceSize = ((uintptr_t)1 << ZPlatformAddressOffsetBits) * 4;
duke@50132 85
eosterlund@53403 86 const size_t ZPlatformNMethodDisarmedOffset = 4;
eosterlund@53403 87
eosterlund@53403 88 const size_t ZPlatformCacheLineSize = 64;
duke@50132 89
coleenp@53729 90 #endif // OS_CPU_LINUX_X86_GC_Z_ZGLOBALS_LINUX_X86_HPP