if (c == null) {
Class[] signature = descriptor;
Class ret = getReturnClass(method, signature);
ClassWriter cw = createCtorFast(mnamePath);
MethodVisitor mv = startCallFast(cw);
loadArguments(mv, METHOD_ARGS_INDEX, 1, descriptor);
mv.visitMethodInsn(INVOKEVIRTUAL, typePath, method, sig(ret, signature));
mv.visitInsn(ARETURN);
mv.visitMaxs(3, 3);
c = endCall(cw, mv, mname);
}
if (c == null) {
Class[] signature = descriptor;
Class ret = getReturnClass(method, signature);
ClassWriter cw = createCtorFast(mnamePath);
MethodVisitor mv = startCallFast(cw);
loadArguments(mv, METHOD_ARGS_INDEX, 2, descriptor);
mv.visitMethodInsn(INVOKEVIRTUAL, typePath, method, sig(ret, signature));
mv.visitInsn(ARETURN);
mv.visitMaxs(4, 3);
c = endCall(cw, mv, mname);
}
Clone fragments detected by clone detection tool
File path: /jruby-1.4.0/src/org/jruby/runtime/callback/InvocationCallbackFactory.java
|
|
File path: /jruby-1.4.0/src/org/jruby/runtime/callback/InvocationCallbackFactory.java
|
Method name: Callback getFastMethod(String, Class)
|
|
Method name: Callback getFastMethod(String, Class, Class)
|
Number of AST nodes: 10
|
|
Number of AST nodes: 10
|
|
1 | if (c == null) {↵ | | 1 | if (c == null) {↵
|
2 | Class[] signature = descriptor;↵ | | 2 | Class[] signature = descriptor;↵
|
3 | Class ret = getReturnClass(method, signature);↵ | | 3 | Class ret = getReturnClass(method, signature);↵
|
4 | ClassWriter cw = createCtorFast(mnamePath);↵ | | 4 | ClassWriter cw = createCtorFast(mnamePath);↵
|
5 | MethodVisitor mv = startCallFast(cw);↵ | | 5 | MethodVisitor mv = startCallFast(cw);↵
|
6 | ↵ | | 6 | ↵
|
7 | loadArguments(mv, METHOD_ARGS_INDEX, 1, descriptor);↵ | | 7 | loadArguments(mv, METHOD_ARGS_INDEX, 2, descriptor);↵
|
|
8 | mv.visitMethodInsn(INVOKEVIRTUAL, typePath, method, sig(ret, signature));↵ | | 8 | mv.visitMethodInsn(INVOKEVIRTUAL, typePath, method, sig(ret, signature));↵
|
9 | mv.visitInsn(ARETURN);↵ | | 9 | mv.visitInsn(ARETURN);↵
|
10 | mv.visitMaxs(3, 3);↵ | | 10 | mv.visitMaxs(4, 3);↵
|
11 | c = endCall(cw, mv, mname);↵ | | 11 | c = endCall(cw, mv, mname);↵
|
12 | } | | 12 | }
|
See real code fragment |
|
See real code fragment |
Summary
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) | 0.4 |
Clones location | Clones are declared in the same class |
Number of node comparisons | 101 |
-
{Refactorable}
Mapping Summary
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) | 5.2 |
Clone type | Type 2 |
Mapped Statements
ID |
Statement |
|
ID |
Statement |
7 | if (c == null) | | 7 | if (c == null) |
8 | Class[] signature = descriptor; | | 8 | Class[] signature = descriptor; |
9 | Class ret = getReturnClass(method, signature); | | 9 | Class ret = getReturnClass(method, signature); |
10 | ClassWriter cw = createCtorFast(mnamePath); | | 10 | ClassWriter cw = createCtorFast(mnamePath); |
11 | MethodVisitor mv = startCallFast(cw); | | 11 | MethodVisitor mv = startCallFast(cw); |
12 | loadArguments(mv, METHOD_ARGS_INDEX, 1, descriptor); | | 12 | loadArguments(mv, METHOD_ARGS_INDEX, 2, descriptor); |
13 | mv.visitMethodInsn(INVOKEVIRTUAL, typePath, method, sig(ret, signature)); | | 13 | mv.visitMethodInsn(INVOKEVIRTUAL, typePath, method, sig(ret, signature)); |
14 | | | 14 | |
15 | | | 15 | |
16 | c = endCall(cw, mv, mname); | | 16 | c = endCall(cw, mv, mname); |
Precondition Violations (0)
Row |
Violation |