@@ -123,7 +123,7 @@ class Reflect {
#else js
func.apply(o,args)
#else neko
- __dollar__call(func,o,args.__a)
+ __dollar__call(func,o,args.neko())
#else error
#end
;
@@ -274,7 +274,7 @@ class Type {
cl["apply"](o,args);
return o;
- return untyped __dollar__call(__dollar__objget(cl,__dollar__hash("new".__s)),cl,args.__a);
+ return untyped __dollar__call(__dollar__objget(cl,__dollar__hash("new".__s)),cl,args.neko());
if( args.length >= 6 ) throw "Too many arguments";
return untyped __new__(cl,args[0],args[1],args[2],args[3],args[4],args[5]);
@@ -61,7 +61,7 @@ class NekoArray__<T> implements Array<T> {
}
public function copy() {
- return untyped Array.new1(__dollar__acopy(this.__a),this.length);
+ return untyped Array.new1(__dollar__asub(this.__a,0,this.length),this.length);
public function iterator() {
@@ -94,10 +94,11 @@ class NekoArray__<T> implements Array<T> {
public function join(delim : String) {
var s = new StringBuf();
- var it = iterator();
- for( i in it ) {
- s.add(i);
- if( it.hasNext() )
+ var a = untyped this.__a;
+ var max = this.length - 1;
+ for( p in 0...this.length ) {
+ s.add(a[p]);
+ if( p != max )
s.add(delim);
return s.toString();
@@ -309,5 +310,16 @@ class NekoArray__<T> implements Array<T> {
+ private function __neko() {
+ untyped {
+ var a = this.__a;
+ var sz = __dollar__asize(a);
+ if( sz != this.length ) {
+ a = __dollar__asub(a,0,this.length);
+ this.__a = a;
+ }
+ return a;