nashorn/test/script/basic/NASHORN-258.js
author sundar
Wed, 21 Aug 2013 17:28:53 +0530
changeset 19619 4085b74056ee
parent 16531 8f1b0de50d07
child 24778 2ff5d7041566
permissions -rw-r--r--
8023368: Instance __proto__ property should exist and be writable. Reviewed-by: attila, hannesw
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     1
/*
16151
97c1e756ae1e 8005663: Update copyright year to 2013
jlaskey
parents: 16147
diff changeset
     2
 * Copyright (c) 2010, 2013, Oracle and/or its affiliates. All rights reserved.
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     3
 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     4
 * 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     5
 * This code is free software; you can redistribute it and/or modify it
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     6
 * under the terms of the GNU General Public License version 2 only, as
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     7
 * published by the Free Software Foundation.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     8
 * 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
     9
 * This code is distributed in the hope that it will be useful, but WITHOUT
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    10
 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    11
 * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    12
 * version 2 for more details (a copy is included in the LICENSE file that
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    13
 * accompanied this code).
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    14
 * 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    15
 * You should have received a copy of the GNU General Public License version
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    16
 * 2 along with this work; if not, write to the Free Software Foundation,
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    17
 * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    18
 * 
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    19
 * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    20
 * or visit www.oracle.com if you need additional information or have any
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    21
 * questions.
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    22
 */
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    23
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    24
/**
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    25
 * NASHORN-258 : Broken slot assignments to non constant members of multidimensional arrays in OP=
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    26
 *
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    27
 * @test
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    28
 * @run
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    29
 */
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    30
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    31
function test3(a) {
16531
8f1b0de50d07 8017010: index evaluation to a temporary location for index operator much change temporaries to slots, but never scoped vars
lagergren
parents: 16151
diff changeset
    32
    for (i = 0; i < a.length ; i++) {
8f1b0de50d07 8017010: index evaluation to a temporary location for index operator much change temporaries to slots, but never scoped vars
lagergren
parents: 16151
diff changeset
    33
	for (j = 0; j < a[i].length ; j++) {
8f1b0de50d07 8017010: index evaluation to a temporary location for index operator much change temporaries to slots, but never scoped vars
lagergren
parents: 16151
diff changeset
    34
	    for (k = 0; k < a[i][j].length ; k++) {
8f1b0de50d07 8017010: index evaluation to a temporary location for index operator much change temporaries to slots, but never scoped vars
lagergren
parents: 16151
diff changeset
    35
		a[i][j][k] *= 8;
8f1b0de50d07 8017010: index evaluation to a temporary location for index operator much change temporaries to slots, but never scoped vars
lagergren
parents: 16151
diff changeset
    36
	    }
8f1b0de50d07 8017010: index evaluation to a temporary location for index operator much change temporaries to slots, but never scoped vars
lagergren
parents: 16151
diff changeset
    37
	}
8f1b0de50d07 8017010: index evaluation to a temporary location for index operator much change temporaries to slots, but never scoped vars
lagergren
parents: 16151
diff changeset
    38
    }
8f1b0de50d07 8017010: index evaluation to a temporary location for index operator much change temporaries to slots, but never scoped vars
lagergren
parents: 16151
diff changeset
    39
}
8f1b0de50d07 8017010: index evaluation to a temporary location for index operator much change temporaries to slots, but never scoped vars
lagergren
parents: 16151
diff changeset
    40
8f1b0de50d07 8017010: index evaluation to a temporary location for index operator much change temporaries to slots, but never scoped vars
lagergren
parents: 16151
diff changeset
    41
function test3local(a) {
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    42
    for (var i = 0; i < a.length ; i++) {
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    43
	for (var j = 0; j < a[i].length ; j++) {
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    44
	    for (var k = 0; k < a[i][j].length ; k++) {
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    45
		a[i][j][k] *= 8;
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    46
	    }
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    47
	}
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    48
    }
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    49
}
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    50
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    51
var array = [ [[1,1,1],[1,1,1],[1,1,1]],
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    52
	      [[1,1,1],[1,1,1],[1,1,1]],
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    53
	      [[1,1,1],[1,1,1],[1,1,1]] ];
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    54
	      
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    55
test3(array);
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    56
print(array);
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    57
16531
8f1b0de50d07 8017010: index evaluation to a temporary location for index operator much change temporaries to slots, but never scoped vars
lagergren
parents: 16151
diff changeset
    58
test3local(array);
8f1b0de50d07 8017010: index evaluation to a temporary location for index operator much change temporaries to slots, but never scoped vars
lagergren
parents: 16151
diff changeset
    59
print(array);
16147
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    60
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    61
function outer() {
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    62
    
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    63
    var array2 = [ [[1,1,1],[1,1,1],[1,1,1]],
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    64
		   [[1,1,1],[1,1,1],[1,1,1]],
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    65
		   [[1,1,1],[1,1,1],[1,1,1]] ];
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    66
    
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    67
    var f =  function inner() {
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    68
	for (var i = 0; i < array2.length ; i++) {
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    69
	    for (var j = 0; j < array2[i].length ; j++) {
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    70
		array2[i][j][2] *= 8;
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    71
	    }
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    72
	}	
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    73
    };
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    74
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    75
    f();
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    76
    print(array2);
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    77
}
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    78
e63b63819133 8005403: Open-source Nashorn
jlaskey
parents:
diff changeset
    79
outer();