aoqi@1: /* aoqi@1: * Copyright (c) 2000, 2013, Oracle and/or its affiliates. All rights reserved. aoqi@9459: * Copyright (c) 2015, 2019, Loongson Technology. All rights reserved. aoqi@1: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. aoqi@1: * aoqi@1: * This code is free software; you can redistribute it and/or modify it aoqi@1: * under the terms of the GNU General Public License version 2 only, as aoqi@1: * published by the Free Software Foundation. aoqi@1: * aoqi@1: * This code is distributed in the hope that it will be useful, but WITHOUT aoqi@1: * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or aoqi@1: * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License aoqi@1: * version 2 for more details (a copy is included in the LICENSE file that aoqi@1: * accompanied this code). aoqi@1: * aoqi@1: * You should have received a copy of the GNU General Public License version aoqi@1: * 2 along with this work; if not, write to the Free Software Foundation, aoqi@1: * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. aoqi@1: * aoqi@1: * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA aoqi@1: * or visit www.oracle.com if you need additional information or have any aoqi@1: * questions. aoqi@1: * aoqi@1: */ aoqi@1: aoqi@1: #ifndef CPU_MIPS_VM_GLOBALS_MIPS_HPP aoqi@1: #define CPU_MIPS_VM_GLOBALS_MIPS_HPP aoqi@1: aoqi@1: #include "utilities/globalDefinitions.hpp" aoqi@1: #include "utilities/macros.hpp" aoqi@1: aoqi@1: // Sets the default values for platform dependent flags used by the runtime system. aoqi@1: // (see globals.hpp) aoqi@6880: aoqi@1: #ifdef CORE aoqi@1: define_pd_global(bool, UseSSE, 0); aoqi@1: #endif /* CORE */ aoqi@1: define_pd_global(bool, ConvertSleepToYield, true); aoqi@1: define_pd_global(bool, ShareVtableStubs, true); aoqi@1: define_pd_global(bool, CountInterpCalls, true); aoqi@1: aoqi@1: define_pd_global(bool, ImplicitNullChecks, true); // Generate code for implicit null checks aoqi@1: define_pd_global(bool, TrapBasedNullChecks, false); // Not needed on x86. aoqi@1: define_pd_global(bool, UncommonNullCast, true); // Uncommon-trap NULLs passed to check cast aoqi@1: define_pd_global(bool, NeedsDeoptSuspend, false); // only register window machines need this aoqi@1: aoqi@1: // See 4827828 for this change. There is no globals_core_i486.hpp. I can't aoqi@6880: // assign a different value for C2 without touching a number of files. Use aoqi@1: // #ifdef to minimize the change as it's late in Mantis. -- FIXME. aoqi@1: // c1 doesn't have this problem because the fix to 4858033 assures us aoqi@1: // the the vep is aligned at CodeEntryAlignment whereas c2 only aligns aoqi@1: // the uep and the vep doesn't get real alignment but just slops on by aoqi@1: // only assured that the entry instruction meets the 5 byte size requirement. aoqi@6880: define_pd_global(intx, CodeEntryAlignment, 16); aoqi@1: define_pd_global(intx, OptoLoopAlignment, 16); aoqi@1: define_pd_global(intx, InlineFrequencyCount, 100); Jin@10: define_pd_global(intx, InlineSmallCode, 4000); // 2016/5/11 Jin: MIPS generates 3x instructions than X86 aoqi@1: aoqi@6880: define_pd_global(uintx, TLABSize, 0); aoqi@1: define_pd_global(uintx, NewSize, 1024 * K); aoqi@6880: define_pd_global(intx, PreInflateSpin, 10); aoqi@1: aoqi@1: define_pd_global(intx, PrefetchCopyIntervalInBytes, -1); aoqi@1: define_pd_global(intx, PrefetchScanIntervalInBytes, -1); aoqi@1: define_pd_global(intx, PrefetchFieldsAhead, -1); aoqi@1: aoqi@1: define_pd_global(intx, StackYellowPages, 2); aoqi@1: define_pd_global(intx, StackRedPages, 1); aoqi@1: define_pd_global(intx, StackShadowPages, 3 DEBUG_ONLY(+1)); aoqi@1: aoqi@1: define_pd_global(bool, RewriteBytecodes, true); aoqi@1: define_pd_global(bool, RewriteFrequentPairs, true); aoqi@1: #ifdef _ALLBSD_SOURCE aoqi@1: define_pd_global(bool, UseMembar, true); aoqi@1: #else aoqi@1: define_pd_global(bool, UseMembar, false); aoqi@1: #endif aoqi@1: // GC Ergo Flags aoqi@1: define_pd_global(intx, CMSYoungGenPerWorker, 64*M); // default max size of CMS young gen, per GC worker thread aoqi@1: aoqi@1: define_pd_global(uintx, TypeProfileLevel, 111); aoqi@1: aoqi@7994: define_pd_global(bool, PreserveFramePointer, false); aoqi@1: // Only c2 cares about this at the moment aoqi@1: define_pd_global(intx, AllocatePrefetchStyle, 2); aoqi@1: define_pd_global(intx, AllocatePrefetchDistance, -1); aoqi@1: aoqi@1: #define ARCH_FLAGS(develop, product, diagnostic, experimental, notproduct) \ aoqi@1: \ aoqi@9644: product(bool, UseLEXT1, false, \ aoqi@9644: "Use LoongISA general EXTensions 1") \ aoqi@180: \ aoqi@9644: product(bool, UseLEXT2, false, \ aoqi@9644: "Use LoongISA general EXTensions 2") \ aoqi@9644: \ aoqi@9644: product(bool, UseLEXT3, false, \ aoqi@9644: "Use LoongISA general EXTensions 3") \ aoqi@180: \ fujie@389: product(bool, UseCodeCacheAllocOpt, true, \ fujie@389: "Allocate code cache within 32-bit memory address space") \ fujie@389: \ aoqi@9808: product(intx, UseSyncLevel, 10000, \ fujie@336: "The sync level on Loongson CPUs" \ aoqi@9808: "UseSyncLevel == 10000, 111, for all Loongson CPUs, " \ aoqi@9808: "UseSyncLevel == 4000, 101, maybe for GS464V" \ aoqi@9808: "UseSyncLevel == 3000, 001, maybe for GS464V" \ aoqi@9808: "UseSyncLevel == 2000, 011, maybe for GS464E/GS264" \ aoqi@9808: "UseSyncLevel == 1000, 110, maybe for GS464") \ fujie@336: \ jiangshaofeng@362: develop(bool, UseBoundCheckInstruction, false, \ jiangshaofeng@362: "Use bound check instruction") \ jiangshaofeng@362: \ aoqi@179: product(intx, SetFSFOFN, 999, \ aoqi@179: "Set the FS/FO/FN bits in FCSR" \ aoqi@179: "999 means FS/FO/FN will not be changed" \ aoqi@179: "=XYZ, with X:FS, Y:FO, Z:FN, X, Y and Z in 0=off, 1=on") \ aoqi@179: \ aoqi@1: /* assembler */ \ huangxuguang@9155: product(bool, UseCountLeadingZerosInstructionMIPS64, true, \ aoqi@1: "Use count leading zeros instruction") \ aoqi@1: \ huangxuguang@9155: product(bool, UseCountTrailingZerosInstructionMIPS64, false, \ huangxuguang@9156: "Use count trailing zeros instruction") aoqi@1: aoqi@1: #endif // CPU_MIPS_VM_GLOBALS_MIPS_HPP