Changeset 130726 in webkit for trunk/Source/JavaScriptCore/bytecode/ValueRecovery.h
- Timestamp:
- Oct 9, 2012, 12:12:56 AM (13 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/Source/JavaScriptCore/bytecode/ValueRecovery.h
r124404 r130726 39 39 // code point. 40 40 enum ValueRecoveryTechnique { 41 // It's already in the register fileat the right location.42 AlreadyIn RegisterFile,43 // It's already in the register filebut unboxed.44 AlreadyIn RegisterFileAsUnboxedInt32,45 AlreadyIn RegisterFileAsUnboxedCell,46 AlreadyIn RegisterFileAsUnboxedBoolean,47 AlreadyIn RegisterFileAsUnboxedDouble,41 // It's already in the stack at the right location. 42 AlreadyInJSStack, 43 // It's already in the stack but unboxed. 44 AlreadyInJSStackAsUnboxedInt32, 45 AlreadyInJSStackAsUnboxedCell, 46 AlreadyInJSStackAsUnboxedBoolean, 47 AlreadyInJSStackAsUnboxedDouble, 48 48 // It's in a register. 49 49 InGPR, … … 55 55 InFPR, 56 56 UInt32InGPR, 57 // It's in the register file, but at a different location.58 DisplacedIn RegisterFile,59 // It's in the register file, at a different location, and it's unboxed.60 Int32DisplacedIn RegisterFile,61 DoubleDisplacedIn RegisterFile,62 CellDisplacedIn RegisterFile,63 BooleanDisplacedIn RegisterFile,57 // It's in the stack, but at a different location. 58 DisplacedInJSStack, 59 // It's in the stack, at a different location, and it's unboxed. 60 Int32DisplacedInJSStack, 61 DoubleDisplacedInJSStack, 62 CellDisplacedInJSStack, 63 BooleanDisplacedInJSStack, 64 64 // It's an Arguments object. 65 65 ArgumentsThatWereNotCreated, … … 80 80 bool operator!() const { return !isSet(); } 81 81 82 static ValueRecovery alreadyIn RegisterFile()83 { 84 ValueRecovery result; 85 result.m_technique = AlreadyIn RegisterFile;86 return result; 87 } 88 89 static ValueRecovery alreadyIn RegisterFileAsUnboxedInt32()90 { 91 ValueRecovery result; 92 result.m_technique = AlreadyIn RegisterFileAsUnboxedInt32;93 return result; 94 } 95 96 static ValueRecovery alreadyIn RegisterFileAsUnboxedCell()97 { 98 ValueRecovery result; 99 result.m_technique = AlreadyIn RegisterFileAsUnboxedCell;100 return result; 101 } 102 103 static ValueRecovery alreadyIn RegisterFileAsUnboxedBoolean()104 { 105 ValueRecovery result; 106 result.m_technique = AlreadyIn RegisterFileAsUnboxedBoolean;107 return result; 108 } 109 110 static ValueRecovery alreadyIn RegisterFileAsUnboxedDouble()111 { 112 ValueRecovery result; 113 result.m_technique = AlreadyIn RegisterFileAsUnboxedDouble;82 static ValueRecovery alreadyInJSStack() 83 { 84 ValueRecovery result; 85 result.m_technique = AlreadyInJSStack; 86 return result; 87 } 88 89 static ValueRecovery alreadyInJSStackAsUnboxedInt32() 90 { 91 ValueRecovery result; 92 result.m_technique = AlreadyInJSStackAsUnboxedInt32; 93 return result; 94 } 95 96 static ValueRecovery alreadyInJSStackAsUnboxedCell() 97 { 98 ValueRecovery result; 99 result.m_technique = AlreadyInJSStackAsUnboxedCell; 100 return result; 101 } 102 103 static ValueRecovery alreadyInJSStackAsUnboxedBoolean() 104 { 105 ValueRecovery result; 106 result.m_technique = AlreadyInJSStackAsUnboxedBoolean; 107 return result; 108 } 109 110 static ValueRecovery alreadyInJSStackAsUnboxedDouble() 111 { 112 ValueRecovery result; 113 result.m_technique = AlreadyInJSStackAsUnboxedDouble; 114 114 return result; 115 115 } … … 159 159 } 160 160 161 static ValueRecovery displacedIn RegisterFile(VirtualRegister virtualReg, DataFormat dataFormat)161 static ValueRecovery displacedInJSStack(VirtualRegister virtualReg, DataFormat dataFormat) 162 162 { 163 163 ValueRecovery result; 164 164 switch (dataFormat) { 165 165 case DataFormatInteger: 166 result.m_technique = Int32DisplacedIn RegisterFile;166 result.m_technique = Int32DisplacedInJSStack; 167 167 break; 168 168 169 169 case DataFormatDouble: 170 result.m_technique = DoubleDisplacedIn RegisterFile;170 result.m_technique = DoubleDisplacedInJSStack; 171 171 break; 172 172 173 173 case DataFormatCell: 174 result.m_technique = CellDisplacedIn RegisterFile;174 result.m_technique = CellDisplacedInJSStack; 175 175 break; 176 176 177 177 case DataFormatBoolean: 178 result.m_technique = BooleanDisplacedIn RegisterFile;178 result.m_technique = BooleanDisplacedInJSStack; 179 179 break; 180 180 181 181 default: 182 182 ASSERT(dataFormat != DataFormatNone && dataFormat != DataFormatStorage); 183 result.m_technique = DisplacedIn RegisterFile;183 result.m_technique = DisplacedInJSStack; 184 184 break; 185 185 } … … 223 223 } 224 224 225 bool isAlreadyIn RegisterFile() const225 bool isAlreadyInJSStack() const 226 226 { 227 227 switch (technique()) { 228 case AlreadyIn RegisterFile:229 case AlreadyIn RegisterFileAsUnboxedInt32:230 case AlreadyIn RegisterFileAsUnboxedCell:231 case AlreadyIn RegisterFileAsUnboxedBoolean:232 case AlreadyIn RegisterFileAsUnboxedDouble:228 case AlreadyInJSStack: 229 case AlreadyInJSStackAsUnboxedInt32: 230 case AlreadyInJSStackAsUnboxedCell: 231 case AlreadyInJSStackAsUnboxedBoolean: 232 case AlreadyInJSStackAsUnboxedDouble: 233 233 return true; 234 234 default: … … 265 265 VirtualRegister virtualRegister() const 266 266 { 267 ASSERT(m_technique == DisplacedIn RegisterFile || m_technique == Int32DisplacedInRegisterFile || m_technique == DoubleDisplacedInRegisterFile || m_technique == CellDisplacedInRegisterFile || m_technique == BooleanDisplacedInRegisterFile);267 ASSERT(m_technique == DisplacedInJSStack || m_technique == Int32DisplacedInJSStack || m_technique == DoubleDisplacedInJSStack || m_technique == CellDisplacedInJSStack || m_technique == BooleanDisplacedInJSStack); 268 268 return m_source.virtualReg; 269 269 } … … 278 278 { 279 279 switch (technique()) { 280 case AlreadyIn RegisterFile:280 case AlreadyInJSStack: 281 281 fprintf(out, "-"); 282 282 break; 283 case AlreadyIn RegisterFileAsUnboxedInt32:283 case AlreadyInJSStackAsUnboxedInt32: 284 284 fprintf(out, "(int32)"); 285 285 break; 286 case AlreadyIn RegisterFileAsUnboxedCell:286 case AlreadyInJSStackAsUnboxedCell: 287 287 fprintf(out, "(cell)"); 288 288 break; 289 case AlreadyIn RegisterFileAsUnboxedBoolean:289 case AlreadyInJSStackAsUnboxedBoolean: 290 290 fprintf(out, "(bool)"); 291 291 break; 292 case AlreadyIn RegisterFileAsUnboxedDouble:292 case AlreadyInJSStackAsUnboxedDouble: 293 293 fprintf(out, "(double)"); 294 294 break; … … 313 313 break; 314 314 #endif 315 case DisplacedIn RegisterFile:315 case DisplacedInJSStack: 316 316 fprintf(out, "*%d", virtualRegister()); 317 317 break; 318 case Int32DisplacedIn RegisterFile:318 case Int32DisplacedInJSStack: 319 319 fprintf(out, "*int32(%d)", virtualRegister()); 320 320 break; 321 case DoubleDisplacedIn RegisterFile:321 case DoubleDisplacedInJSStack: 322 322 fprintf(out, "*double(%d)", virtualRegister()); 323 323 break; 324 case CellDisplacedIn RegisterFile:324 case CellDisplacedInJSStack: 325 325 fprintf(out, "*cell(%d)", virtualRegister()); 326 326 break; 327 case BooleanDisplacedIn RegisterFile:327 case BooleanDisplacedInJSStack: 328 328 fprintf(out, "*bool(%d)", virtualRegister()); 329 329 break;
Note:
See TracChangeset
for help on using the changeset viewer.