MultipleAsgnNode multipleAsgnNode = (MultipleAsgnNode) node; if (expr) { // need the array, use unoptz version compileUnoptimizedMultipleAsgn(multipleAsgnNode, context, expr); } else { // try optz version compileOptimizedMultipleAsgn(multipleAsgnNode, context, expr); }
MultipleAsgn19Node multipleAsgn19Node = (MultipleAsgn19Node) node; if (expr) { // need the array, use unoptz version compileUnoptimizedMultipleAsgn19(multipleAsgn19Node, context, expr); } else { // try optz version compileOptimizedMultipleAsgn19(multipleAsgn19Node, context, expr); }
Clone fragments detected by clone detection tool
File path: /jruby-1.4.0/src/org/jruby/compiler/ASTCompiler.java File path: /jruby-1.4.0/src/org/jruby/compiler/ASTCompiler19.java
Method name: void compileMultipleAsgn(Node, BodyCompiler, boolean) Method name: void compileMultipleAsgn19(Node, BodyCompiler, boolean)
Number of AST nodes: 4 Number of AST nodes: 4
1
MultipleAsgnNode multipleAsgnNode = (MultipleAsgnNode) node;
1
MultipleAsgn19Node multipleAsgn19Node = (MultipleAsgn19Node) node;
2
        if (expr) {
2
        if (expr) {
3
            // need the array, use unoptz version
3
            // need the array, use unoptz version
4
            compileUnoptimizedMultipleAsgn(multipleAsgnNode, context, expr);
4
            compileUnoptimizedMultipleAsgn19(multipleAsgn19Node, context, expr);
5
        } else {
5
        } else {
6
            // try optz version
6
            // try optz version
7
            compileOptimizedMultipleAsgn(multipleAsgnNode, context, expr);
7
            compileOptimizedMultipleAsgn19(multipleAsgn19Node, context, expr);
8
        }
8
        }
Summary
Number of common nesting structure subtrees1
Number of refactorable cases0
Number of non-refactorable cases1
Time elapsed for finding largest common nesting structure subtrees (ms)0.1
Clones locationClones are in different classes having the same super class
Number of node comparisons10
  1. {Non-refactorable}
    Mapping Summary
    Number of mapped statements4
    Number of unmapped statements in the first code fragment0
    Number of unmapped statements in the second code fragment0
    Time elapsed for statement mapping (ms)2.3
    Clone typeType 2
    Mapped Statements
    ID Statement ID Statement
    1
    MultipleAsgnNode multipleAsgnNode = (MultipleAsgnNode)node;
    1
    MultipleAsgnNode multipleAsgnNode = (MultipleAsgnNode)node;
    1
    MultipleAsgn19Node multipleAsgn19Node = (MultipleAsgn19Node)node;
    Differences
    Expression1Expression2Difference
    org.jruby.ast.MultipleAsgnNodeorg.jruby.ast.MultipleAsgn19NodeSUBCLASS_TYPE_MISMATCH
    multipleAsgnNodemultipleAsgn19NodeVARIABLE_NAME_MISMATCH
    org.jruby.ast.MultipleAsgnNodeorg.jruby.ast.MultipleAsgn19NodeSUBCLASS_TYPE_MISMATCH
    org.jruby.ast.MultipleAsgnNodeorg.jruby.ast.MultipleAsgn19NodeSUBCLASS_TYPE_MISMATCH
    1
    MultipleAsgn19Node multipleAsgn19Node = (MultipleAsgn19Node)node;
    2
    if (expr)
    2
    if (expr)
    3
    compileUnoptimizedMultipleAsgn(multipleAsgnNode, context, expr);
    3
    compileUnoptimizedMultipleAsgn(multipleAsgnNode, context, expr);
    3
    compileUnoptimizedMultipleAsgn19(multipleAsgn19Node, context, expr);
    Differences
    Expression1Expression2Difference
    compileUnoptimizedMultipleAsgncompileUnoptimizedMultipleAsgn19METHOD_INVOCATION_NAME_MISMATCH
    multipleAsgnNodemultipleAsgn19NodeVARIABLE_NAME_MISMATCH
    org.jruby.ast.MultipleAsgnNodeorg.jruby.ast.MultipleAsgn19NodeSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression compileUnoptimizedMultipleAsgn(multipleAsgnNode,context,expr) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    • Inline private method compileUnoptimizedMultipleAsgn
    Expression compileUnoptimizedMultipleAsgn19(multipleAsgn19Node,context,expr) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    • Inline private method compileUnoptimizedMultipleAsgn19
    Expression compileUnoptimizedMultipleAsgn(multipleAsgnNode,context,expr) is a void method call, and thus it cannot be parameterized
    Expression compileUnoptimizedMultipleAsgn19(multipleAsgn19Node,context,expr) is a void method call, and thus it cannot be parameterized
    3
    compileUnoptimizedMultipleAsgn19(multipleAsgn19Node, context, expr);
    else
    else
    4
    compileOptimizedMultipleAsgn(multipleAsgnNode, context, expr);
    4
    compileOptimizedMultipleAsgn(multipleAsgnNode, context, expr);
    4
    compileOptimizedMultipleAsgn19(multipleAsgn19Node, context, expr);
    Differences
    Expression1Expression2Difference
    compileOptimizedMultipleAsgncompileOptimizedMultipleAsgn19METHOD_INVOCATION_NAME_MISMATCH
    multipleAsgnNodemultipleAsgn19NodeVARIABLE_NAME_MISMATCH
    org.jruby.ast.MultipleAsgnNodeorg.jruby.ast.MultipleAsgn19NodeSUBCLASS_TYPE_MISMATCH
    Preondition Violations
    Expression compileOptimizedMultipleAsgn(multipleAsgnNode,context,expr) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    • Inline private method compileOptimizedMultipleAsgn
    Expression compileOptimizedMultipleAsgn19(multipleAsgn19Node,context,expr) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    • Inline private method compileOptimizedMultipleAsgn19
    Expression compileOptimizedMultipleAsgn(multipleAsgnNode,context,expr) is a void method call, and thus it cannot be parameterized
    Expression compileOptimizedMultipleAsgn19(multipleAsgn19Node,context,expr) is a void method call, and thus it cannot be parameterized
    4
    compileOptimizedMultipleAsgn19(multipleAsgn19Node, context, expr);
    Precondition Violations (8)
    Row Violation
    1Expression compileUnoptimizedMultipleAsgn(multipleAsgnNode,context,expr) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    2Expression compileUnoptimizedMultipleAsgn19(multipleAsgn19Node,context,expr) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    3Expression compileUnoptimizedMultipleAsgn(multipleAsgnNode,context,expr) is a void method call, and thus it cannot be parameterized
    4Expression compileUnoptimizedMultipleAsgn19(multipleAsgn19Node,context,expr) is a void method call, and thus it cannot be parameterized
    5Expression compileOptimizedMultipleAsgn(multipleAsgnNode,context,expr) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    6Expression compileOptimizedMultipleAsgn19(multipleAsgn19Node,context,expr) cannot be parameterized, because it has dependencies to/from statements that will be extracted
    7Expression compileOptimizedMultipleAsgn(multipleAsgnNode,context,expr) is a void method call, and thus it cannot be parameterized
    8Expression compileOptimizedMultipleAsgn19(multipleAsgn19Node,context,expr) is a void method call, and thus it cannot be parameterized