move newMultiArray over to context

This commit is contained in:
Andreas Gal 2014-08-06 13:49:46 -07:00
Родитель c17f2bda62
Коммит 4dbfc348c8
3 изменённых файлов: 12 добавлений и 11 удалений

Просмотреть файл

@ -214,13 +214,3 @@ Classes.prototype.newArray = function(typeName, size) {
return new (this.getClass(typeName).constructor)(size);
}
Classes.prototype.newMultiArray = function(typeName, lengths) {
var length = lengths[0];
var array = this.newArray(typeName, length);
if (lengths.length > 1) {
lengths = lengths.slice(1);
for (var i=0; i<length; i++)
array[i] = this.newMultiArray(typeName.substr(1), lengths);
}
return array;
}

Просмотреть файл

@ -238,3 +238,14 @@ Context.prototype.notify = function(obj, notifyAll) {
ctx.wakeup(obj);
});
}
Context.prototype.newMultiArray = function(typeName, lengths) {
var length = lengths[0];
var array = CLASSES.newArray(typeName, length);
if (lengths.length > 1) {
lengths = lengths.slice(1);
for (var i=0; i<length; i++)
array[i] = this.newMultiArray(typeName.substr(1), lengths);
}
return array;
}

2
vm.js
Просмотреть файл

@ -837,7 +837,7 @@ VM.execute = function(ctx) {
var lengths = new Array(dimensions);
for (var i=0; i<dimensions; i++)
lengths[i] = stack.pop();
stack.push(CLASSES.newMultiArray(classInfo.className, lengths.reverse()));
stack.push(ctx.newMultiArray(classInfo.className, lengths.reverse()));
break;
case 0xbe: // arraylength
var obj = stack.pop();