comparison src/share/vm/c1/c1_LinearScan.cpp @ 13102:f9f4503a4ab5

Merge
author Christos Kotselidis <christos.kotselidis@oracle.com>
date Thu, 21 Nov 2013 15:04:54 +0100
parents a905d33ce13a
children de6a9e811145
comparison
equal deleted inserted replaced
13101:790ebab62d23 13102:f9f4503a4ab5
73 73
74 #endif 74 #endif
75 75
76 // Map BasicType to spill size in 32-bit words, matching VMReg's notion of words 76 // Map BasicType to spill size in 32-bit words, matching VMReg's notion of words
77 #ifdef _LP64 77 #ifdef _LP64
78 static int type2spill_size[T_CONFLICT+1]={ -1, 0, 0, 0, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 0, 1, -1}; 78 static int type2spill_size[T_CONFLICT+1]={ -1, 0, 0, 0, 1, 1, 1, 2, 1, 1, 1, 2, 2, 2, 0, 2, 1, 2, 1, -1};
79 #else 79 #else
80 static int type2spill_size[T_CONFLICT+1]={ -1, 0, 0, 0, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 0, 1, -1}; 80 static int type2spill_size[T_CONFLICT+1]={ -1, 0, 0, 0, 1, 1, 1, 2, 1, 1, 1, 2, 1, 1, 0, 1, -1, 1, 1, -1};
81 #endif 81 #endif
82 82
83 83
84 // Implementation of LinearScan 84 // Implementation of LinearScan
85 85
1136 return shouldHaveRegister; 1136 return shouldHaveRegister;
1137 } 1137 }
1138 } 1138 }
1139 } 1139 }
1140 } 1140 }
1141 1141 // We want to sometimes use logical operations on pointers, in particular in GC barriers.
1142 } else if (opr_type != T_LONG) { 1142 // Since 64bit logical operations do not current support operands on stack, we have to make sure
1143 // T_OBJECT doesn't get spilled along with T_LONG.
1144 } else if (opr_type != T_LONG LP64_ONLY(&& opr_type != T_OBJECT)) {
1143 // integer instruction (note: long operands must always be in register) 1145 // integer instruction (note: long operands must always be in register)
1144 switch (op->code()) { 1146 switch (op->code()) {
1145 case lir_cmp: 1147 case lir_cmp:
1146 case lir_add: 1148 case lir_add:
1147 case lir_sub: 1149 case lir_sub: