File path: /jruby-1.4.0/src/org/jruby/javasupport/proxy/JavaProxyConstructor.java | File path: /jruby-1.4.0/src/org/jruby/javasupport/proxy/JavaProxyConstructor.java | |||
Method name: Object invoke(Object, JavaProxyMethod, Object[])
|
Method name: Object invoke(Object, JavaProxyMethod, Object[])
|
|||
Number of AST nodes: 10 | Number of AST nodes: 10 | |||
1 | String name = m.getName();↵ | 1 | String name = m.getName();↵ | |
2 | DynamicMethod method = self.getMetaClass().searchMethod(name);↵ | 2 | DynamicMethod method = self.getMetaClass().searchMethod(name);↵ | |
3 | int v = method.getArity().getValue();↵ | 3 | int v = method.getArity().getValue();↵ | |
4 | IRubyObject[] newArgs = new IRubyObject[nargs.length];↵ | 4 | IRubyObject[] newArgs = new IRubyObject[nargs.length];↵ | |
5 | for (int i = nargs.length; --i >= 0; ) {↵ | 5 | for (int i = nargs.length; --i >= 0; ) {↵ | |
6 | newArgs[i] = JavaUtil.convertJavaToUsableRubyObject(runtime, nargs[i]);↵ | 6 | newArgs[i] = JavaUtil.convertJavaToUsableRubyObject(runtime, nargs[i]);↵ | |
7 | }↵ | 7 | }↵ | |
8 | ↵ | 8 | ↵ | |
9 | if (v < 0 || v == (newArgs.length)) {↵ | 9 | if (v < 0 || v == (newArgs.length)) {↵ | |
10 | return RuntimeHelpers.invoke(runtime.getCurrentContext(), self, name, newArgs).toJava(m.getReturnType());↵ | 10 | return RuntimeHelpers.invoke(runtime.getCurrentContext(), self, name, newArgs).toJava(m.getReturnType());↵ | |
11 | } else {↵ | 11 | } else {↵ | |
12 | RubyClass superClass = self.getMetaClass().getSuperClass();↵ | 12 | RubyClass superClass = self.getMetaClass().getSuperClass();↵ | |
13 | return RuntimeHelpers.invokeAs(runtime.getCurrentContext(), superClass, self, name, newArgs, Block.NULL_BLOCK).toJava(m.getReturnType());↵ | 13 | return RuntimeHelpers.invokeAs(runtime.getCurrentContext(), superClass, self, name, newArgs, Block.NULL_BLOCK).toJava(m.getReturnType());↵ | |
14 | } | 14 |
| |
See real code fragment | See real code fragment |
Number of common nesting structure subtrees | 1 |
Number of refactorable cases | 1 |
Number of non-refactorable cases | 0 |
Time elapsed for finding largest common nesting structure subtrees (ms) | 1.3 |
Clones location | Clones are in the same java file |
Number of node comparisons | 45 |
Number of mapped statements | 10 |
Number of unmapped statements in the first code fragment | 0 |
Number of unmapped statements in the second code fragment | 0 |
Time elapsed for statement mapping (ms) | 2.7 |
Clone type | Type 1 |
ID | Statement | ID | Statement | |
---|---|---|---|---|
1 | String name = m.getName(); | 1 | String name = m.getName(); | |
2 | DynamicMethod method = self.getMetaClass().searchMethod(name); | 2 | DynamicMethod method = self.getMetaClass().searchMethod(name); | |
3 | int v = method.getArity().getValue(); | 3 | int v = method.getArity().getValue(); | |
4 | IRubyObject[] newArgs = new IRubyObject[nargs.length]; | 4 | IRubyObject[] newArgs = new IRubyObject[nargs.length]; | |
5 | for (int i = nargs.length; --i >= 0; ) | 5 | for (int i = nargs.length; --i >= 0; ) | |
6 | newArgs[i] = JavaUtil.convertJavaToUsableRubyObject(runtime, nargs[i]); | 6 | newArgs[i] = JavaUtil.convertJavaToUsableRubyObject(runtime, nargs[i]); | |
7 | if (v < 0 || v == (newArgs.length)) | 7 | if (v < 0 || v == (newArgs.length)) | |
8 | return RuntimeHelpers.invoke(runtime.getCurrentContext(), self, name, newArgs).toJava(m.getReturnType()); | 8 | return RuntimeHelpers.invoke(runtime.getCurrentContext(), self, name, newArgs).toJava(m.getReturnType()); | |
else | else | |||
9 | RubyClass superClass = self.getMetaClass().getSuperClass(); | 9 | RubyClass superClass = self.getMetaClass().getSuperClass(); | |
10 | return RuntimeHelpers.invokeAs(runtime.getCurrentContext(), superClass, self, name, newArgs, Block.NULL_BLOCK).toJava(m.getReturnType()); | 10 | return RuntimeHelpers.invokeAs(runtime.getCurrentContext(), superClass, self, name, newArgs, Block.NULL_BLOCK).toJava(m.getReturnType()); |
Row | Violation |
---|