Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(75)

Side by Side Diff: src/x64/macro-assembler-x64.h

Issue 3574002: Rename some x64 macros to be more precise about their semantics. (Closed)
Patch Set: Addressing Lasse's comments Created 10 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « src/x64/ic-x64.cc ('k') | src/x64/macro-assembler-x64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 void SmiCompareInteger32(const Operand& dst, Register src); 258 void SmiCompareInteger32(const Operand& dst, Register src);
259 // Sets sign and zero flags depending on value of smi in register. 259 // Sets sign and zero flags depending on value of smi in register.
260 void SmiTest(Register src); 260 void SmiTest(Register src);
261 261
262 // Functions performing a check on a known or potential smi. Returns 262 // Functions performing a check on a known or potential smi. Returns
263 // a condition that is satisfied if the check is successful. 263 // a condition that is satisfied if the check is successful.
264 264
265 // Is the value a tagged smi. 265 // Is the value a tagged smi.
266 Condition CheckSmi(Register src); 266 Condition CheckSmi(Register src);
267 267
268 // Is the value a positive tagged smi. 268 // Is the value a non-negative tagged smi.
269 Condition CheckPositiveSmi(Register src); 269 Condition CheckNonNegativeSmi(Register src);
270 270
271 // Are both values tagged smis. 271 // Are both values tagged smis.
272 Condition CheckBothSmi(Register first, Register second); 272 Condition CheckBothSmi(Register first, Register second);
273 273
274 // Are both values tagged smis. 274 // Are both values non-negative tagged smis.
275 Condition CheckBothPositiveSmi(Register first, Register second); 275 Condition CheckBothNonNegativeSmi(Register first, Register second);
276 276
277 // Are either value a tagged smi. 277 // Are either value a tagged smi.
278 Condition CheckEitherSmi(Register first, 278 Condition CheckEitherSmi(Register first,
279 Register second, 279 Register second,
280 Register scratch = kScratchRegister); 280 Register scratch = kScratchRegister);
281 281
282 // Is the value the minimum smi value (since we are using 282 // Is the value the minimum smi value (since we are using
283 // two's complement numbers, negating the value is known to yield 283 // two's complement numbers, negating the value is known to yield
284 // a non-smi value). 284 // a non-smi value).
285 Condition CheckIsMinSmi(Register src); 285 Condition CheckIsMinSmi(Register src);
(...skipping 18 matching lines...) Expand all
304 void JumpIfUIntNotValidSmiValue(Register src, LabelType* on_invalid); 304 void JumpIfUIntNotValidSmiValue(Register src, LabelType* on_invalid);
305 305
306 // Jump to label if the value is a tagged smi. 306 // Jump to label if the value is a tagged smi.
307 template <typename LabelType> 307 template <typename LabelType>
308 void JumpIfSmi(Register src, LabelType* on_smi); 308 void JumpIfSmi(Register src, LabelType* on_smi);
309 309
310 // Jump to label if the value is not a tagged smi. 310 // Jump to label if the value is not a tagged smi.
311 template <typename LabelType> 311 template <typename LabelType>
312 void JumpIfNotSmi(Register src, LabelType* on_not_smi); 312 void JumpIfNotSmi(Register src, LabelType* on_not_smi);
313 313
314 // Jump to label if the value is not a positive tagged smi. 314 // Jump to label if the value is not a non-negative tagged smi.
315 template <typename LabelType> 315 template <typename LabelType>
316 void JumpIfNotPositiveSmi(Register src, LabelType* on_not_smi); 316 void JumpUnlessNonNegativeSmi(Register src, LabelType* on_not_smi);
317 317
318 // Jump to label if the value, which must be a tagged smi, has value equal 318 // Jump to label if the value, which must be a tagged smi, has value equal
319 // to the constant. 319 // to the constant.
320 template <typename LabelType> 320 template <typename LabelType>
321 void JumpIfSmiEqualsConstant(Register src, 321 void JumpIfSmiEqualsConstant(Register src,
322 Smi* constant, 322 Smi* constant,
323 LabelType* on_equals); 323 LabelType* on_equals);
324 324
325 // Jump if either or both register are not smi values. 325 // Jump if either or both register are not smi values.
326 template <typename LabelType> 326 template <typename LabelType>
327 void JumpIfNotBothSmi(Register src1, 327 void JumpIfNotBothSmi(Register src1,
328 Register src2, 328 Register src2,
329 LabelType* on_not_both_smi); 329 LabelType* on_not_both_smi);
330 330
331 // Jump if either or both register are not positive smi values. 331 // Jump if either or both register are not non-negative smi values.
332 template <typename LabelType> 332 template <typename LabelType>
333 void JumpIfNotBothPositiveSmi(Register src1, Register src2, 333 void JumpUnlessBothNonNegativeSmi(Register src1, Register src2,
334 LabelType* on_not_both_smi); 334 LabelType* on_not_both_smi);
335 335
336 // Operations on tagged smi values. 336 // Operations on tagged smi values.
337 337
338 // Smis represent a subset of integers. The subset is always equivalent to 338 // Smis represent a subset of integers. The subset is always equivalent to
339 // a two's complement interpretation of a fixed number of bits. 339 // a two's complement interpretation of a fixed number of bits.
340 340
341 // Optimistically adds an integer constant to a supposed smi. 341 // Optimistically adds an integer constant to a supposed smi.
342 // If the src is not a smi, or the result is not a smi, jump to 342 // If the src is not a smi, or the result is not a smi, jump to
343 // the label. 343 // the label.
344 template <typename LabelType> 344 template <typename LabelType>
(...skipping 1111 matching lines...) Expand 10 before | Expand all | Expand 10 after
1456 1456
1457 1457
1458 template <typename LabelType> 1458 template <typename LabelType>
1459 void MacroAssembler::JumpIfNotSmi(Register src, LabelType* on_not_smi) { 1459 void MacroAssembler::JumpIfNotSmi(Register src, LabelType* on_not_smi) {
1460 Condition smi = CheckSmi(src); 1460 Condition smi = CheckSmi(src);
1461 j(NegateCondition(smi), on_not_smi); 1461 j(NegateCondition(smi), on_not_smi);
1462 } 1462 }
1463 1463
1464 1464
1465 template <typename LabelType> 1465 template <typename LabelType>
1466 void MacroAssembler::JumpIfNotPositiveSmi(Register src, 1466 void MacroAssembler::JumpUnlessNonNegativeSmi(
1467 LabelType* on_not_positive_smi) { 1467 Register src, LabelType* on_not_smi_or_negative) {
1468 Condition positive_smi = CheckPositiveSmi(src); 1468 Condition non_negative_smi = CheckNonNegativeSmi(src);
1469 j(NegateCondition(positive_smi), on_not_positive_smi); 1469 j(NegateCondition(non_negative_smi), on_not_smi_or_negative);
1470 } 1470 }
1471 1471
1472 1472
1473 template <typename LabelType> 1473 template <typename LabelType>
1474 void MacroAssembler::JumpIfSmiEqualsConstant(Register src, 1474 void MacroAssembler::JumpIfSmiEqualsConstant(Register src,
1475 Smi* constant, 1475 Smi* constant,
1476 LabelType* on_equals) { 1476 LabelType* on_equals) {
1477 SmiCompare(src, constant); 1477 SmiCompare(src, constant);
1478 j(equal, on_equals); 1478 j(equal, on_equals);
1479 } 1479 }
(...skipping 18 matching lines...) Expand all
1498 template <typename LabelType> 1498 template <typename LabelType>
1499 void MacroAssembler::JumpIfNotBothSmi(Register src1, 1499 void MacroAssembler::JumpIfNotBothSmi(Register src1,
1500 Register src2, 1500 Register src2,
1501 LabelType* on_not_both_smi) { 1501 LabelType* on_not_both_smi) {
1502 Condition both_smi = CheckBothSmi(src1, src2); 1502 Condition both_smi = CheckBothSmi(src1, src2);
1503 j(NegateCondition(both_smi), on_not_both_smi); 1503 j(NegateCondition(both_smi), on_not_both_smi);
1504 } 1504 }
1505 1505
1506 1506
1507 template <typename LabelType> 1507 template <typename LabelType>
1508 void MacroAssembler::JumpIfNotBothPositiveSmi(Register src1, 1508 void MacroAssembler::JumpUnlessBothNonNegativeSmi(Register src1,
1509 Register src2, 1509 Register src2,
1510 LabelType* on_not_both_smi) { 1510 LabelType* on_not_both_smi) {
1511 Condition both_smi = CheckBothPositiveSmi(src1, src2); 1511 Condition both_smi = CheckBothNonNegativeSmi(src1, src2);
1512 j(NegateCondition(both_smi), on_not_both_smi); 1512 j(NegateCondition(both_smi), on_not_both_smi);
1513 } 1513 }
1514 1514
1515 1515
1516 template <typename LabelType> 1516 template <typename LabelType>
1517 void MacroAssembler::JumpIfNotBothSequentialAsciiStrings(Register first_object, 1517 void MacroAssembler::JumpIfNotBothSequentialAsciiStrings(Register first_object,
1518 Register second_object, 1518 Register second_object,
1519 Register scratch1, 1519 Register scratch1,
1520 Register scratch2, 1520 Register scratch2,
1521 LabelType* on_fail) { 1521 LabelType* on_fail) {
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after
1690 Jump(adaptor, RelocInfo::CODE_TARGET); 1690 Jump(adaptor, RelocInfo::CODE_TARGET);
1691 } 1691 }
1692 bind(&invoke); 1692 bind(&invoke);
1693 } 1693 }
1694 } 1694 }
1695 1695
1696 1696
1697 } } // namespace v8::internal 1697 } } // namespace v8::internal
1698 1698
1699 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_ 1699 #endif // V8_X64_MACRO_ASSEMBLER_X64_H_
OLDNEW
« no previous file with comments | « src/x64/ic-x64.cc ('k') | src/x64/macro-assembler-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698