private void emitResultConversion(SkinnyMethodAdapter mv, AsmClassBuilder builder, JITSignature signature) { if (signature.hasResultConverter()) { mv.aload(0); // [ result, this ] mv.getfield(builder.getClassName(), builder.getResultConverterFieldName(), ci(NativeDataConverter.class)); mv.swap(); // [ converter, result ] mv.aload(1); mv.swap(); // [ converter, thread context, result ] mv.invokevirtual(p(NativeDataConverter.class), "fromNative", sig(IRubyObject.class, ThreadContext.class, IRubyObject.class)); } }
private void emitResultConversion(SkinnyMethodAdapter mv, AsmClassBuilder builder, JITSignature signature) { if (signature.hasResultConverter()) { mv.aload(0); // [ result, this ] mv.getfield(builder.getClassName(), builder.getResultConverterFieldName(), ci(NativeDataConverter.class)); mv.swap(); // [ converter, result ] mv.aload(1); mv.swap(); // [ converter, thread context, result ] mv.invokevirtual(p(NativeDataConverter.class), "fromNative", sig(IRubyObject.class, ThreadContext.class, IRubyObject.class)); } }
private void emitResultConversion(SkinnyMethodAdapter mv, AsmClassBuilder builder, JITSignature signature) { if (signature.hasResultConverter()) { mv.aload(0); // [ result, this ] mv.getfield(builder.getClassName(), builder.getResultConverterFieldName(), ci(NativeDataConverter.class)); mv.swap(); // [ converter, result ] mv.aload(1); mv.swap(); // [ converter, thread context, result ] mv.invokevirtual(p(NativeDataConverter.class), "fromNative", sig(IRubyObject.class, ThreadContext.class, IRubyObject.class)); } }
private void emitResultConversion(SkinnyMethodAdapter mv, AsmClassBuilder builder, JITSignature signature) { if (signature.hasResultConverter()) { mv.aload(0); // [ result, this ] mv.getfield(builder.getClassName(), builder.getResultConverterFieldName(), ci(NativeDataConverter.class)); mv.swap(); // [ converter, result ] mv.aload(1); mv.swap(); // [ converter, thread context, result ] mv.invokevirtual(p(NativeDataConverter.class), "fromNative", sig(IRubyObject.class, ThreadContext.class, IRubyObject.class)); } }