IRubyObject receiver = getReceiverNode().interpret(runtime, context, self, aBlock);
IRubyObject arg = getArgsNode().interpret(runtime, context, self, aBlock);
Block block = RuntimeHelpers.getBlock(context, self, iterNode);
if (arg instanceof RubyArray) {
RubyArray nodes = (RubyArray) arg;
switch (nodes.size()) {
case 0:
return callAdapter.call(context, self, receiver, block);
case 1:
return callAdapter.call(context, self, receiver, nodes.eltInternal(0), block);
case 2:
return callAdapter.call(context, self, receiver, nodes.eltInternal(0), nodes.eltInternal(1), block);
case 3:
return callAdapter.call(context, self, receiver, nodes.eltInternal(0), nodes.eltInternal(1), nodes.eltInternal(2), block);
default:
return callAdapter.call(context, self, receiver, nodes.toJavaArrayMaybeUnsafe(), block);
}
}
return callAdapter.call(context, self, receiver, arg, block);
IRubyObject receiver = getReceiverNode().interpret(runtime, context, self, aBlock);
IRubyObject arg = getArgsNode().interpret(runtime, context, self, aBlock);
Block block = RuntimeHelpers.getBlock(runtime, context, self, iterNode, aBlock);
if (arg instanceof RubyArray) {
RubyArray nodes = (RubyArray) arg;
switch (nodes.size()) {
case 0:
return callAdapter.call(context, self, receiver, block);
case 1:
return callAdapter.call(context, self, receiver, nodes.eltInternal(0), block);
case 2:
return callAdapter.call(context, self, receiver, nodes.eltInternal(0), nodes.eltInternal(1), block);
case 3:
return callAdapter.call(context, self, receiver, nodes.eltInternal(0), nodes.eltInternal(1), nodes.eltInternal(2), block);
default:
return callAdapter.call(context, self, receiver, nodes.toJavaArrayMaybeUnsafe(), block);
}
}
return callAdapter.call(context, self, receiver, arg, block);
Clone fragments detected by clone detection tool
File path: /jruby-1.4.0/src/org/jruby/ast/CallSpecialArgBlockNode.java
|
|
File path: /jruby-1.4.0/src/org/jruby/ast/CallSpecialArgBlockPassNode.java
|
Method name: IRubyObject interpret(Ruby, ThreadContext, IRubyObject, Block)
|
|
Method name: IRubyObject interpret(Ruby, ThreadContext, IRubyObject, Block)
|
Number of AST nodes: 17
|
|
Number of AST nodes: 17
|
|
1 | IRubyObject receiver = getReceiverNode().interpret(runtime, context, self, aBlock);↵ | | 1 | IRubyObject receiver = getReceiverNode().interpret(runtime, context, self, aBlock);↵
|
2 | IRubyObject arg = getArgsNode().interpret(runtime, context, self, aBlock);↵ | | 2 | IRubyObject arg = getArgsNode().interpret(runtime, context, self, aBlock);↵
|
3 | Block block = RuntimeHelpers.getBlock(context, self, iterNode);↵ | | 3 | Block block = RuntimeHelpers.getBlock(runtime, context, self, iterNode, aBlock);↵
|
|
4 | if (arg instanceof RubyArray) {↵ | | 4 | if (arg instanceof RubyArray) {↵
|
5 | RubyArray nodes = (RubyArray) arg;↵ | | 5 | RubyArray nodes = (RubyArray) arg;↵
|
|
6 | switch (nodes.size()) {↵ | | 6 | switch (nodes.size()) {↵
|
7 | case 0:↵ | | 7 | case 0:↵
|
8 | return callAdapter.call(context, self, receiver, block);↵ | | 8 | return callAdapter.call(context, self, receiver, block);↵
|
9 | case 1:↵ | | 9 | case 1:↵
|
10 | return callAdapter.call(context, self, receiver, nodes.eltInternal(0), block);↵ | | 10 | return callAdapter.call(context, self, receiver, nodes.eltInternal(0), block);↵
|
11 | case 2:↵ | | 11 | case 2:↵
|
12 | return callAdapter.call(context, self, receiver, nodes.eltInternal(0), nodes.eltInternal(1), block);↵ | | 12 | return callAdapter.call(context, self, receiver, nodes.eltInternal(0), nodes.eltInternal(1), block);↵
|
13 | case 3:↵ | | 13 | case 3:↵
|
14 | return callAdapter.call(context, self, receiver, nodes.eltInternal(0), nodes.eltInternal(1), nodes.eltInternal(2), block);↵ | | 14 | return callAdapter.call(context, self, receiver, nodes.eltInternal(0), nodes.eltInternal(1), nodes.eltInternal(2), block);↵
|
15 | default:↵ | | 15 | default:↵
|
16 | return callAdapter.call(context, self, receiver, nodes.toJavaArrayMaybeUnsafe(), block);↵ | | 16 | return callAdapter.call(context, self, receiver, nodes.toJavaArrayMaybeUnsafe(), block);↵
|
17 | }↵ | | 17 | }↵
|
18 | }↵ | | 18 | }↵
|
|
19 | return callAdapter.call(context, self, receiver, arg, block); | | 19 | return callAdapter.call(context, self, receiver, arg, block);
|
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.2 |
Clones location | Clones are in different classes having the same super class |
Number of node comparisons | 81 |
-
{Refactorable}
Mapping Summary
Number of mapped statements | 17 |
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) | 15.7 |
Clone type | Type 2 |
Mapped Statements
ID |
Statement |
|
ID |
Statement |
1 | IRubyObject receiver = getReceiverNode().interpret(runtime, context, self, aBlock); | | 1 | IRubyObject receiver = getReceiverNode().interpret(runtime, context, self, aBlock); |
2 | IRubyObject arg = getArgsNode().interpret(runtime, context, self, aBlock); | | 2 | IRubyObject arg = getArgsNode().interpret(runtime, context, self, aBlock); |
3 | Block block = RuntimeHelpers.getBlock(context, self, iterNode); | | 3 | Block block = RuntimeHelpers.getBlock(runtime, context, self, iterNode, aBlock); |
4 | if (arg instanceof RubyArray) | | 4 | if (arg instanceof RubyArray) |
5 | RubyArray nodes = (RubyArray)arg; | | 5 | RubyArray nodes = (RubyArray)arg; |
6 | | | 6 | |
7 | | | 7 | |
8 | return callAdapter.call(context, self, receiver, block); | | 8 | return callAdapter.call(context, self, receiver, block); |
9 | | | 9 | |
10 | return callAdapter.call(context, self, receiver, nodes.eltInternal(0), block); | | 10 | return callAdapter.call(context, self, receiver, nodes.eltInternal(0), block); |
11 | | | 11 | |
12 | return callAdapter.call(context, self, receiver, nodes.eltInternal(0), nodes.eltInternal(1), block); | | 12 | return callAdapter.call(context, self, receiver, nodes.eltInternal(0), nodes.eltInternal(1), block); |
13 | | | 13 | |
14 | return callAdapter.call(context, self, receiver, nodes.eltInternal(0), nodes.eltInternal(1), nodes.eltInternal(2), block); | | 14 | return callAdapter.call(context, self, receiver, nodes.eltInternal(0), nodes.eltInternal(1), nodes.eltInternal(2), block); |
15 | | | 15 | |
16 | return callAdapter.call(context, self, receiver, nodes.toJavaArrayMaybeUnsafe(), block); | | 16 | return callAdapter.call(context, self, receiver, nodes.toJavaArrayMaybeUnsafe(), block); |
17 | return callAdapter.call(context, self, receiver, arg, block); | | 17 | return callAdapter.call(context, self, receiver, arg, block); |
Precondition Violations (0)
Row |
Violation |