mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-15 08:34:30 +02:00
8140650: Method::is_accessor should cover getters and setters for all types
Reviewed-by: vlivanov, coleenp, sgehwolf
This commit is contained in:
parent
6ed8c23581
commit
ac09d8a135
8 changed files with 196 additions and 6 deletions
141
hotspot/test/compiler/inlining/InlineAccessors.java
Normal file
141
hotspot/test/compiler/inlining/InlineAccessors.java
Normal file
|
@ -0,0 +1,141 @@
|
|||
/*
|
||||
* Copyright (c) 2015, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License version 2 only, as
|
||||
* published by the Free Software Foundation.
|
||||
*
|
||||
* This code is distributed in the hope that it will be useful, but WITHOUT
|
||||
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
|
||||
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
|
||||
* version 2 for more details (a copy is included in the LICENSE file that
|
||||
* accompanied this code).
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License version
|
||||
* 2 along with this work; if not, write to the Free Software Foundation,
|
||||
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
|
||||
*
|
||||
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
|
||||
* or visit www.oracle.com if you need additional information or have any
|
||||
* questions.
|
||||
*
|
||||
*/
|
||||
/**
|
||||
* @test
|
||||
* @bug 8140650
|
||||
* @summary Method::is_accessor should cover getters and setters for all types
|
||||
* @library /testlibrary
|
||||
* @run main/othervm InlineAccessors
|
||||
*/
|
||||
import java.lang.invoke.*;
|
||||
import jdk.test.lib.*;
|
||||
import static jdk.test.lib.Asserts.*;
|
||||
|
||||
public class InlineAccessors {
|
||||
public static void main(String[] args) throws Exception {
|
||||
// try some sanity checks first
|
||||
doTest();
|
||||
|
||||
ProcessBuilder pb = ProcessTools.createJavaProcessBuilder(
|
||||
"-XX:+IgnoreUnrecognizedVMOptions", "-showversion",
|
||||
"-server", "-XX:-TieredCompilation", "-Xbatch", "-Xcomp",
|
||||
"-XX:+PrintCompilation", "-XX:+UnlockDiagnosticVMOptions", "-XX:+PrintInlining",
|
||||
"InlineAccessors$Launcher");
|
||||
|
||||
OutputAnalyzer analyzer = new OutputAnalyzer(pb.start());
|
||||
|
||||
analyzer.shouldHaveExitValue(0);
|
||||
|
||||
// The test is applicable only to C2 (present in Server VM).
|
||||
if (analyzer.getStderr().contains("Server VM")) {
|
||||
analyzer.shouldContain("InlineAccessors::setBool (6 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::setByte (6 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::setChar (6 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::setShort (6 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::setInt (6 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::setFloat (6 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::setLong (6 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::setDouble (6 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::setObject (6 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::setArray (6 bytes) accessor");
|
||||
|
||||
analyzer.shouldContain("InlineAccessors::getBool (5 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::getByte (5 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::getChar (5 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::getShort (5 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::getInt (5 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::getFloat (5 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::getLong (5 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::getDouble (5 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::getObject (5 bytes) accessor");
|
||||
analyzer.shouldContain("InlineAccessors::getArray (5 bytes) accessor");
|
||||
}
|
||||
}
|
||||
|
||||
boolean bool;
|
||||
byte b;
|
||||
char c;
|
||||
short s;
|
||||
int i;
|
||||
float f;
|
||||
long l;
|
||||
double d;
|
||||
Object o;
|
||||
Object[] a;
|
||||
|
||||
public void setBool(boolean v) { bool = v; }
|
||||
public void setByte(byte v) { b = v; }
|
||||
public void setChar(char v) { c = v; }
|
||||
public void setShort(short v) { s = v; }
|
||||
public void setInt(int v) { i = v; }
|
||||
public void setFloat(float v) { f = v; }
|
||||
public void setLong(long v) { l = v; }
|
||||
public void setDouble(double v) { d = v; }
|
||||
public void setObject(Object v) { o = v; }
|
||||
public void setArray(Object[] v) { a = v; }
|
||||
|
||||
public boolean getBool() { return bool; }
|
||||
public byte getByte() { return b; }
|
||||
public char getChar() { return c; }
|
||||
public short getShort() { return s; }
|
||||
public int getInt() { return i; }
|
||||
public float getFloat() { return f; }
|
||||
public long getLong() { return l; }
|
||||
public double getDouble() { return d; }
|
||||
public Object getObject() { return o; }
|
||||
public Object[] getArray() { return a; }
|
||||
|
||||
static void doTest() {
|
||||
InlineAccessors o = new InlineAccessors();
|
||||
o.setBool(false);
|
||||
o.setByte((byte)0);
|
||||
o.setChar('a');
|
||||
o.setShort((short)0);
|
||||
o.setInt(0);
|
||||
o.setFloat(0F);
|
||||
o.setLong(0L);
|
||||
o.setDouble(0D);
|
||||
o.setObject(new Object());
|
||||
o.setArray(new Object[1]);
|
||||
|
||||
o.getBool();
|
||||
o.getByte();
|
||||
o.getChar();
|
||||
o.getShort();
|
||||
o.getInt();
|
||||
o.getFloat();
|
||||
o.getLong();
|
||||
o.getDouble();
|
||||
o.getObject();
|
||||
o.getArray();
|
||||
}
|
||||
|
||||
static class Launcher {
|
||||
public static void main(String[] args) throws Exception {
|
||||
for (int c = 0; c < 20_000; c++) {
|
||||
doTest();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue