src/cpu/sparc/vm/vmreg_sparc.cpp

Wed, 15 May 2013 11:05:09 +0200

author
tschatzl
date
Wed, 15 May 2013 11:05:09 +0200
changeset 5119
12f651e29f6b
parent 4323
f0c2369fda5a
child 6876
710a3c8b516e
permissions
-rw-r--r--

6843347: Boundary values in some public GC options cause crashes
Summary: Setting some public integer options to specific values causes crashes or undefined GC behavior. This patchset adds the necessary argument checking for these options.
Reviewed-by: jmasa, brutisso

duke@435 1 /*
stefank@2314 2 * Copyright (c) 2006, 2010, Oracle and/or its affiliates. All rights reserved.
duke@435 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
duke@435 4 *
duke@435 5 * This code is free software; you can redistribute it and/or modify it
duke@435 6 * under the terms of the GNU General Public License version 2 only, as
duke@435 7 * published by the Free Software Foundation.
duke@435 8 *
duke@435 9 * This code is distributed in the hope that it will be useful, but WITHOUT
duke@435 10 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
duke@435 11 * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
duke@435 12 * version 2 for more details (a copy is included in the LICENSE file that
duke@435 13 * accompanied this code).
duke@435 14 *
duke@435 15 * You should have received a copy of the GNU General Public License version
duke@435 16 * 2 along with this work; if not, write to the Free Software Foundation,
duke@435 17 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
duke@435 18 *
trims@1907 19 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
trims@1907 20 * or visit www.oracle.com if you need additional information or have any
trims@1907 21 * questions.
duke@435 22 *
duke@435 23 */
duke@435 24
stefank@2314 25 #include "precompiled.hpp"
stefank@2314 26 #include "code/vmreg.hpp"
duke@435 27
duke@435 28
duke@435 29
duke@435 30 void VMRegImpl::set_regName() {
duke@435 31 Register reg = ::as_Register(0);
duke@435 32 int i;
duke@435 33 for (i = 0; i < ConcreteRegisterImpl::max_gpr ; ) {
duke@435 34 regName[i++ ] = reg->name();
duke@435 35 regName[i++ ] = reg->name();
duke@435 36 reg = reg->successor();
duke@435 37 }
duke@435 38
duke@435 39 FloatRegister freg = ::as_FloatRegister(0);
duke@435 40 for ( ; i < ConcreteRegisterImpl::max_fpr ; ) {
duke@435 41 regName[i++] = freg->name();
duke@435 42 if (freg->encoding() > 31) {
duke@435 43 regName[i++] = freg->name();
duke@435 44 }
duke@435 45 freg = freg->successor();
duke@435 46 }
duke@435 47
duke@435 48 for ( ; i < ConcreteRegisterImpl::number_of_registers ; i ++ ) {
duke@435 49 regName[i] = "NON-GPR-FPR";
duke@435 50 }
duke@435 51 }

mercurial