Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_nashorn
提交
9fb85ea1
D
dragonwell8_nashorn
项目概览
openanolis
/
dragonwell8_nashorn
通知
2
Star
2
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
D
dragonwell8_nashorn
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
9fb85ea1
编写于
10月 31, 2013
作者:
S
sundar
浏览文件
操作
浏览文件
下载
差异文件
Merge
上级
c8b315e4
ab9e5f18
变更
5
隐藏空白更改
内联
并排
Showing
5 changed file
with
100 addition
and
7 deletion
+100
-7
src/jdk/nashorn/internal/codegen/CodeGenerator.java
src/jdk/nashorn/internal/codegen/CodeGenerator.java
+6
-0
src/jdk/nashorn/internal/ir/debug/ObjectSizeCalculator.java
src/jdk/nashorn/internal/ir/debug/ObjectSizeCalculator.java
+53
-6
src/jdk/nashorn/internal/runtime/ScriptingFunctions.java
src/jdk/nashorn/internal/runtime/ScriptingFunctions.java
+1
-1
test/script/basic/JDK-8027562.js
test/script/basic/JDK-8027562.js
+39
-0
test/script/basic/JDK-8027562.js.EXPECTED
test/script/basic/JDK-8027562.js.EXPECTED
+1
-0
未找到文件。
src/jdk/nashorn/internal/codegen/CodeGenerator.java
浏览文件 @
9fb85ea1
...
...
@@ -706,6 +706,12 @@ final class CodeGenerator extends NodeOperatorVisitor<CodeGeneratorLexicalContex
final
CallNode
.
EvalArgs
evalArgs
=
callNode
.
getEvalArgs
();
// load evaluated code
load
(
evalArgs
.
getCode
(),
Type
.
OBJECT
);
// load second and subsequent args for side-effect
final
List
<
Expression
>
args
=
callNode
.
getArgs
();
final
int
numArgs
=
args
.
size
();
for
(
int
i
=
1
;
i
<
numArgs
;
i
++)
{
load
(
args
.
get
(
i
)).
pop
();
}
// special/extra 'eval' arguments
load
(
evalArgs
.
getThis
());
method
.
load
(
evalArgs
.
getLocation
());
...
...
src/jdk/nashorn/internal/ir/debug/ObjectSizeCalculator.java
浏览文件 @
9fb85ea1
...
...
@@ -25,10 +25,10 @@
package
jdk.nashorn.internal.ir.debug
;
import
java.lang.management.ManagementFactory
;
import
java.lang.management.MemoryPoolMXBean
;
import
java.lang.reflect.Array
;
import
java.lang.reflect.Field
;
import
java.lang.reflect.InvocationTargetException
;
import
java.lang.reflect.Method
;
import
java.lang.reflect.Modifier
;
import
java.util.ArrayDeque
;
import
java.util.ArrayList
;
...
...
@@ -51,9 +51,9 @@ import java.util.Map;
* switch, it can not detect
* this fact and will report incorrect sizes, as it will presume the default JVM
* behavior.
*
* @author Attila Szegedi
*/
@SuppressWarnings
(
"StaticNonFinalUsedInInitialization"
)
public
class
ObjectSizeCalculator
{
/**
...
...
@@ -368,6 +368,29 @@ public class ObjectSizeCalculator {
type
.
getName
());
}
// ALERT: java.lang.management is not available in compact 1. We need
// to use reflection to soft link test memory statistics.
static
Class
<?>
managementFactory
=
null
;
static
Class
<?>
memoryPoolMXBean
=
null
;
static
Class
<?>
memoryUsage
=
null
;
static
Method
getMemoryPoolMXBeans
=
null
;
static
Method
getUsage
=
null
;
static
Method
getMax
=
null
;
static
{
try
{
managementFactory
=
Class
.
forName
(
"java.lang.management.ManagementFactory"
);
memoryPoolMXBean
=
Class
.
forName
(
"java.lang.management.MemoryPoolMXBean"
);
memoryUsage
=
Class
.
forName
(
"java.lang.management.MemoryUsage"
);
getMemoryPoolMXBeans
=
managementFactory
.
getMethod
(
"getMemoryPoolMXBeans"
);
getUsage
=
memoryPoolMXBean
.
getMethod
(
"getUsage"
);
getMax
=
memoryUsage
.
getMethod
(
"getMax"
);
}
catch
(
ClassNotFoundException
|
NoSuchMethodException
|
SecurityException
ex
)
{
// Pass thru, asserts when attempting to use.
}
}
/**
* Return the current memory usage
* @return current memory usage derived from system configuration
...
...
@@ -409,9 +432,33 @@ public class ObjectSizeCalculator {
strVmVersion
.
indexOf
(
'.'
)));
if
(
vmVersion
>=
17
)
{
long
maxMemory
=
0
;
for
(
MemoryPoolMXBean
mp
:
ManagementFactory
.
getMemoryPoolMXBeans
())
{
maxMemory
+=
mp
.
getUsage
().
getMax
();
/*
See ALERT above. The reflection code below duplicates the following
sequence, and avoids hard coding of java.lang.management.
for (MemoryPoolMXBean mp : ManagementFactory.getMemoryPoolMXBeans()) {
maxMemory += mp.getUsage().getMax();
}
*/
if
(
getMemoryPoolMXBeans
==
null
)
{
throw
new
AssertionError
(
"java.lang.management not available in compact 1"
);
}
try
{
final
List
<?>
memoryPoolMXBeans
=
(
List
<?>)
getMemoryPoolMXBeans
.
invoke
(
managementFactory
);
for
(
final
Object
mp
:
memoryPoolMXBeans
)
{
final
Object
usage
=
getUsage
.
invoke
(
mp
);
final
Object
max
=
getMax
.
invoke
(
usage
);
maxMemory
+=
((
Long
)
max
).
longValue
();
}
}
catch
(
IllegalAccessException
|
IllegalArgumentException
|
InvocationTargetException
ex
)
{
throw
new
AssertionError
(
"java.lang.management not available in compact 1"
);
}
if
(
maxMemory
<
30L
*
1024
*
1024
*
1024
)
{
// HotSpot 17.0 and above use compressed OOPs below 30GB of RAM total
// for all memory pools (yes, including code cache).
...
...
src/jdk/nashorn/internal/runtime/ScriptingFunctions.java
浏览文件 @
9fb85ea1
...
...
@@ -190,7 +190,7 @@ public final class ScriptingFunctions {
char
buffer
[]
=
new
char
[
1024
];
try
(
final
InputStreamReader
inputStream
=
new
InputStreamReader
(
process
.
getErrorStream
()))
{
for
(
int
length
;
(
length
=
inputStream
.
read
(
buffer
,
0
,
buffer
.
length
))
!=
-
1
;
)
{
out
Buffer
.
append
(
buffer
,
0
,
length
);
err
Buffer
.
append
(
buffer
,
0
,
length
);
}
}
catch
(
IOException
ex
)
{
exception
[
1
]
=
ex
;
...
...
test/script/basic/JDK-8027562.js
0 → 100644
浏览文件 @
9fb85ea1
/*
* Copyright (c) 2010, 2013, 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.
*/
/**
* JDK-8027562: eval should load second and subsequent arguments for side effect
*
* @test
* @run
*/
try
{
eval
(
""
,
x
);
fail
(
"
should have thrown ReferenceError for 'x'
"
);
}
catch
(
e
)
{
if
(
!
(
e
instanceof
ReferenceError
))
{
fail
(
"
Expected ReferenceError, got
"
+
e
);
}
print
(
e
);
}
test/script/basic/JDK-8027562.js.EXPECTED
0 → 100644
浏览文件 @
9fb85ea1
ReferenceError: "x" is not defined
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录