private void buildObjectArray(String type, Object[] sourceArray, ArrayCallback callback) { if (sourceArray.length == 0) { method.getstatic(p(IRubyObject.class), "NULL_ARRAY", ci(IRubyObject[].class)); } else if (sourceArray.length <= Helpers.MAX_SPECIFIC_ARITY_OBJECT_ARRAY) { // if we have a specific-arity helper to construct an array for us, use that for (int i = 0; i < sourceArray.length; i++) { callback.nextValue(this, sourceArray, i); } invokeUtilityMethod("constructObjectArray", sig(IRubyObject[].class, params(IRubyObject.class, sourceArray.length))); } else { // brute force construction inline method.pushInt(sourceArray.length); method.anewarray(type); for (int i = 0; i < sourceArray.length; i++) { method.dup(); method.pushInt(i); callback.nextValue(this, sourceArray, i); method.arraystore(); } } }
private void buildObjectArray(String type, Object[] sourceArray, ArrayCallback callback) { if (sourceArray.length == 0) { method.getstatic(p(IRubyObject.class), "NULL_ARRAY", ci(IRubyObject[].class)); } else if (sourceArray.length <= Helpers.MAX_SPECIFIC_ARITY_OBJECT_ARRAY) { // if we have a specific-arity helper to construct an array for us, use that for (int i = 0; i < sourceArray.length; i++) { callback.nextValue(this, sourceArray, i); } invokeUtilityMethod("constructObjectArray", sig(IRubyObject[].class, params(IRubyObject.class, sourceArray.length))); } else { // brute force construction inline method.pushInt(sourceArray.length); method.anewarray(type); for (int i = 0; i < sourceArray.length; i++) { method.dup(); method.pushInt(i); callback.nextValue(this, sourceArray, i); method.arraystore(); } } }
m.anewarray(p(IRubyObject.class)); // new IRubyObject[size] for ( int i = 1; i <= paramCount; i++ ) { m.dup();
m.anewarray(p(IRubyObject.class)); // new IRubyObject[size] for ( int i = 1; i <= paramCount; i++ ) { m.dup();
mv.anewarray(p(IRubyObject.class));
mv.anewarray(p(IRubyObject.class));
mv.anewarray(p(IRubyObject.class));
mv.anewarray(p(IRubyObject.class));
method.aload(StandardASMCompiler.THREADCONTEXT_INDEX); method.pushInt(sourceArray.length); method.anewarray(p(IRubyObject.class)); method.invokestatic(script.getClassname(), newMethodName, sig(IRubyObject[].class, "L" + script.getClassname() + ";", ThreadContext.class, IRubyObject[].class));
method.aload(StandardASMCompiler.THREADCONTEXT_INDEX); method.pushInt(sourceArray.length); method.anewarray(p(IRubyObject.class)); method.invokestatic(script.getClassname(), newMethodName, sig(IRubyObject[].class, "L" + script.getClassname() + ";", ThreadContext.class, IRubyObject[].class));