Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
LinuxSuRen
Dragonwell11
提交
da3aa407
D
Dragonwell11
项目概览
LinuxSuRen
/
Dragonwell11
通知
2
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
Dragonwell11
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
da3aa407
编写于
9月 04, 2017
作者:
D
duke
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
e375fea9
3c7a9e97
变更
20
隐藏空白更改
内联
并排
Showing
20 changed file
with
452 addition
and
378 deletion
+452
-378
.hgtags-top-repo
.hgtags-top-repo
+1
-0
common/autoconf/flags.m4
common/autoconf/flags.m4
+2
-2
common/autoconf/generated-configure.sh
common/autoconf/generated-configure.sh
+113
-5
common/autoconf/platform.m4
common/autoconf/platform.m4
+54
-0
common/conf/jib-profiles.js
common/conf/jib-profiles.js
+1
-1
test/lib/jdk/test/lib/hprof/model/HackJavaValue.java
test/lib/jdk/test/lib/hprof/model/HackJavaValue.java
+5
-4
test/lib/jdk/test/lib/hprof/model/JavaClass.java
test/lib/jdk/test/lib/hprof/model/JavaClass.java
+3
-2
test/lib/jdk/test/lib/hprof/model/JavaHeapObject.java
test/lib/jdk/test/lib/hprof/model/JavaHeapObject.java
+2
-2
test/lib/jdk/test/lib/hprof/model/JavaLazyReadObject.java
test/lib/jdk/test/lib/hprof/model/JavaLazyReadObject.java
+39
-47
test/lib/jdk/test/lib/hprof/model/JavaObject.java
test/lib/jdk/test/lib/hprof/model/JavaObject.java
+81
-82
test/lib/jdk/test/lib/hprof/model/JavaObjectArray.java
test/lib/jdk/test/lib/hprof/model/JavaObjectArray.java
+27
-34
test/lib/jdk/test/lib/hprof/model/JavaObjectRef.java
test/lib/jdk/test/lib/hprof/model/JavaObjectRef.java
+3
-2
test/lib/jdk/test/lib/hprof/model/JavaThing.java
test/lib/jdk/test/lib/hprof/model/JavaThing.java
+2
-2
test/lib/jdk/test/lib/hprof/model/JavaValue.java
test/lib/jdk/test/lib/hprof/model/JavaValue.java
+3
-2
test/lib/jdk/test/lib/hprof/model/JavaValueArray.java
test/lib/jdk/test/lib/hprof/model/JavaValueArray.java
+98
-177
test/lib/jdk/test/lib/hprof/model/ReachableObjects.java
test/lib/jdk/test/lib/hprof/model/ReachableObjects.java
+3
-3
test/lib/jdk/test/lib/hprof/model/Snapshot.java
test/lib/jdk/test/lib/hprof/model/Snapshot.java
+2
-2
test/lib/jdk/test/lib/hprof/parser/FileReadBuffer.java
test/lib/jdk/test/lib/hprof/parser/FileReadBuffer.java
+6
-1
test/lib/jdk/test/lib/hprof/parser/MappedReadBuffer.java
test/lib/jdk/test/lib/hprof/parser/MappedReadBuffer.java
+6
-6
test/lib/jdk/test/lib/hprof/parser/ReadBuffer.java
test/lib/jdk/test/lib/hprof/parser/ReadBuffer.java
+1
-4
未找到文件。
.hgtags-top-repo
浏览文件 @
da3aa407
...
...
@@ -445,3 +445,4 @@ b803e6cff41e72a1e6d8782e1ef7c25a6e3e5ee3 jdk-10+19
d2982a786f53814367698e63efe6349c9128e1db jdk-9+180
b656dea9398ef601f7fc08d1a5157a560e0ccbe0 jdk-9+181
682e2a6df836f4731f92eb2ddcd467075047f6ea jdk-10+20
90cdfe56f1543267a8005e638bd1b44551fda189 jdk-10+21
common/autoconf/flags.m4
浏览文件 @
da3aa407
...
...
@@ -1046,7 +1046,7 @@ AC_DEFUN([FLAGS_SETUP_COMPILER_FLAGS_FOR_JDK_HELPER],
# Set some additional per-CPU defines.
if test "x$OPENJDK_$1_OS-$OPENJDK_$1_CPU" = xwindows-x86; then
$2JVM_CFLAGS="[$]$2JVM_CFLAGS -arch:IA32"
elif test "x$OPENJDK_$1_
CPU" = x
sparcv9; then
elif test "x$OPENJDK_$1_
OS-$OPENJDK_$1_CPU" = xsolaris-
sparcv9; then
$2JVM_CFLAGS="[$]$2JVM_CFLAGS -xarch=sparc"
elif test "x$OPENJDK_$1_CPU" = xppc64; then
if test "x$OPENJDK_$1_OS" = xlinux; then
...
...
@@ -1358,7 +1358,7 @@ $2LDFLAGS_JDKLIB="${$2LDFLAGS_JDKLIB} ${$2JAVA_BASE_LDFLAGS}"
$2SOLARIS_LIBM_LIBS="/usr/lib/sparcv9/libm.so.1"
fi
$2JVM_LIBS="[$]$2JVM_LIBS -lsocket -lsched -ldl $SOLARIS_LIBM_LIBS -lCrun \
-lthread -ldoor -lc -ldemangle -lnsl -l
kstat -l
rt"
-lthread -ldoor -lc -ldemangle -lnsl -lrt"
elif test "x$OPENJDK_$1_OS" = xmacosx; then
$2JVM_LIBS="[$]$2JVM_LIBS -lm"
elif test "x$OPENJDK_$1_OS" = xaix; then
...
...
common/autoconf/generated-configure.sh
浏览文件 @
da3aa407
...
...
@@ -5151,7 +5151,7 @@ VS_SDK_PLATFORM_NAME_2013=
#CUSTOM_AUTOCONF_INCLUDE
# Do not change or remove the following line, it is needed for consistency checks:
DATE_WHEN_GENERATED=150
341162
4
DATE_WHEN_GENERATED=150
418718
4
###############################################################################
#
...
...
@@ -15719,6 +15719,12 @@ test -n "$target_alias" &&
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=little
;;
alpha*)
VAR_CPU=alpha
VAR_CPU_ARCH=alpha
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=little
;;
arm*)
VAR_CPU=arm
VAR_CPU_ARCH=arm
...
...
@@ -15731,6 +15737,36 @@ test -n "$target_alias" &&
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=little
;;
m68k)
VAR_CPU=m68k
VAR_CPU_ARCH=m68k
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=big
;;
mips)
VAR_CPU=mips
VAR_CPU_ARCH=mips
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=big
;;
mipsel)
VAR_CPU=mipsel
VAR_CPU_ARCH=mipsel
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=little
;;
mips64)
VAR_CPU=mips64
VAR_CPU_ARCH=mips64
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=big
;;
mips64el)
VAR_CPU=mips64el
VAR_CPU_ARCH=mips64el
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=little
;;
powerpc)
VAR_CPU=ppc
VAR_CPU_ARCH=ppc
...
...
@@ -15761,6 +15797,18 @@ test -n "$target_alias" &&
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=big
;;
sh*eb)
VAR_CPU=sh
VAR_CPU_ARCH=sh
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=big
;;
sh*)
VAR_CPU=sh
VAR_CPU_ARCH=sh
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=little
;;
sparc)
VAR_CPU=sparc
VAR_CPU_ARCH=sparc
...
...
@@ -15858,6 +15906,12 @@ $as_echo "$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU" >&6; }
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=little
;;
alpha*)
VAR_CPU=alpha
VAR_CPU_ARCH=alpha
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=little
;;
arm*)
VAR_CPU=arm
VAR_CPU_ARCH=arm
...
...
@@ -15870,6 +15924,36 @@ $as_echo "$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU" >&6; }
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=little
;;
m68k)
VAR_CPU=m68k
VAR_CPU_ARCH=m68k
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=big
;;
mips)
VAR_CPU=mips
VAR_CPU_ARCH=mips
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=big
;;
mipsel)
VAR_CPU=mipsel
VAR_CPU_ARCH=mipsel
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=little
;;
mips64)
VAR_CPU=mips64
VAR_CPU_ARCH=mips64
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=big
;;
mips64el)
VAR_CPU=mips64el
VAR_CPU_ARCH=mips64el
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=little
;;
powerpc)
VAR_CPU=ppc
VAR_CPU_ARCH=ppc
...
...
@@ -15900,6 +15984,18 @@ $as_echo "$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU" >&6; }
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=big
;;
sh*eb)
VAR_CPU=sh
VAR_CPU_ARCH=sh
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=big
;;
sh*)
VAR_CPU=sh
VAR_CPU_ARCH=sh
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=little
;;
sparc)
VAR_CPU=sparc
VAR_CPU_ARCH=sparc
...
...
@@ -16045,6 +16141,12 @@ $as_echo "$COMPILE_TYPE" >&6; }
elif test "x$OPENJDK_TARGET_OS" != xmacosx && test "x$OPENJDK_TARGET_CPU" = xx86_64; then
# On all platforms except MacOSX replace x86_64 with amd64.
OPENJDK_TARGET_CPU_LEGACY="amd64"
elif test "x$OPENJDK_TARGET_CPU" = xalpha; then
# Avoid name collisions with variables named alpha
OPENJDK_TARGET_CPU_LEGACY="_alpha_"
elif test "x$OPENJDK_TARGET_CPU" = xsh; then
# Avoid name collisions with variables named sh
OPENJDK_TARGET_CPU_LEGACY="_sh_"
fi
...
...
@@ -16197,6 +16299,12 @@ $as_echo "$COMPILE_TYPE" >&6; }
elif test "x$OPENJDK_BUILD_OS" != xmacosx && test "x$OPENJDK_BUILD_CPU" = xx86_64; then
# On all platforms except MacOSX replace x86_64 with amd64.
OPENJDK_BUILD_CPU_LEGACY="amd64"
elif test "x$OPENJDK_BUILD_CPU" = xalpha; then
# Avoid name collisions with variables named alpha
OPENJDK_BUILD_CPU_LEGACY="_alpha_"
elif test "x$OPENJDK_BUILD_CPU" = xsh; then
# Avoid name collisions with variables named sh
OPENJDK_BUILD_CPU_LEGACY="_sh_"
fi
...
...
@@ -51563,7 +51671,7 @@ $as_echo "$as_me: GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLA
# Set some additional per-CPU defines.
if test "x$OPENJDK_TARGET_OS-$OPENJDK_TARGET_CPU" = xwindows-x86; then
JVM_CFLAGS="$JVM_CFLAGS -arch:IA32"
elif test "x$OPENJDK_TARGET_
CPU" = x
sparcv9; then
elif test "x$OPENJDK_TARGET_
OS-$OPENJDK_TARGET_CPU" = xsolaris-
sparcv9; then
JVM_CFLAGS="$JVM_CFLAGS -xarch=sparc"
elif test "x$OPENJDK_TARGET_CPU" = xppc64; then
if test "x$OPENJDK_TARGET_OS" = xlinux; then
...
...
@@ -51968,7 +52076,7 @@ LDFLAGS_JDKLIB="${LDFLAGS_JDKLIB} ${JAVA_BASE_LDFLAGS}"
SOLARIS_LIBM_LIBS="/usr/lib/sparcv9/libm.so.1"
fi
JVM_LIBS="$JVM_LIBS -lsocket -lsched -ldl $SOLARIS_LIBM_LIBS -lCrun \
-lthread -ldoor -lc -ldemangle -lnsl -l
kstat -l
rt"
-lthread -ldoor -lc -ldemangle -lnsl -lrt"
elif test "x$OPENJDK_TARGET_OS" = xmacosx; then
JVM_LIBS="$JVM_LIBS -lm"
elif test "x$OPENJDK_TARGET_OS" = xaix; then
...
...
@@ -52442,7 +52550,7 @@ $as_echo "$as_me: GCC >= 6 detected; adding ${NO_DELETE_NULL_POINTER_CHECKS_CFLA
# Set some additional per-CPU defines.
if test "x$OPENJDK_BUILD_OS-$OPENJDK_BUILD_CPU" = xwindows-x86; then
OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -arch:IA32"
elif test "x$OPENJDK_BUILD_
CPU" = x
sparcv9; then
elif test "x$OPENJDK_BUILD_
OS-$OPENJDK_BUILD_CPU" = xsolaris-
sparcv9; then
OPENJDK_BUILD_JVM_CFLAGS="$OPENJDK_BUILD_JVM_CFLAGS -xarch=sparc"
elif test "x$OPENJDK_BUILD_CPU" = xppc64; then
if test "x$OPENJDK_BUILD_OS" = xlinux; then
...
...
@@ -52847,7 +52955,7 @@ OPENJDK_BUILD_LDFLAGS_JDKLIB="${OPENJDK_BUILD_LDFLAGS_JDKLIB} ${OPENJDK_BUILD_JA
OPENJDK_BUILD_SOLARIS_LIBM_LIBS="/usr/lib/sparcv9/libm.so.1"
fi
OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS -lsocket -lsched -ldl $SOLARIS_LIBM_LIBS -lCrun \
-lthread -ldoor -lc -ldemangle -lnsl -l
kstat -l
rt"
-lthread -ldoor -lc -ldemangle -lnsl -lrt"
elif test "x$OPENJDK_BUILD_OS" = xmacosx; then
OPENJDK_BUILD_JVM_LIBS="$OPENJDK_BUILD_JVM_LIBS -lm"
elif test "x$OPENJDK_BUILD_OS" = xaix; then
common/autoconf/platform.m4
浏览文件 @
da3aa407
...
...
@@ -42,6 +42,12 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU],
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=little
;;
alpha*)
VAR_CPU=alpha
VAR_CPU_ARCH=alpha
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=little
;;
arm*)
VAR_CPU=arm
VAR_CPU_ARCH=arm
...
...
@@ -54,6 +60,36 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU],
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=little
;;
m68k)
VAR_CPU=m68k
VAR_CPU_ARCH=m68k
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=big
;;
mips)
VAR_CPU=mips
VAR_CPU_ARCH=mips
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=big
;;
mipsel)
VAR_CPU=mipsel
VAR_CPU_ARCH=mipsel
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=little
;;
mips64)
VAR_CPU=mips64
VAR_CPU_ARCH=mips64
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=big
;;
mips64el)
VAR_CPU=mips64el
VAR_CPU_ARCH=mips64el
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=little
;;
powerpc)
VAR_CPU=ppc
VAR_CPU_ARCH=ppc
...
...
@@ -84,6 +120,18 @@ AC_DEFUN([PLATFORM_EXTRACT_VARS_FROM_CPU],
VAR_CPU_BITS=64
VAR_CPU_ENDIAN=big
;;
sh*eb)
VAR_CPU=sh
VAR_CPU_ARCH=sh
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=big
;;
sh*)
VAR_CPU=sh
VAR_CPU_ARCH=sh
VAR_CPU_BITS=32
VAR_CPU_ENDIAN=little
;;
sparc)
VAR_CPU=sparc
VAR_CPU_ARCH=sparc
...
...
@@ -289,6 +337,12 @@ AC_DEFUN([PLATFORM_SETUP_LEGACY_VARS_HELPER],
elif test "x$OPENJDK_$1_OS" != xmacosx && test "x$OPENJDK_$1_CPU" = xx86_64; then
# On all platforms except MacOSX replace x86_64 with amd64.
OPENJDK_$1_CPU_LEGACY="amd64"
elif test "x$OPENJDK_$1_CPU" = xalpha; then
# Avoid name collisions with variables named alpha
OPENJDK_$1_CPU_LEGACY="_alpha_"
elif test "x$OPENJDK_$1_CPU" = xsh; then
# Avoid name collisions with variables named sh
OPENJDK_$1_CPU_LEGACY="_sh_"
fi
AC_SUBST(OPENJDK_$1_CPU_LEGACY)
...
...
common/conf/jib-profiles.js
浏览文件 @
da3aa407
...
...
@@ -200,7 +200,7 @@ var getJibProfiles = function (input) {
data
.
configuration_make_arg
=
"
CONF_NAME=
"
;
// Exclude list to use when Jib creates a source bundle
data
.
src_bundle_excludes
=
"
./build webrev .hg */.hg */*/.hg */*/*/.hg
"
;
data
.
src_bundle_excludes
=
"
./build webrev
* */webrev* */*/webrev* */*/*/webrev*
.hg */.hg */*/.hg */*/*/.hg
"
;
// Include list to use when creating a minimal jib source bundle which
// contains just the jib configuration files.
data
.
conf_bundle_includes
=
"
*/conf/jib-profiles.* common/autoconf/version-numbers
"
...
...
test/lib/jdk/test/lib/hprof/model/HackJavaValue.java
浏览文件 @
da3aa407
/*
* Copyright (c) 1997, 201
6
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
7
, 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
...
...
@@ -47,9 +47,9 @@ package jdk.test.lib.hprof.model;
public
class
HackJavaValue
extends
JavaValue
{
private
String
value
;
private
int
size
;
private
long
size
;
public
HackJavaValue
(
String
value
,
int
size
)
{
public
HackJavaValue
(
String
value
,
long
size
)
{
this
.
value
=
value
;
this
.
size
=
size
;
}
...
...
@@ -58,7 +58,8 @@ public class HackJavaValue extends JavaValue {
return
value
;
}
public
int
getSize
()
{
@Override
public
long
getSize
()
{
return
size
;
}
...
...
test/lib/jdk/test/lib/hprof/model/JavaClass.java
浏览文件 @
da3aa407
/*
* Copyright (c) 1997, 201
6
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
7
, 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
...
...
@@ -403,7 +403,8 @@ public class JavaClass extends JavaHeapObject {
/**
* @return the size of this object
*/
public
int
getSize
()
{
@Override
public
long
getSize
()
{
JavaClass
cl
=
mySnapshot
.
getJavaLangClass
();
if
(
cl
==
null
)
{
return
0
;
...
...
test/lib/jdk/test/lib/hprof/model/JavaHeapObject.java
浏览文件 @
da3aa407
/*
* Copyright (c) 1997, 201
6
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
7
, 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
...
...
@@ -64,7 +64,7 @@ public abstract class JavaHeapObject extends JavaThing {
private
int
referersLen
=
0
;
// -1 when resolved
public
abstract
JavaClass
getClazz
();
public
abstract
int
getSize
();
public
abstract
long
getSize
();
public
abstract
long
getId
();
/**
...
...
test/lib/jdk/test/lib/hprof/model/JavaLazyReadObject.java
浏览文件 @
da3aa407
/*
* Copyright (c) 1997, 201
6
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
7
, 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
...
...
@@ -47,7 +47,8 @@ public abstract class JavaLazyReadObject extends JavaHeapObject {
this
.
offset
=
offset
;
}
public
final
int
getSize
()
{
@Override
public
final
long
getSize
()
{
return
getValueLength
()
+
getClazz
().
getMinimumObjectSize
();
}
...
...
@@ -55,8 +56,16 @@ public abstract class JavaLazyReadObject extends JavaHeapObject {
return
offset
;
}
protected
ReadBuffer
buf
()
{
return
getClazz
().
getReadBuffer
();
}
protected
int
idSize
()
{
return
getClazz
().
getIdentifierSize
();
}
// return the length of the data for this object
protected
final
int
getValueLength
()
{
protected
final
long
getValueLength
()
{
try
{
return
readValueLength
();
}
catch
(
IOException
exp
)
{
...
...
@@ -67,25 +76,23 @@ public abstract class JavaLazyReadObject extends JavaHeapObject {
}
// get this object's content as byte array
protected
final
byte
[]
getValue
()
{
protected
final
JavaThing
[]
getValue
()
{
try
{
return
readValue
();
}
catch
(
IOException
exp
)
{
System
.
err
.
println
(
"lazy read failed at offset "
+
offset
);
exp
.
printStackTrace
();
return
Snapshot
.
EMPTY_
BYTE
_ARRAY
;
return
Snapshot
.
EMPTY_
JAVATHING
_ARRAY
;
}
}
// get ID of this object
public
final
long
getId
()
{
try
{
ReadBuffer
buf
=
getClazz
().
getReadBuffer
();
int
idSize
=
getClazz
().
getIdentifierSize
();
if
(
idSize
==
4
)
{
return
((
long
)
buf
.
getInt
(
offset
))
&
Snapshot
.
SMALL_ID_MASK
;
if
(
idSize
()
==
4
)
{
return
((
long
)
buf
().
getInt
(
offset
))
&
Snapshot
.
SMALL_ID_MASK
;
}
else
{
return
buf
.
getLong
(
offset
);
return
buf
()
.
getLong
(
offset
);
}
}
catch
(
IOException
exp
)
{
System
.
err
.
println
(
"lazy read failed at offset "
+
offset
);
...
...
@@ -94,8 +101,8 @@ public abstract class JavaLazyReadObject extends JavaHeapObject {
}
}
protected
abstract
int
readValueLength
()
throws
IOException
;
protected
abstract
byte
[]
readValue
()
throws
IOException
;
protected
abstract
long
readValueLength
()
throws
IOException
;
protected
abstract
JavaThing
[]
readValue
()
throws
IOException
;
// make Integer or Long for given object ID
protected
static
Number
makeId
(
long
id
)
{
...
...
@@ -116,61 +123,46 @@ public abstract class JavaLazyReadObject extends JavaHeapObject {
}
// read object ID from given index from given byte array
protected
final
long
objectIdAt
(
int
index
,
byte
[]
data
)
{
int
idSize
=
getClazz
().
getIdentifierSize
();
if
(
idSize
==
4
)
{
return
((
long
)
intAt
(
index
,
data
))
&
Snapshot
.
SMALL_ID_MASK
;
protected
final
long
objectIdAt
(
long
offset
)
throws
IOException
{
if
(
idSize
()
==
4
)
{
return
((
long
)
intAt
(
offset
))
&
Snapshot
.
SMALL_ID_MASK
;
}
else
{
return
longAt
(
index
,
data
);
return
longAt
(
offset
);
}
}
// utility methods to read primitive types from byte array
protected
static
byte
byteAt
(
int
index
,
byte
[]
value
)
{
return
value
[
index
]
;
protected
byte
byteAt
(
long
offset
)
throws
IOException
{
return
buf
().
getByte
(
offset
)
;
}
protected
static
boolean
booleanAt
(
int
index
,
byte
[]
value
)
{
return
(
value
[
index
]
&
0xff
)
==
0
?
false
:
true
;
protected
boolean
booleanAt
(
long
offset
)
throws
IOException
{
return
byteAt
(
offset
)
==
0
?
false
:
true
;
}
protected
static
char
charAt
(
int
index
,
byte
[]
value
)
{
int
b1
=
((
int
)
value
[
index
++]
&
0xff
);
int
b2
=
((
int
)
value
[
index
++]
&
0xff
);
return
(
char
)
((
b1
<<
8
)
+
b2
);
protected
char
charAt
(
long
offset
)
throws
IOException
{
return
buf
().
getChar
(
offset
);
}
protected
static
short
shortAt
(
int
index
,
byte
[]
value
)
{
int
b1
=
((
int
)
value
[
index
++]
&
0xff
);
int
b2
=
((
int
)
value
[
index
++]
&
0xff
);
return
(
short
)
((
b1
<<
8
)
+
b2
);
protected
short
shortAt
(
long
offset
)
throws
IOException
{
return
buf
().
getShort
(
offset
);
}
protected
static
int
intAt
(
int
index
,
byte
[]
value
)
{
int
b1
=
((
int
)
value
[
index
++]
&
0xff
);
int
b2
=
((
int
)
value
[
index
++]
&
0xff
);
int
b3
=
((
int
)
value
[
index
++]
&
0xff
);
int
b4
=
((
int
)
value
[
index
++]
&
0xff
);
return
((
b1
<<
24
)
+
(
b2
<<
16
)
+
(
b3
<<
8
)
+
b4
);
protected
int
intAt
(
long
offset
)
throws
IOException
{
return
buf
().
getInt
(
offset
);
}
protected
static
long
longAt
(
int
index
,
byte
[]
value
)
{
long
val
=
0
;
for
(
int
j
=
0
;
j
<
8
;
j
++)
{
val
=
val
<<
8
;
int
b
=
((
int
)
value
[
index
++])
&
0xff
;
val
|=
b
;
}
return
val
;
protected
long
longAt
(
long
offset
)
throws
IOException
{
return
buf
().
getLong
(
offset
);
}
protected
static
float
floatAt
(
int
index
,
byte
[]
value
)
{
int
val
=
intAt
(
index
,
value
);
protected
float
floatAt
(
long
offset
)
throws
IOException
{
int
val
=
intAt
(
offset
);
return
Float
.
intBitsToFloat
(
val
);
}
protected
static
double
doubleAt
(
int
index
,
byte
[]
value
)
{
long
val
=
longAt
(
index
,
value
);
protected
double
doubleAt
(
long
offset
)
throws
IOException
{
long
val
=
longAt
(
offset
);
return
Double
.
longBitsToDouble
(
val
);
}
}
test/lib/jdk/test/lib/hprof/model/JavaObject.java
浏览文件 @
da3aa407
/*
* Copyright (c) 1997, 201
6
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
7
, 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
...
...
@@ -86,7 +86,7 @@ public class JavaObject extends JavaLazyReadObject {
// while resolving, parse fields in verbose mode.
// but, getFields calls parseFields in non-verbose mode
// to avoid printing warnings repeatedly.
parseFields
(
getValue
(),
true
);
parseFields
(
true
);
cl
.
addInstance
(
this
);
super
.
resolve
(
snapshot
);
...
...
@@ -114,7 +114,7 @@ public class JavaObject extends JavaLazyReadObject {
public
JavaThing
[]
getFields
()
{
// pass false to verbose mode so that dereference
// warnings are not printed.
return
parseFields
(
getValue
(),
false
);
return
parseFields
(
false
);
}
// returns the value of field of given name
...
...
@@ -212,35 +212,27 @@ public class JavaObject extends JavaLazyReadObject {
* data length (int)
* byte[length]
*/
protected
final
int
readValueLength
()
throws
IOException
{
JavaClass
cl
=
getClazz
();
int
idSize
=
cl
.
getIdentifierSize
();
long
lengthOffset
=
getOffset
()
+
2
*
idSize
+
4
;
return
cl
.
getReadBuffer
().
getInt
(
lengthOffset
);
@Override
protected
final
long
readValueLength
()
throws
IOException
{
long
lengthOffset
=
getOffset
()
+
2
*
idSize
()
+
4
;
return
buf
().
getInt
(
lengthOffset
);
}
protected
final
byte
[]
readValue
()
throws
IOException
{
JavaClass
cl
=
getClazz
();
int
idSize
=
cl
.
getIdentifierSize
();
ReadBuffer
buf
=
cl
.
getReadBuffer
();
long
offset
=
getOffset
()
+
2
*
idSize
+
4
;
int
length
=
buf
.
getInt
(
offset
);
if
(
length
==
0
)
{
return
Snapshot
.
EMPTY_BYTE_ARRAY
;
}
else
{
byte
[]
res
=
new
byte
[
length
];
buf
.
get
(
offset
+
4
,
res
);
return
res
;
}
@Override
protected
final
JavaThing
[]
readValue
()
throws
IOException
{
return
parseFields
(
false
);
}
private
long
dataStartOffset
()
{
return
getOffset
()
+
idSize
()
+
4
+
idSize
()
+
4
;
}
private
JavaThing
[]
parseFields
(
b
yte
[]
data
,
b
oolean
verbose
)
{
private
JavaThing
[]
parseFields
(
boolean
verbose
)
{
JavaClass
cl
=
getClazz
();
int
target
=
cl
.
getNumFieldsForInstance
();
JavaField
[]
fields
=
cl
.
getFields
();
JavaThing
[]
fieldValues
=
new
JavaThing
[
target
];
Snapshot
snapshot
=
cl
.
getSnapshot
();
int
idSize
=
snapshot
.
getIdentifierSize
();
int
fieldNo
=
0
;
// In the dump file, the fields are stored in this order:
// fields of most derived class (immediate class) are stored
...
...
@@ -254,7 +246,7 @@ public class JavaObject extends JavaLazyReadObject {
// starts with the top of the inheritance hierarchy and works down.
target
-=
fields
.
length
;
JavaClass
currClass
=
cl
;
int
index
=
0
;
long
offset
=
dataStartOffset
()
;
for
(
int
i
=
0
;
i
<
fieldValues
.
length
;
i
++,
fieldNo
++)
{
while
(
fieldNo
>=
fields
.
length
)
{
currClass
=
currClass
.
getSuperclass
();
...
...
@@ -264,65 +256,72 @@ public class JavaObject extends JavaLazyReadObject {
}
JavaField
f
=
fields
[
fieldNo
];
char
sig
=
f
.
getSignature
().
charAt
(
0
);
switch
(
sig
)
{
case
'L'
:
case
'['
:
{
long
id
=
objectIdAt
(
index
,
data
);
index
+=
idSize
;
JavaObjectRef
ref
=
new
JavaObjectRef
(
id
);
fieldValues
[
target
+
fieldNo
]
=
ref
.
dereference
(
snapshot
,
f
,
verbose
);
break
;
}
case
'Z'
:
{
byte
value
=
byteAt
(
index
,
data
);
index
++;
fieldValues
[
target
+
fieldNo
]
=
new
JavaBoolean
(
value
!=
0
);
break
;
}
case
'B'
:
{
byte
value
=
byteAt
(
index
,
data
);
index
++;
fieldValues
[
target
+
fieldNo
]
=
new
JavaByte
(
value
);
break
;
}
case
'S'
:
{
short
value
=
shortAt
(
index
,
data
);
index
+=
2
;
fieldValues
[
target
+
fieldNo
]
=
new
JavaShort
(
value
);
break
;
}
case
'C'
:
{
char
value
=
charAt
(
index
,
data
);
index
+=
2
;
fieldValues
[
target
+
fieldNo
]
=
new
JavaChar
(
value
);
break
;
}
case
'I'
:
{
int
value
=
intAt
(
index
,
data
);
index
+=
4
;
fieldValues
[
target
+
fieldNo
]
=
new
JavaInt
(
value
);
break
;
}
case
'J'
:
{
long
value
=
longAt
(
index
,
data
);
index
+=
8
;
fieldValues
[
target
+
fieldNo
]
=
new
JavaLong
(
value
);
break
;
}
case
'F'
:
{
float
value
=
floatAt
(
index
,
data
);
index
+=
4
;
fieldValues
[
target
+
fieldNo
]
=
new
JavaFloat
(
value
);
break
;
}
case
'D'
:
{
double
value
=
doubleAt
(
index
,
data
);
index
+=
8
;
fieldValues
[
target
+
fieldNo
]
=
new
JavaDouble
(
value
);
break
;
try
{
switch
(
sig
)
{
case
'L'
:
case
'['
:
{
long
id
=
objectIdAt
(
offset
);
offset
+=
idSize
();
JavaObjectRef
ref
=
new
JavaObjectRef
(
id
);
fieldValues
[
target
+
fieldNo
]
=
ref
.
dereference
(
snapshot
,
f
,
verbose
);
break
;
}
case
'Z'
:
{
byte
value
=
byteAt
(
offset
);
offset
++;
fieldValues
[
target
+
fieldNo
]
=
new
JavaBoolean
(
value
!=
0
);
break
;
}
case
'B'
:
{
byte
value
=
byteAt
(
offset
);
offset
++;
fieldValues
[
target
+
fieldNo
]
=
new
JavaByte
(
value
);
break
;
}
case
'S'
:
{
short
value
=
shortAt
(
offset
);
offset
+=
2
;
fieldValues
[
target
+
fieldNo
]
=
new
JavaShort
(
value
);
break
;
}
case
'C'
:
{
char
value
=
charAt
(
offset
);
offset
+=
2
;
fieldValues
[
target
+
fieldNo
]
=
new
JavaChar
(
value
);
break
;
}
case
'I'
:
{
int
value
=
intAt
(
offset
);
offset
+=
4
;
fieldValues
[
target
+
fieldNo
]
=
new
JavaInt
(
value
);
break
;
}
case
'J'
:
{
long
value
=
longAt
(
offset
);
offset
+=
8
;
fieldValues
[
target
+
fieldNo
]
=
new
JavaLong
(
value
);
break
;
}
case
'F'
:
{
float
value
=
floatAt
(
offset
);
offset
+=
4
;
fieldValues
[
target
+
fieldNo
]
=
new
JavaFloat
(
value
);
break
;
}
case
'D'
:
{
double
value
=
doubleAt
(
offset
);
offset
+=
8
;
fieldValues
[
target
+
fieldNo
]
=
new
JavaDouble
(
value
);
break
;
}
default
:
throw
new
RuntimeException
(
"invalid signature: "
+
sig
);
}
default
:
throw
new
RuntimeException
(
"invalid signature: "
+
sig
);
}
catch
(
IOException
exp
)
{
System
.
err
.
println
(
"lazy read failed at offset "
+
offset
);
exp
.
printStackTrace
();
return
Snapshot
.
EMPTY_JAVATHING_ARRAY
;
}
}
return
fieldValues
;
...
...
test/lib/jdk/test/lib/hprof/model/JavaObjectArray.java
浏览文件 @
da3aa407
/*
* Copyright (c) 1997, 201
6
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
7
, 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
...
...
@@ -87,18 +87,7 @@ public class JavaObjectArray extends JavaLazyReadObject {
}
public
JavaThing
[]
getElements
()
{
Snapshot
snapshot
=
getClazz
().
getSnapshot
();
byte
[]
data
=
getValue
();
final
int
idSize
=
snapshot
.
getIdentifierSize
();
final
int
numElements
=
data
.
length
/
idSize
;
JavaThing
[]
elements
=
new
JavaThing
[
numElements
];
int
index
=
0
;
for
(
int
i
=
0
;
i
<
elements
.
length
;
i
++)
{
long
id
=
objectIdAt
(
index
,
data
);
index
+=
idSize
;
elements
[
i
]
=
snapshot
.
findThing
(
id
);
}
return
elements
;
return
getValue
();
}
public
int
compareTo
(
JavaThing
other
)
{
...
...
@@ -109,7 +98,7 @@ public class JavaObjectArray extends JavaLazyReadObject {
}
public
int
getLength
()
{
return
getValueLength
()
/
getClazz
().
getIdentifierSize
(
);
return
(
int
)(
getValueLength
()
/
idSize
()
);
}
public
void
visitReferencedObjects
(
JavaHeapObjectVisitor
v
)
{
...
...
@@ -146,27 +135,31 @@ public class JavaObjectArray extends JavaLazyReadObject {
* array class ID
* array element IDs
*/
protected
final
int
readValueLength
()
throws
IOException
{
JavaClass
cl
=
getClazz
();
ReadBuffer
buf
=
cl
.
getReadBuffer
();
int
idSize
=
cl
.
getIdentifierSize
();
long
offset
=
getOffset
()
+
idSize
+
4
;
int
len
=
buf
.
getInt
(
offset
);
return
len
*
cl
.
getIdentifierSize
();
@Override
protected
final
long
readValueLength
()
throws
IOException
{
long
offset
=
getOffset
()
+
idSize
()
+
4
;
// length of the array in elements
long
len
=
buf
().
getInt
(
offset
);
// byte length of array
return
len
*
idSize
();
}
private
long
dataStartOffset
()
{
return
getOffset
()
+
idSize
()
+
4
+
4
+
idSize
();
}
protected
final
byte
[]
readValue
()
throws
IOException
{
JavaClass
cl
=
getClazz
();
ReadBuffer
buf
=
cl
.
getReadBuffer
();
int
idSize
=
cl
.
getIdentifierSize
();
long
offset
=
getOffset
()
+
idSize
+
4
;
int
len
=
buf
.
getInt
(
offset
);
if
(
len
==
0
)
{
return
Snapshot
.
EMPTY_BYTE_ARRAY
;
}
else
{
byte
[]
res
=
new
byte
[
len
*
idSize
]
;
buf
.
get
(
offset
+
4
+
idSize
,
res
);
return
res
;
}
@Override
protected
final
JavaThing
[]
readValue
()
throws
IOException
{
Snapshot
snapshot
=
getClazz
().
getSnapshot
();
int
len
=
getLength
();
long
offset
=
dataStartOffset
()
;
JavaThing
[]
res
=
new
JavaThing
[
len
];
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
long
id
=
objectIdAt
(
offset
);
res
[
i
]
=
snapshot
.
findThing
(
id
)
;
offset
+=
idSize
(
);
}
return
res
;
}
}
test/lib/jdk/test/lib/hprof/model/JavaObjectRef.java
浏览文件 @
da3aa407
/*
* Copyright (c) 1997, 201
6
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
7
, 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
...
...
@@ -87,7 +87,8 @@ public class JavaObjectRef extends JavaThing {
return
result
;
}
public
int
getSize
()
{
@Override
public
long
getSize
()
{
return
0
;
}
...
...
test/lib/jdk/test/lib/hprof/model/JavaThing.java
浏览文件 @
da3aa407
/*
* Copyright (c) 1997, 201
6
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
7
, 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
...
...
@@ -81,7 +81,7 @@ public abstract class JavaThing {
/**
* @return the size of this object, in bytes, including VM overhead
*/
abstract
public
int
getSize
();
abstract
public
long
getSize
();
/**
* @return a human-readable string representation of this thing
...
...
test/lib/jdk/test/lib/hprof/model/JavaValue.java
浏览文件 @
da3aa407
/*
* Copyright (c) 1997, 201
6
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
7
, 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
...
...
@@ -52,7 +52,8 @@ public abstract class JavaValue extends JavaThing {
abstract
public
String
toString
();
public
int
getSize
()
{
@Override
public
long
getSize
()
{
// The size of a value is already accounted for in the class
// that has the data member.
return
0
;
...
...
test/lib/jdk/test/lib/hprof/model/JavaValueArray.java
浏览文件 @
da3aa407
/*
* Copyright (c) 1997, 201
6
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
7
, 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
...
...
@@ -91,38 +91,92 @@ public class JavaValueArray extends JavaLazyReadObject
*
* object ID
* stack trace serial number (int)
*
length of the instance data
(int)
*
number of elements
(int)
* element type (byte)
* array data
*/
protected
final
int
readValueLength
()
throws
IOException
{
JavaClass
cl
=
getClazz
();
ReadBuffer
buf
=
cl
.
getReadBuffer
();
int
idSize
=
cl
.
getIdentifierSize
();
long
offset
=
getOffset
()
+
idSize
+
4
;
// length of the array
int
len
=
buf
.
getInt
(
offset
);
// typecode of array element type
byte
type
=
buf
.
getByte
(
offset
+
4
);
return
len
*
elementSize
(
type
);
@Override
protected
final
long
readValueLength
()
throws
IOException
{
long
offset
=
getOffset
()
+
idSize
()
+
4
;
// length of the array in elements
long
len
=
buf
().
getInt
(
offset
);
// byte length of array
return
len
*
elementSize
(
getElementType
());
}
protected
final
byte
[]
readValue
()
throws
IOException
{
JavaClass
cl
=
getClazz
();
ReadBuffer
buf
=
cl
.
getReadBuffer
();
int
idSize
=
cl
.
getIdentifierSize
();
long
offset
=
getOffset
()
+
idSize
+
4
;
// length of the array
int
length
=
buf
.
getInt
(
offset
);
// typecode of array element type
byte
type
=
buf
.
getByte
(
offset
+
4
);
if
(
length
==
0
)
{
return
Snapshot
.
EMPTY_BYTE_ARRAY
;
}
else
{
length
*=
elementSize
(
type
);
byte
[]
res
=
new
byte
[
length
];
buf
.
get
(
offset
+
5
,
res
);
return
res
;
private
long
dataStartOffset
()
{
return
getOffset
()
+
idSize
()
+
4
+
4
+
1
;
}
@Override
protected
final
JavaThing
[]
readValue
()
throws
IOException
{
int
len
=
getLength
();
long
offset
=
dataStartOffset
();
JavaThing
[]
res
=
new
JavaThing
[
len
];
synchronized
(
buf
())
{
switch
(
getElementType
())
{
case
'Z'
:
{
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
new
JavaBoolean
(
booleanAt
(
offset
));
offset
+=
1
;
}
return
res
;
}
case
'B'
:
{
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
new
JavaByte
(
byteAt
(
offset
));
offset
+=
1
;
}
return
res
;
}
case
'C'
:
{
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
new
JavaChar
(
charAt
(
offset
));
offset
+=
2
;
}
return
res
;
}
case
'S'
:
{
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
new
JavaShort
(
shortAt
(
offset
));
offset
+=
2
;
}
return
res
;
}
case
'I'
:
{
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
new
JavaInt
(
intAt
(
offset
));
offset
+=
4
;
}
return
res
;
}
case
'J'
:
{
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
new
JavaLong
(
longAt
(
offset
));
offset
+=
8
;
}
return
res
;
}
case
'F'
:
{
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
new
JavaFloat
(
floatAt
(
offset
));
offset
+=
4
;
}
return
res
;
}
case
'D'
:
{
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
new
JavaDouble
(
doubleAt
(
offset
));
offset
+=
8
;
}
return
res
;
}
default
:
{
throw
new
RuntimeException
(
"unknown primitive type?"
);
}
}
}
}
...
...
@@ -197,83 +251,11 @@ public class JavaValueArray extends JavaLazyReadObject
}
data
|=
(
divider
<<
LENGTH_DIVIDER_SHIFT
);
}
return
(
getValueLength
()
/
divider
);
return
(
int
)(
getValueLength
()
/
divider
);
}
public
Object
getElements
()
{
final
int
len
=
getLength
();
final
byte
et
=
getElementType
();
byte
[]
data
=
getValue
();
int
index
=
0
;
switch
(
et
)
{
case
'Z'
:
{
boolean
[]
res
=
new
boolean
[
len
];
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
booleanAt
(
index
,
data
);
index
++;
}
return
res
;
}
case
'B'
:
{
byte
[]
res
=
new
byte
[
len
];
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
byteAt
(
index
,
data
);
index
++;
}
return
res
;
}
case
'C'
:
{
char
[]
res
=
new
char
[
len
];
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
charAt
(
index
,
data
);
index
+=
2
;
}
return
res
;
}
case
'S'
:
{
short
[]
res
=
new
short
[
len
];
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
shortAt
(
index
,
data
);
index
+=
2
;
}
return
res
;
}
case
'I'
:
{
int
[]
res
=
new
int
[
len
];
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
intAt
(
index
,
data
);
index
+=
4
;
}
return
res
;
}
case
'J'
:
{
long
[]
res
=
new
long
[
len
];
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
longAt
(
index
,
data
);
index
+=
8
;
}
return
res
;
}
case
'F'
:
{
float
[]
res
=
new
float
[
len
];
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
floatAt
(
index
,
data
);
index
+=
4
;
}
return
res
;
}
case
'D'
:
{
double
[]
res
=
new
double
[
len
];
for
(
int
i
=
0
;
i
<
len
;
i
++)
{
res
[
i
]
=
doubleAt
(
index
,
data
);
index
+=
8
;
}
return
res
;
}
default
:
{
throw
new
RuntimeException
(
"unknown primitive type?"
);
}
}
public
JavaThing
[]
getElements
()
{
return
getValue
();
}
public
byte
getElementType
()
{
...
...
@@ -292,54 +274,6 @@ public class JavaValueArray extends JavaLazyReadObject
}
}
public
boolean
getBooleanAt
(
int
index
)
{
checkIndex
(
index
);
requireType
(
'Z'
);
return
booleanAt
(
index
,
getValue
());
}
public
byte
getByteAt
(
int
index
)
{
checkIndex
(
index
);
requireType
(
'B'
);
return
byteAt
(
index
,
getValue
());
}
public
char
getCharAt
(
int
index
)
{
checkIndex
(
index
);
requireType
(
'C'
);
return
charAt
(
index
<<
1
,
getValue
());
}
public
short
getShortAt
(
int
index
)
{
checkIndex
(
index
);
requireType
(
'S'
);
return
shortAt
(
index
<<
1
,
getValue
());
}
public
int
getIntAt
(
int
index
)
{
checkIndex
(
index
);
requireType
(
'I'
);
return
intAt
(
index
<<
2
,
getValue
());
}
public
long
getLongAt
(
int
index
)
{
checkIndex
(
index
);
requireType
(
'J'
);
return
longAt
(
index
<<
3
,
getValue
());
}
public
float
getFloatAt
(
int
index
)
{
checkIndex
(
index
);
requireType
(
'F'
);
return
floatAt
(
index
<<
2
,
getValue
());
}
public
double
getDoubleAt
(
int
index
)
{
checkIndex
(
index
);
requireType
(
'D'
);
return
doubleAt
(
index
<<
3
,
getValue
());
}
public
String
valueString
()
{
return
valueString
(
true
);
}
...
...
@@ -347,15 +281,12 @@ public class JavaValueArray extends JavaLazyReadObject
public
String
valueString
(
boolean
bigLimit
)
{
// Char arrays deserve special treatment
StringBuilder
result
;
byte
[]
value
=
getValue
();
int
max
=
value
.
length
;
JavaThing
[]
things
=
getValue
();
byte
elementSignature
=
getElementType
();
if
(
elementSignature
==
'C'
)
{
result
=
new
StringBuilder
();
for
(
int
i
=
0
;
i
<
value
.
length
;
)
{
char
val
=
charAt
(
i
,
value
);
result
.
append
(
val
);
i
+=
2
;
for
(
int
i
=
0
;
i
<
things
.
length
;
i
++)
{
result
.
append
(
things
[
i
]);
}
}
else
{
int
limit
=
8
;
...
...
@@ -363,61 +294,52 @@ public class JavaValueArray extends JavaLazyReadObject
limit
=
1000
;
}
result
=
new
StringBuilder
(
"{"
);
int
num
=
0
;
for
(
int
i
=
0
;
i
<
value
.
length
;
)
{
if
(
num
>
0
)
{
for
(
int
i
=
0
;
i
<
things
.
length
;
i
++)
{
if
(
i
>
0
)
{
result
.
append
(
", "
);
}
if
(
num
>=
limit
)
{
if
(
i
>=
limit
)
{
result
.
append
(
"... "
);
break
;
}
num
++;
switch
(
elementSignature
)
{
case
'Z'
:
{
boolean
val
=
booleanAt
(
i
,
value
)
;
boolean
val
=
((
JavaBoolean
)
things
[
i
]).
value
;
if
(
val
)
{
result
.
append
(
"true"
);
}
else
{
result
.
append
(
"false"
);
}
i
++;
break
;
}
case
'B'
:
{
int
val
=
0xFF
&
byteAt
(
i
,
value
)
;
byte
val
=
((
JavaByte
)
things
[
i
]).
value
;
result
.
append
(
"0x"
).
append
(
Integer
.
toString
(
val
,
16
));
i
++;
break
;
}
case
'S'
:
{
short
val
=
shortAt
(
i
,
value
);
i
+=
2
;
short
val
=
((
JavaShort
)
things
[
i
]).
value
;
result
.
append
(
val
);
break
;
}
case
'I'
:
{
int
val
=
intAt
(
i
,
value
);
i
+=
4
;
int
val
=
((
JavaInt
)
things
[
i
]).
value
;
result
.
append
(
val
);
break
;
}
case
'J'
:
{
// long
long
val
=
longAt
(
i
,
value
)
;
long
val
=
((
JavaLong
)
things
[
i
]).
value
;
result
.
append
(
val
);
i
+=
8
;
break
;
}
case
'F'
:
{
float
val
=
floatAt
(
i
,
value
)
;
float
val
=
((
JavaFloat
)
things
[
i
]).
value
;
result
.
append
(
val
);
i
+=
4
;
break
;
}
case
'D'
:
{
// double
double
val
=
doubleAt
(
i
,
value
)
;
double
val
=
((
JavaDouble
)
things
[
i
]).
value
;
result
.
append
(
val
);
i
+=
8
;
break
;
}
default
:
{
...
...
@@ -429,5 +351,4 @@ public class JavaValueArray extends JavaLazyReadObject
}
return
result
.
toString
();
}
}
test/lib/jdk/test/lib/hprof/model/ReachableObjects.java
浏览文件 @
da3aa407
/*
* Copyright (c) 1997, 201
6
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
7
, 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
...
...
@@ -93,9 +93,9 @@ public class ReachableObjects {
public
int
compare
(
Object
lhs
,
Object
rhs
)
{
JavaThing
left
=
(
JavaThing
)
lhs
;
JavaThing
right
=
(
JavaThing
)
rhs
;
int
diff
=
right
.
getSize
()
-
left
.
getSize
();
long
diff
=
right
.
getSize
()
-
left
.
getSize
();
if
(
diff
!=
0
)
{
return
diff
;
return
Long
.
signum
(
diff
)
;
}
return
left
.
compareTo
(
right
);
}
...
...
test/lib/jdk/test/lib/hprof/model/Snapshot.java
浏览文件 @
da3aa407
/*
* Copyright (c) 1997, 201
6
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
7
, 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
...
...
@@ -52,7 +52,7 @@ import jdk.test.lib.hprof.util.Misc;
public
class
Snapshot
implements
AutoCloseable
{
public
static
final
long
SMALL_ID_MASK
=
0x0FFFFFFFF
L
;
public
static
final
byte
[]
EMPTY_BYTE_ARRAY
=
new
byte
[
0
];
public
static
final
JavaThing
[]
EMPTY_JAVATHING_ARRAY
=
new
JavaThing
[
0
];
private
static
final
JavaField
[]
EMPTY_FIELD_ARRAY
=
new
JavaField
[
0
];
private
static
final
JavaStatic
[]
EMPTY_STATIC_ARRAY
=
new
JavaStatic
[
0
];
...
...
test/lib/jdk/test/lib/hprof/parser/FileReadBuffer.java
浏览文件 @
da3aa407
/*
* Copyright (c) 1997, 201
6
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
7
, 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
...
...
@@ -57,26 +57,31 @@ class FileReadBuffer implements ReadBuffer {
file
.
read
(
buf
);
}
@Override
public
synchronized
char
getChar
(
long
pos
)
throws
IOException
{
seek
(
pos
);
return
file
.
readChar
();
}
@Override
public
synchronized
byte
getByte
(
long
pos
)
throws
IOException
{
seek
(
pos
);
return
(
byte
)
file
.
read
();
}
@Override
public
synchronized
short
getShort
(
long
pos
)
throws
IOException
{
seek
(
pos
);
return
file
.
readShort
();
}
@Override
public
synchronized
int
getInt
(
long
pos
)
throws
IOException
{
seek
(
pos
);
return
file
.
readInt
();
}
@Override
public
synchronized
long
getLong
(
long
pos
)
throws
IOException
{
seek
(
pos
);
return
file
.
readLong
();
...
...
test/lib/jdk/test/lib/hprof/parser/MappedReadBuffer.java
浏览文件 @
da3aa407
/*
* Copyright (c) 1997, 201
6
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
7
, 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
...
...
@@ -98,31 +98,31 @@ class MappedReadBuffer implements ReadBuffer {
buf
.
position
((
int
)
pos
);
}
public
synchronized
void
get
(
long
pos
,
byte
[]
res
)
throws
IOException
{
seek
(
pos
);
buf
.
get
(
res
);
}
@Override
public
synchronized
char
getChar
(
long
pos
)
throws
IOException
{
seek
(
pos
);
return
buf
.
getChar
();
}
@Override
public
synchronized
byte
getByte
(
long
pos
)
throws
IOException
{
seek
(
pos
);
return
buf
.
get
();
}
@Override
public
synchronized
short
getShort
(
long
pos
)
throws
IOException
{
seek
(
pos
);
return
buf
.
getShort
();
}
@Override
public
synchronized
int
getInt
(
long
pos
)
throws
IOException
{
seek
(
pos
);
return
buf
.
getInt
();
}
@Override
public
synchronized
long
getLong
(
long
pos
)
throws
IOException
{
seek
(
pos
);
return
buf
.
getLong
();
...
...
test/lib/jdk/test/lib/hprof/parser/ReadBuffer.java
浏览文件 @
da3aa407
/*
* Copyright (c) 1997, 201
6
, Oracle and/or its affiliates. All rights reserved.
* Copyright (c) 1997, 201
7
, 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
...
...
@@ -40,9 +40,6 @@ import java.io.IOException;
* @author A. Sundararajan
*/
public
interface
ReadBuffer
extends
AutoCloseable
{
// read methods - only byte array and int primitive types.
// read position has to be specified always.
public
void
get
(
long
pos
,
byte
[]
buf
)
throws
IOException
;
public
char
getChar
(
long
pos
)
throws
IOException
;
public
byte
getByte
(
long
pos
)
throws
IOException
;
public
short
getShort
(
long
pos
)
throws
IOException
;
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录