mirror of
https://github.com/openjdk/jdk.git
synced 2026-02-08 09:35:16 +00:00
8014735: Typed Array, BYTES_PER_ELEMENT should be a class property
Reviewed-by: lagergren, jlaskey
This commit is contained in:
parent
41974c2e07
commit
2cd9f2dde4
@ -28,6 +28,7 @@ package jdk.nashorn.internal.objects;
|
||||
import jdk.nashorn.internal.objects.annotations.Attribute;
|
||||
import jdk.nashorn.internal.objects.annotations.Getter;
|
||||
import jdk.nashorn.internal.objects.annotations.ScriptClass;
|
||||
import jdk.nashorn.internal.objects.annotations.Where;
|
||||
import jdk.nashorn.internal.runtime.JSType;
|
||||
import jdk.nashorn.internal.runtime.ScriptObject;
|
||||
import jdk.nashorn.internal.runtime.ScriptRuntime;
|
||||
@ -58,11 +59,6 @@ abstract class ArrayBufferView extends ScriptObject {
|
||||
return factory().bytesPerElement;
|
||||
}
|
||||
|
||||
@Getter(attributes = Attribute.NOT_ENUMERABLE | Attribute.NOT_WRITABLE | Attribute.NOT_CONFIGURABLE)
|
||||
public static Object BYTES_PER_ELEMENT(final Object self) {
|
||||
return ((ArrayBufferView)self).bytesPerElement();
|
||||
}
|
||||
|
||||
@Getter(attributes = Attribute.NOT_ENUMERABLE | Attribute.NOT_WRITABLE | Attribute.NOT_CONFIGURABLE)
|
||||
public static Object buffer(final Object self) {
|
||||
return ((ArrayDataImpl)((ArrayBufferView)self).getArray()).buffer;
|
||||
|
||||
@ -28,7 +28,9 @@ package jdk.nashorn.internal.objects;
|
||||
import jdk.nashorn.internal.objects.annotations.Attribute;
|
||||
import jdk.nashorn.internal.objects.annotations.Constructor;
|
||||
import jdk.nashorn.internal.objects.annotations.Function;
|
||||
import jdk.nashorn.internal.objects.annotations.Property;
|
||||
import jdk.nashorn.internal.objects.annotations.ScriptClass;
|
||||
import jdk.nashorn.internal.objects.annotations.Where;
|
||||
import jdk.nashorn.internal.runtime.JSType;
|
||||
import jdk.nashorn.internal.runtime.ScriptObject;
|
||||
import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
@ -38,7 +40,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
*/
|
||||
@ScriptClass("Float32Array")
|
||||
public final class NativeFloat32Array extends ArrayBufferView {
|
||||
private static final int BYTES_PER_ELEMENT = 4;
|
||||
@Property(attributes = Attribute.NOT_ENUMERABLE | Attribute.NOT_WRITABLE | Attribute.NOT_CONFIGURABLE, where = Where.CONSTRUCTOR)
|
||||
public static final int BYTES_PER_ELEMENT = 4;
|
||||
|
||||
private static final Factory FACTORY = new Factory(BYTES_PER_ELEMENT) {
|
||||
@Override
|
||||
public ArrayBufferView construct(final NativeArrayBuffer buffer, final int byteOffset, final int length) {
|
||||
|
||||
@ -28,7 +28,9 @@ package jdk.nashorn.internal.objects;
|
||||
import jdk.nashorn.internal.objects.annotations.Attribute;
|
||||
import jdk.nashorn.internal.objects.annotations.Constructor;
|
||||
import jdk.nashorn.internal.objects.annotations.Function;
|
||||
import jdk.nashorn.internal.objects.annotations.Property;
|
||||
import jdk.nashorn.internal.objects.annotations.ScriptClass;
|
||||
import jdk.nashorn.internal.objects.annotations.Where;
|
||||
import jdk.nashorn.internal.runtime.JSType;
|
||||
import jdk.nashorn.internal.runtime.ScriptObject;
|
||||
import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
@ -38,7 +40,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
*/
|
||||
@ScriptClass("Float64Array")
|
||||
public final class NativeFloat64Array extends ArrayBufferView {
|
||||
private static final int BYTES_PER_ELEMENT = 8;
|
||||
@Property(attributes = Attribute.NOT_ENUMERABLE | Attribute.NOT_WRITABLE | Attribute.NOT_CONFIGURABLE, where = Where.CONSTRUCTOR)
|
||||
public static final int BYTES_PER_ELEMENT = 8;
|
||||
|
||||
private static final Factory FACTORY = new Factory(BYTES_PER_ELEMENT) {
|
||||
@Override
|
||||
public ArrayBufferView construct(final NativeArrayBuffer buffer, final int byteOffset, final int length) {
|
||||
|
||||
@ -28,7 +28,9 @@ package jdk.nashorn.internal.objects;
|
||||
import jdk.nashorn.internal.objects.annotations.Attribute;
|
||||
import jdk.nashorn.internal.objects.annotations.Constructor;
|
||||
import jdk.nashorn.internal.objects.annotations.Function;
|
||||
import jdk.nashorn.internal.objects.annotations.Property;
|
||||
import jdk.nashorn.internal.objects.annotations.ScriptClass;
|
||||
import jdk.nashorn.internal.objects.annotations.Where;
|
||||
import jdk.nashorn.internal.runtime.ScriptObject;
|
||||
import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
|
||||
@ -37,7 +39,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
*/
|
||||
@ScriptClass("Int16Array")
|
||||
public final class NativeInt16Array extends ArrayBufferView {
|
||||
private static final int BYTES_PER_ELEMENT = 2;
|
||||
@Property(attributes = Attribute.NOT_ENUMERABLE | Attribute.NOT_WRITABLE | Attribute.NOT_CONFIGURABLE, where = Where.CONSTRUCTOR)
|
||||
public static final int BYTES_PER_ELEMENT = 2;
|
||||
|
||||
private static final Factory FACTORY = new Factory(BYTES_PER_ELEMENT) {
|
||||
@Override
|
||||
public ArrayBufferView construct(final NativeArrayBuffer buffer, final int byteOffset, final int length) {
|
||||
|
||||
@ -28,7 +28,9 @@ package jdk.nashorn.internal.objects;
|
||||
import jdk.nashorn.internal.objects.annotations.Attribute;
|
||||
import jdk.nashorn.internal.objects.annotations.Constructor;
|
||||
import jdk.nashorn.internal.objects.annotations.Function;
|
||||
import jdk.nashorn.internal.objects.annotations.Property;
|
||||
import jdk.nashorn.internal.objects.annotations.ScriptClass;
|
||||
import jdk.nashorn.internal.objects.annotations.Where;
|
||||
import jdk.nashorn.internal.runtime.ScriptObject;
|
||||
import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
|
||||
@ -37,7 +39,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
*/
|
||||
@ScriptClass("Int32Array")
|
||||
public final class NativeInt32Array extends ArrayBufferView {
|
||||
private static final int BYTES_PER_ELEMENT = 4;
|
||||
@Property(attributes = Attribute.NOT_ENUMERABLE | Attribute.NOT_WRITABLE | Attribute.NOT_CONFIGURABLE, where = Where.CONSTRUCTOR)
|
||||
public static final int BYTES_PER_ELEMENT = 4;
|
||||
|
||||
private static final Factory FACTORY = new Factory(BYTES_PER_ELEMENT) {
|
||||
@Override
|
||||
public ArrayBufferView construct(final NativeArrayBuffer buffer, final int byteOffset, final int length) {
|
||||
|
||||
@ -28,7 +28,9 @@ package jdk.nashorn.internal.objects;
|
||||
import jdk.nashorn.internal.objects.annotations.Attribute;
|
||||
import jdk.nashorn.internal.objects.annotations.Constructor;
|
||||
import jdk.nashorn.internal.objects.annotations.Function;
|
||||
import jdk.nashorn.internal.objects.annotations.Property;
|
||||
import jdk.nashorn.internal.objects.annotations.ScriptClass;
|
||||
import jdk.nashorn.internal.objects.annotations.Where;
|
||||
import jdk.nashorn.internal.runtime.ScriptObject;
|
||||
import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
|
||||
@ -37,7 +39,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
*/
|
||||
@ScriptClass("Int8Array")
|
||||
public final class NativeInt8Array extends ArrayBufferView {
|
||||
private static final int BYTES_PER_ELEMENT = 1;
|
||||
@Property(attributes = Attribute.NOT_ENUMERABLE | Attribute.NOT_WRITABLE | Attribute.NOT_CONFIGURABLE, where = Where.CONSTRUCTOR)
|
||||
public static final int BYTES_PER_ELEMENT = 1;
|
||||
|
||||
private static final Factory FACTORY = new Factory(BYTES_PER_ELEMENT) {
|
||||
@Override
|
||||
public ArrayBufferView construct(final NativeArrayBuffer buffer, final int byteOffset, final int length) {
|
||||
|
||||
@ -28,7 +28,9 @@ package jdk.nashorn.internal.objects;
|
||||
import jdk.nashorn.internal.objects.annotations.Attribute;
|
||||
import jdk.nashorn.internal.objects.annotations.Constructor;
|
||||
import jdk.nashorn.internal.objects.annotations.Function;
|
||||
import jdk.nashorn.internal.objects.annotations.Property;
|
||||
import jdk.nashorn.internal.objects.annotations.ScriptClass;
|
||||
import jdk.nashorn.internal.objects.annotations.Where;
|
||||
import jdk.nashorn.internal.runtime.ScriptObject;
|
||||
import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
|
||||
@ -37,7 +39,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
*/
|
||||
@ScriptClass("Uint16Array")
|
||||
public final class NativeUint16Array extends ArrayBufferView {
|
||||
private static final int BYTES_PER_ELEMENT = 2;
|
||||
@Property(attributes = Attribute.NOT_ENUMERABLE | Attribute.NOT_WRITABLE | Attribute.NOT_CONFIGURABLE, where = Where.CONSTRUCTOR)
|
||||
public static final int BYTES_PER_ELEMENT = 2;
|
||||
|
||||
private static final Factory FACTORY = new Factory(BYTES_PER_ELEMENT) {
|
||||
@Override
|
||||
public ArrayBufferView construct(final NativeArrayBuffer buffer, final int byteOffset, final int length) {
|
||||
|
||||
@ -28,7 +28,9 @@ package jdk.nashorn.internal.objects;
|
||||
import jdk.nashorn.internal.objects.annotations.Attribute;
|
||||
import jdk.nashorn.internal.objects.annotations.Constructor;
|
||||
import jdk.nashorn.internal.objects.annotations.Function;
|
||||
import jdk.nashorn.internal.objects.annotations.Property;
|
||||
import jdk.nashorn.internal.objects.annotations.ScriptClass;
|
||||
import jdk.nashorn.internal.objects.annotations.Where;
|
||||
import jdk.nashorn.internal.runtime.JSType;
|
||||
import jdk.nashorn.internal.runtime.ScriptObject;
|
||||
import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
@ -38,7 +40,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
*/
|
||||
@ScriptClass("Uint32Array")
|
||||
public final class NativeUint32Array extends ArrayBufferView {
|
||||
private static final int BYTES_PER_ELEMENT = 4;
|
||||
@Property(attributes = Attribute.NOT_ENUMERABLE | Attribute.NOT_WRITABLE | Attribute.NOT_CONFIGURABLE, where = Where.CONSTRUCTOR)
|
||||
public static final int BYTES_PER_ELEMENT = 4;
|
||||
|
||||
private static final Factory FACTORY = new Factory(BYTES_PER_ELEMENT) {
|
||||
@Override
|
||||
public ArrayBufferView construct(final NativeArrayBuffer buffer, final int byteBegin, final int length) {
|
||||
|
||||
@ -28,7 +28,9 @@ package jdk.nashorn.internal.objects;
|
||||
import jdk.nashorn.internal.objects.annotations.Attribute;
|
||||
import jdk.nashorn.internal.objects.annotations.Constructor;
|
||||
import jdk.nashorn.internal.objects.annotations.Function;
|
||||
import jdk.nashorn.internal.objects.annotations.Property;
|
||||
import jdk.nashorn.internal.objects.annotations.ScriptClass;
|
||||
import jdk.nashorn.internal.objects.annotations.Where;
|
||||
import jdk.nashorn.internal.runtime.ScriptObject;
|
||||
import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
|
||||
@ -37,7 +39,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
*/
|
||||
@ScriptClass("Uint8Array")
|
||||
public final class NativeUint8Array extends ArrayBufferView {
|
||||
private static final int BYTES_PER_ELEMENT = 1;
|
||||
@Property(attributes = Attribute.NOT_ENUMERABLE | Attribute.NOT_WRITABLE | Attribute.NOT_CONFIGURABLE, where = Where.CONSTRUCTOR)
|
||||
public static final int BYTES_PER_ELEMENT = 1;
|
||||
|
||||
private static final Factory FACTORY = new Factory(BYTES_PER_ELEMENT) {
|
||||
@Override
|
||||
public ArrayBufferView construct(final NativeArrayBuffer buffer, final int byteOffset, final int length) {
|
||||
|
||||
@ -28,7 +28,9 @@ package jdk.nashorn.internal.objects;
|
||||
import jdk.nashorn.internal.objects.annotations.Attribute;
|
||||
import jdk.nashorn.internal.objects.annotations.Constructor;
|
||||
import jdk.nashorn.internal.objects.annotations.Function;
|
||||
import jdk.nashorn.internal.objects.annotations.Property;
|
||||
import jdk.nashorn.internal.objects.annotations.ScriptClass;
|
||||
import jdk.nashorn.internal.objects.annotations.Where;
|
||||
import jdk.nashorn.internal.runtime.JSType;
|
||||
import jdk.nashorn.internal.runtime.ScriptObject;
|
||||
import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
@ -38,7 +40,9 @@ import jdk.nashorn.internal.runtime.arrays.ArrayData;
|
||||
*/
|
||||
@ScriptClass("Uint8ClampedArray")
|
||||
public final class NativeUint8ClampedArray extends ArrayBufferView {
|
||||
private static final int BYTES_PER_ELEMENT = 1;
|
||||
@Property(attributes = Attribute.NOT_ENUMERABLE | Attribute.NOT_WRITABLE | Attribute.NOT_CONFIGURABLE, where = Where.CONSTRUCTOR)
|
||||
public static final int BYTES_PER_ELEMENT = 1;
|
||||
|
||||
private static final Factory FACTORY = new Factory(BYTES_PER_ELEMENT) {
|
||||
@Override
|
||||
public ArrayBufferView construct(final NativeArrayBuffer buffer, final int byteOffset, final int length) {
|
||||
|
||||
43
nashorn/test/script/basic/JDK-8014735.js
Normal file
43
nashorn/test/script/basic/JDK-8014735.js
Normal file
@ -0,0 +1,43 @@
|
||||
/*
|
||||
* 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-8014735: Typed Array, BYTES_PER_ELEMENT should be a class property
|
||||
*
|
||||
* @test
|
||||
* @run
|
||||
*/
|
||||
|
||||
function bytesPerElement(func) {
|
||||
print(func.name + ".BYTES_PER_ELEMENT = " + func.BYTES_PER_ELEMENT);
|
||||
}
|
||||
|
||||
bytesPerElement(Int8Array);
|
||||
bytesPerElement(Int16Array);
|
||||
bytesPerElement(Int32Array);
|
||||
bytesPerElement(Uint8Array);
|
||||
bytesPerElement(Uint8ClampedArray);
|
||||
bytesPerElement(Uint16Array);
|
||||
bytesPerElement(Uint32Array);
|
||||
bytesPerElement(Float32Array);
|
||||
bytesPerElement(Float64Array);
|
||||
9
nashorn/test/script/basic/JDK-8014735.js.EXPECTED
Normal file
9
nashorn/test/script/basic/JDK-8014735.js.EXPECTED
Normal file
@ -0,0 +1,9 @@
|
||||
Int8Array.BYTES_PER_ELEMENT = 1
|
||||
Int16Array.BYTES_PER_ELEMENT = 2
|
||||
Int32Array.BYTES_PER_ELEMENT = 4
|
||||
Uint8Array.BYTES_PER_ELEMENT = 1
|
||||
Uint8ClampedArray.BYTES_PER_ELEMENT = 1
|
||||
Uint16Array.BYTES_PER_ELEMENT = 2
|
||||
Uint32Array.BYTES_PER_ELEMENT = 4
|
||||
Float32Array.BYTES_PER_ELEMENT = 4
|
||||
Float64Array.BYTES_PER_ELEMENT = 8
|
||||
@ -43,7 +43,7 @@ function tohex(d, w) {
|
||||
function arrstr(a, n, w) {
|
||||
var s = "";
|
||||
if (typeof n == "undefined") n = a.length;
|
||||
if (typeof w == "undefined") w = a.BYTES_PER_ELEMENT * 2;
|
||||
if (typeof w == "undefined") w = a.constructor.BYTES_PER_ELEMENT * 2;
|
||||
for (var i = 0; i < n; i++) {
|
||||
s += tohex(a[i], w);
|
||||
}
|
||||
@ -96,7 +96,7 @@ function fillArray(a, start) {
|
||||
var b = new ArrayBuffer(8);
|
||||
for (var i in types) {
|
||||
var x = new types[i](b);
|
||||
print(x.byteOffset, x.byteLength, x.length, x.BYTES_PER_ELEMENT);
|
||||
print(x.byteOffset, x.byteLength, x.length, x.constructor.BYTES_PER_ELEMENT);
|
||||
assertTrue(function(){ return x.constructor === types[i] });
|
||||
}
|
||||
})();
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user