File path: /jruby-1.4.0/src/org/jruby/compiler/ir/operands/Fixnum.java | File path: /jruby-1.4.0/src/org/jruby/compiler/ir/operands/Fixnum.java | |||
Method name: Constant computeValue(String, Constant)
|
Method name: Constant computeValue(String, Constant)
|
|||
Number of AST nodes: 9 | Number of AST nodes: 10 | |||
1 | if (arg instanceof Float) {↵ | |||
1 | if (methodName.equals("+"))↵ | 2 | if (methodName.equals("+"))↵ | |
2 | return new Fixnum(_value + ((Fixnum)arg)._value);↵ | 3 | return new Float(_value + ((Float)arg)._value);↵ | |
3 | else if (methodName.equals("-"))↵ | 4 | else if (methodName.equals("-"))↵ | |
4 | return new Fixnum(_value - ((Fixnum)arg)._value);↵ | 5 | return new Float(_value - ((Float)arg)._value);↵ | |
5 | else if (methodName.equals("*"))↵ | 6 | else if (methodName.equals("*"))↵ | |
6 | return new Fixnum(_value * ((Fixnum)arg)._value);↵ | 7 | return new Float(_value * ((Float)arg)._value);↵ | |
7 | else if (methodName.equals("/")) {↵ | 8 | else if (methodName.equals("/")) {↵ | |
8 | Long divisor = ((Fixnum)arg)._value;↵ | 9 | Double divisor = ((Float)arg)._value;↵ | |
9 | return divisor == 0L ? null : new Fixnum(_value / divisor); // If divisor is zero, don't simplify!↵ | 10 | return divisor == 0.0 ? null : new Float(_value / divisor); // If divisor is zero, don't simplify!↵ | |
10 | } | 11 | }↵ | |
12 |
| |||
See real code fragment | See real code fragment |
Number of common nesting structure subtrees | 1 |
Number of refactorable cases | 0 |
Number of non-refactorable cases | 1 |
Time elapsed for finding largest common nesting structure subtrees (ms) | 1.4 |
Clones location | Clones are in the same method |
Number of node comparisons | 58 |
Number of mapped statements | 9 |
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) | 4.0 |
Clone type | Type 2 |
ID | Statement | ID | Statement | ||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
2 | if (methodName.equals("+")) | 12 | if (methodName.equals("+")) | ||||||||||||||||||||||
3 | return new Fixnum(_value + ((Fixnum)arg)._value); |
| 13 | return new Float(_value + ((Float)arg)._value); | |||||||||||||||||||||
4 | else if (methodName.equals("-")) | 14 | else if (methodName.equals("-")) | ||||||||||||||||||||||
5 | return new Fixnum(_value - ((Fixnum)arg)._value); |
| 15 | return new Float(_value - ((Float)arg)._value); | |||||||||||||||||||||
6 | else if (methodName.equals("*")) | 16 | else if (methodName.equals("*")) | ||||||||||||||||||||||
7 | return new Fixnum(_value * ((Fixnum)arg)._value); |
| 17 | return new Float(_value * ((Float)arg)._value); | |||||||||||||||||||||
8 | else if (methodName.equals("/")) | 18 | else if (methodName.equals("/")) | ||||||||||||||||||||||
9 | Long divisor = ((Fixnum)arg)._value; |
| 19 | Double divisor = ((Float)arg)._value; | |||||||||||||||||||||
10 | return divisor == 0L ? null : new Fixnum(_value / divisor); |
| 20 | return divisor == 0.0 ? null : new Float(_value / divisor); |
Row | Violation |
---|---|
1 | Expression new Fixnum(_value / divisor) cannot be parameterized, because it has dependencies to/from statements that will be extracted |
2 | Expression new Float(_value / divisor) cannot be parameterized, because it has dependencies to/from statements that will be extracted |