Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
openanolis
dragonwell8_nashorn
提交
d3eb78e7
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,发现更多精彩内容 >>
提交
d3eb78e7
编写于
5月 24, 2013
作者:
S
sundar
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
8015354: JSON.parse should not use [[Put]] but use [[DefineOwnProperty]] instead
Reviewed-by: lagergren, hannesw
上级
d8080e04
变更
12
隐藏空白更改
内联
并排
Showing
12 changed file
with
97 addition
and
3 deletion
+97
-3
src/jdk/nashorn/internal/objects/NativeFloat32Array.java
src/jdk/nashorn/internal/objects/NativeFloat32Array.java
+3
-0
src/jdk/nashorn/internal/objects/NativeFloat64Array.java
src/jdk/nashorn/internal/objects/NativeFloat64Array.java
+3
-0
src/jdk/nashorn/internal/objects/NativeInt16Array.java
src/jdk/nashorn/internal/objects/NativeInt16Array.java
+3
-0
src/jdk/nashorn/internal/objects/NativeInt32Array.java
src/jdk/nashorn/internal/objects/NativeInt32Array.java
+3
-0
src/jdk/nashorn/internal/objects/NativeInt8Array.java
src/jdk/nashorn/internal/objects/NativeInt8Array.java
+3
-0
src/jdk/nashorn/internal/objects/NativeUint16Array.java
src/jdk/nashorn/internal/objects/NativeUint16Array.java
+3
-0
src/jdk/nashorn/internal/objects/NativeUint32Array.java
src/jdk/nashorn/internal/objects/NativeUint32Array.java
+3
-0
src/jdk/nashorn/internal/objects/NativeUint8Array.java
src/jdk/nashorn/internal/objects/NativeUint8Array.java
+3
-0
src/jdk/nashorn/internal/objects/NativeUint8ClampedArray.java
...jdk/nashorn/internal/objects/NativeUint8ClampedArray.java
+3
-0
src/jdk/nashorn/internal/runtime/JSONFunctions.java
src/jdk/nashorn/internal/runtime/JSONFunctions.java
+22
-3
src/jdk/nashorn/internal/runtime/Property.java
src/jdk/nashorn/internal/runtime/Property.java
+2
-0
test/script/basic/JDK-8015354.js
test/script/basic/JDK-8015354.js
+46
-0
未找到文件。
src/jdk/nashorn/internal/objects/NativeFloat32Array.java
浏览文件 @
d3eb78e7
...
...
@@ -40,6 +40,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
*/
@ScriptClass
(
"Float32Array"
)
public
final
class
NativeFloat32Array
extends
ArrayBufferView
{
/**
* The size in bytes of each element in the array.
*/
@Property
(
attributes
=
Attribute
.
NOT_ENUMERABLE
|
Attribute
.
NOT_WRITABLE
|
Attribute
.
NOT_CONFIGURABLE
,
where
=
Where
.
CONSTRUCTOR
)
public
static
final
int
BYTES_PER_ELEMENT
=
4
;
...
...
src/jdk/nashorn/internal/objects/NativeFloat64Array.java
浏览文件 @
d3eb78e7
...
...
@@ -40,6 +40,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
*/
@ScriptClass
(
"Float64Array"
)
public
final
class
NativeFloat64Array
extends
ArrayBufferView
{
/**
* The size in bytes of each element in the array.
*/
@Property
(
attributes
=
Attribute
.
NOT_ENUMERABLE
|
Attribute
.
NOT_WRITABLE
|
Attribute
.
NOT_CONFIGURABLE
,
where
=
Where
.
CONSTRUCTOR
)
public
static
final
int
BYTES_PER_ELEMENT
=
8
;
...
...
src/jdk/nashorn/internal/objects/NativeInt16Array.java
浏览文件 @
d3eb78e7
...
...
@@ -39,6 +39,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
*/
@ScriptClass
(
"Int16Array"
)
public
final
class
NativeInt16Array
extends
ArrayBufferView
{
/**
* The size in bytes of each element in the array.
*/
@Property
(
attributes
=
Attribute
.
NOT_ENUMERABLE
|
Attribute
.
NOT_WRITABLE
|
Attribute
.
NOT_CONFIGURABLE
,
where
=
Where
.
CONSTRUCTOR
)
public
static
final
int
BYTES_PER_ELEMENT
=
2
;
...
...
src/jdk/nashorn/internal/objects/NativeInt32Array.java
浏览文件 @
d3eb78e7
...
...
@@ -39,6 +39,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
*/
@ScriptClass
(
"Int32Array"
)
public
final
class
NativeInt32Array
extends
ArrayBufferView
{
/**
* The size in bytes of each element in the array.
*/
@Property
(
attributes
=
Attribute
.
NOT_ENUMERABLE
|
Attribute
.
NOT_WRITABLE
|
Attribute
.
NOT_CONFIGURABLE
,
where
=
Where
.
CONSTRUCTOR
)
public
static
final
int
BYTES_PER_ELEMENT
=
4
;
...
...
src/jdk/nashorn/internal/objects/NativeInt8Array.java
浏览文件 @
d3eb78e7
...
...
@@ -39,6 +39,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
*/
@ScriptClass
(
"Int8Array"
)
public
final
class
NativeInt8Array
extends
ArrayBufferView
{
/**
* The size in bytes of each element in the array.
*/
@Property
(
attributes
=
Attribute
.
NOT_ENUMERABLE
|
Attribute
.
NOT_WRITABLE
|
Attribute
.
NOT_CONFIGURABLE
,
where
=
Where
.
CONSTRUCTOR
)
public
static
final
int
BYTES_PER_ELEMENT
=
1
;
...
...
src/jdk/nashorn/internal/objects/NativeUint16Array.java
浏览文件 @
d3eb78e7
...
...
@@ -39,6 +39,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
*/
@ScriptClass
(
"Uint16Array"
)
public
final
class
NativeUint16Array
extends
ArrayBufferView
{
/**
* The size in bytes of each element in the array.
*/
@Property
(
attributes
=
Attribute
.
NOT_ENUMERABLE
|
Attribute
.
NOT_WRITABLE
|
Attribute
.
NOT_CONFIGURABLE
,
where
=
Where
.
CONSTRUCTOR
)
public
static
final
int
BYTES_PER_ELEMENT
=
2
;
...
...
src/jdk/nashorn/internal/objects/NativeUint32Array.java
浏览文件 @
d3eb78e7
...
...
@@ -40,6 +40,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
*/
@ScriptClass
(
"Uint32Array"
)
public
final
class
NativeUint32Array
extends
ArrayBufferView
{
/**
* The size in bytes of each element in the array.
*/
@Property
(
attributes
=
Attribute
.
NOT_ENUMERABLE
|
Attribute
.
NOT_WRITABLE
|
Attribute
.
NOT_CONFIGURABLE
,
where
=
Where
.
CONSTRUCTOR
)
public
static
final
int
BYTES_PER_ELEMENT
=
4
;
...
...
src/jdk/nashorn/internal/objects/NativeUint8Array.java
浏览文件 @
d3eb78e7
...
...
@@ -39,6 +39,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
*/
@ScriptClass
(
"Uint8Array"
)
public
final
class
NativeUint8Array
extends
ArrayBufferView
{
/**
* The size in bytes of each element in the array.
*/
@Property
(
attributes
=
Attribute
.
NOT_ENUMERABLE
|
Attribute
.
NOT_WRITABLE
|
Attribute
.
NOT_CONFIGURABLE
,
where
=
Where
.
CONSTRUCTOR
)
public
static
final
int
BYTES_PER_ELEMENT
=
1
;
...
...
src/jdk/nashorn/internal/objects/NativeUint8ClampedArray.java
浏览文件 @
d3eb78e7
...
...
@@ -40,6 +40,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
*/
@ScriptClass
(
"Uint8ClampedArray"
)
public
final
class
NativeUint8ClampedArray
extends
ArrayBufferView
{
/**
* The size in bytes of each element in the array.
*/
@Property
(
attributes
=
Attribute
.
NOT_ENUMERABLE
|
Attribute
.
NOT_WRITABLE
|
Attribute
.
NOT_CONFIGURABLE
,
where
=
Where
.
CONSTRUCTOR
)
public
static
final
int
BYTES_PER_ELEMENT
=
1
;
...
...
src/jdk/nashorn/internal/runtime/JSONFunctions.java
浏览文件 @
d3eb78e7
...
...
@@ -36,6 +36,8 @@ import jdk.nashorn.internal.ir.UnaryNode;
import
jdk.nashorn.internal.parser.JSONParser
;
import
jdk.nashorn.internal.parser.TokenType
;
import
jdk.nashorn.internal.runtime.linker.Bootstrap
;
import
static
jdk
.
nashorn
.
internal
.
runtime
.
arrays
.
ArrayIndex
.
getArrayIndexNoThrow
;
import
static
jdk
.
nashorn
.
internal
.
runtime
.
arrays
.
ArrayIndex
.
isValidArrayIndex
;
/**
* Utilities used by "JSON" object implementation.
...
...
@@ -94,7 +96,7 @@ public final class JSONFunctions {
if
(
reviver
instanceof
ScriptFunction
)
{
assert
global
instanceof
GlobalObject
;
final
ScriptObject
root
=
((
GlobalObject
)
global
).
newObject
();
root
.
set
(
""
,
unfiltered
,
root
.
isStrictContext
()
);
root
.
addOwnProperty
(
""
,
Property
.
WRITABLE_ENUMERABLE_CONFIGURABLE
,
unfiltered
);
return
walk
(
root
,
""
,
(
ScriptFunction
)
reviver
);
}
return
unfiltered
;
...
...
@@ -115,7 +117,7 @@ public final class JSONFunctions {
if
(
newElement
==
ScriptRuntime
.
UNDEFINED
)
{
valueObj
.
delete
(
key
,
strict
);
}
else
{
valueObj
.
set
(
key
,
newElement
,
strict
);
setPropertyValue
(
valueObj
,
key
,
newElement
,
strict
);
}
}
}
...
...
@@ -175,7 +177,9 @@ public final class JSONFunctions {
final
PropertyNode
pNode
=
(
PropertyNode
)
elem
;
final
Node
valueNode
=
pNode
.
getValue
();
object
.
set
(
pNode
.
getKeyName
(),
convertNode
(
global
,
valueNode
),
strict
);
final
String
name
=
pNode
.
getKeyName
();
final
Object
value
=
convertNode
(
global
,
valueNode
);
setPropertyValue
(
object
,
name
,
value
,
strict
);
}
return
object
;
...
...
@@ -188,6 +192,21 @@ public final class JSONFunctions {
}
}
// add a new property if does not exist already, or else set old property
private
static
void
setPropertyValue
(
final
ScriptObject
sobj
,
final
String
name
,
final
Object
value
,
final
boolean
strict
)
{
final
int
index
=
getArrayIndexNoThrow
(
name
);
if
(
isValidArrayIndex
(
index
))
{
// array index key
sobj
.
defineOwnProperty
(
index
,
value
);
}
else
if
(
sobj
.
getMap
().
findProperty
(
name
)
!=
null
)
{
// pre-existing non-inherited property, call set
sobj
.
set
(
name
,
value
,
strict
);
}
else
{
// add new property
sobj
.
addOwnProperty
(
name
,
Property
.
WRITABLE_ENUMERABLE_CONFIGURABLE
,
value
);
}
}
// does the given IR node represent a numeric array?
private
static
boolean
isNumericArray
(
final
Node
[]
values
)
{
for
(
final
Node
node
:
values
)
{
...
...
src/jdk/nashorn/internal/runtime/Property.java
浏览文件 @
d3eb78e7
...
...
@@ -52,6 +52,8 @@ public abstract class Property {
* we can use leave flag byte initialized with (the default) zero value.
*/
public
static
final
int
WRITABLE_ENUMERABLE_CONFIGURABLE
=
0b0000_0000_0000
;
/** ECMA 8.6.1 - Is this property not writable? */
public
static
final
int
NOT_WRITABLE
=
0b0000_0000_0001
;
...
...
test/script/basic/JDK-8015354.js
0 → 100644
浏览文件 @
d3eb78e7
/*
* 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-8015354: JSON.parse should not use [[Put]] but use [[DefineOwnProperty]] instead
*
* @test
* @run
*/
Object
.
defineProperty
(
Object
.
prototype
,
""
,
{
set
:
function
(
v
)
{
throw
"
set called
"
;
}
});
JSON
.
parse
(
'
{}
'
,
function
(){});
Object
.
defineProperty
(
Object
.
prototype
,
"
foo
"
,{
set
:
function
(
v
)
{
throw
"
set called
"
;
}
});
JSON
.
parse
(
'
{"foo": 1}
'
);
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录