| OLD | NEW |
| 1 // Copyright 2009 the V8 project authors. All rights reserved. | 1 // Copyright 2009 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 189 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 200 | 200 |
| 201 // Is the value a tagged smi. | 201 // Is the value a tagged smi. |
| 202 Condition CheckSmi(Register src); | 202 Condition CheckSmi(Register src); |
| 203 | 203 |
| 204 // Is the value a positive tagged smi. | 204 // Is the value a positive tagged smi. |
| 205 Condition CheckPositiveSmi(Register src); | 205 Condition CheckPositiveSmi(Register src); |
| 206 | 206 |
| 207 // Are both values tagged smis. | 207 // Are both values tagged smis. |
| 208 Condition CheckBothSmi(Register first, Register second); | 208 Condition CheckBothSmi(Register first, Register second); |
| 209 | 209 |
| 210 // Are both values tagged smis. |
| 211 Condition CheckBothPositiveSmi(Register first, Register second); |
| 212 |
| 210 // Are either value a tagged smi. | 213 // Are either value a tagged smi. |
| 211 Condition CheckEitherSmi(Register first, Register second); | 214 Condition CheckEitherSmi(Register first, Register second); |
| 212 | 215 |
| 213 // Is the value the minimum smi value (since we are using | 216 // Is the value the minimum smi value (since we are using |
| 214 // two's complement numbers, negating the value is known to yield | 217 // two's complement numbers, negating the value is known to yield |
| 215 // a non-smi value). | 218 // a non-smi value). |
| 216 Condition CheckIsMinSmi(Register src); | 219 Condition CheckIsMinSmi(Register src); |
| 217 | 220 |
| 218 // Checks whether an 32-bit integer value is a valid for conversion | 221 // Checks whether an 32-bit integer value is a valid for conversion |
| 219 // to a smi. | 222 // to a smi. |
| (...skipping 21 matching lines...) Expand all Loading... |
| 241 // Jump to label if the value is not a positive tagged smi. | 244 // Jump to label if the value is not a positive tagged smi. |
| 242 void JumpIfNotPositiveSmi(Register src, Label* on_not_smi); | 245 void JumpIfNotPositiveSmi(Register src, Label* on_not_smi); |
| 243 | 246 |
| 244 // Jump to label if the value, which must be a tagged smi, has value equal | 247 // Jump to label if the value, which must be a tagged smi, has value equal |
| 245 // to the constant. | 248 // to the constant. |
| 246 void JumpIfSmiEqualsConstant(Register src, Smi* constant, Label* on_equals); | 249 void JumpIfSmiEqualsConstant(Register src, Smi* constant, Label* on_equals); |
| 247 | 250 |
| 248 // Jump if either or both register are not smi values. | 251 // Jump if either or both register are not smi values. |
| 249 void JumpIfNotBothSmi(Register src1, Register src2, Label* on_not_both_smi); | 252 void JumpIfNotBothSmi(Register src1, Register src2, Label* on_not_both_smi); |
| 250 | 253 |
| 254 // Jump if either or both register are not positive smi values. |
| 255 void JumpIfNotBothPositiveSmi(Register src1, Register src2, |
| 256 Label* on_not_both_smi); |
| 257 |
| 251 // Operations on tagged smi values. | 258 // Operations on tagged smi values. |
| 252 | 259 |
| 253 // Smis represent a subset of integers. The subset is always equivalent to | 260 // Smis represent a subset of integers. The subset is always equivalent to |
| 254 // a two's complement interpretation of a fixed number of bits. | 261 // a two's complement interpretation of a fixed number of bits. |
| 255 | 262 |
| 256 // Optimistically adds an integer constant to a supposed smi. | 263 // Optimistically adds an integer constant to a supposed smi. |
| 257 // If the src is not a smi, or the result is not a smi, jump to | 264 // If the src is not a smi, or the result is not a smi, jump to |
| 258 // the label. | 265 // the label. |
| 259 void SmiTryAddConstant(Register dst, | 266 void SmiTryAddConstant(Register dst, |
| 260 Register src, | 267 Register src, |
| (...skipping 184 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 445 // Compare object type for heap object. | 452 // Compare object type for heap object. |
| 446 // Always use unsigned comparisons: above and below, not less and greater. | 453 // Always use unsigned comparisons: above and below, not less and greater. |
| 447 // Incoming register is heap_object and outgoing register is map. | 454 // Incoming register is heap_object and outgoing register is map. |
| 448 // They may be the same register, and may be kScratchRegister. | 455 // They may be the same register, and may be kScratchRegister. |
| 449 void CmpObjectType(Register heap_object, InstanceType type, Register map); | 456 void CmpObjectType(Register heap_object, InstanceType type, Register map); |
| 450 | 457 |
| 451 // Compare instance type for map. | 458 // Compare instance type for map. |
| 452 // Always use unsigned comparisons: above and below, not less and greater. | 459 // Always use unsigned comparisons: above and below, not less and greater. |
| 453 void CmpInstanceType(Register map, InstanceType type); | 460 void CmpInstanceType(Register map, InstanceType type); |
| 454 | 461 |
| 462 // Check if the object in register heap_object is a string. Afterwards the |
| 463 // register map contains the object map and the register instance_type |
| 464 // contains the instance_type. The registers map and instance_type can be the |
| 465 // same in which case it contains the instance type afterwards. Either of the |
| 466 // registers map and instance_type can be the same as heap_object. |
| 467 Condition IsObjectStringType(Register heap_object, |
| 468 Register map, |
| 469 Register instance_type); |
| 470 |
| 455 // FCmp is similar to integer cmp, but requires unsigned | 471 // FCmp is similar to integer cmp, but requires unsigned |
| 456 // jcc instructions (je, ja, jae, jb, jbe, je, and jz). | 472 // jcc instructions (je, ja, jae, jb, jbe, je, and jz). |
| 457 void FCmp(); | 473 void FCmp(); |
| 458 | 474 |
| 459 // --------------------------------------------------------------------------- | 475 // --------------------------------------------------------------------------- |
| 460 // Exception handling | 476 // Exception handling |
| 461 | 477 |
| 462 // Push a new try handler and link into try handler chain. The return | 478 // Push a new try handler and link into try handler chain. The return |
| 463 // address must be pushed before calling this helper. | 479 // address must be pushed before calling this helper. |
| 464 void PushTryHandler(CodeLocation try_location, HandlerType type); | 480 void PushTryHandler(CodeLocation try_location, HandlerType type); |
| (...skipping 302 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 767 } \ | 783 } \ |
| 768 masm-> | 784 masm-> |
| 769 #else | 785 #else |
| 770 #define ACCESS_MASM(masm) masm-> | 786 #define ACCESS_MASM(masm) masm-> |
| 771 #endif | 787 #endif |
| 772 | 788 |
| 773 | 789 |
| 774 } } // namespace v8::internal | 790 } } // namespace v8::internal |
| 775 | 791 |
| 776 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ | 792 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ |
| OLD | NEW |