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

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

Issue 22290005: Move ToI conversions to the MacroAssembler (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: address review and add test coverage for external array number truncation Created 7 years, 4 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 | Annotate | Revision Log
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 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 451 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 // FCmp is similar to integer cmp, but requires unsigned 462 // FCmp is similar to integer cmp, but requires unsigned
463 // jcc instructions (je, ja, jae, jb, jbe, je, and jz). 463 // jcc instructions (je, ja, jae, jb, jbe, je, and jz).
464 void FCmp(); 464 void FCmp();
465 465
466 void ClampUint8(Register reg); 466 void ClampUint8(Register reg);
467 467
468 void ClampDoubleToUint8(XMMRegister input_reg, 468 void ClampDoubleToUint8(XMMRegister input_reg,
469 XMMRegister scratch_reg, 469 XMMRegister scratch_reg,
470 Register result_reg); 470 Register result_reg);
471 471
472 void SlowTruncateToI(Register input_reg, Register result_reg,
473 int index = HeapNumber::kValueOffset - kHeapObjectTag);
474
475 void TruncateHeapNumberToI(Register input_reg, Register result_reg);
476 void TruncateDoubleToI(XMMRegister input_reg, Register result_reg);
477
478 void DoubleToI(XMMRegister input_reg, Register result_reg,
479 XMMRegister scratch, bool bailout_on_minus_zero,
480 Label* conversion_failed, Label::Distance dst = Label::kFar);
481
482 void TaggedToI(Register input_reg, Register result_reg, XMMRegister temp,
483 bool bailout_on_minus_zero, Label* bailout);
484 void TaggedToI(Register input_reg, Register result_reg,
danno 2013/08/13 13:04:20 I think it's better to not have this second versio
485 bool bailout_on_minus_zero, Label* bailout) {
486 TaggedToI(input_reg, result_reg, no_xmm_reg,
487 bailout_on_minus_zero, bailout);
488 }
472 489
473 // Smi tagging support. 490 // Smi tagging support.
474 void SmiTag(Register reg) { 491 void SmiTag(Register reg) {
475 STATIC_ASSERT(kSmiTag == 0); 492 STATIC_ASSERT(kSmiTag == 0);
476 STATIC_ASSERT(kSmiTagSize == 1); 493 STATIC_ASSERT(kSmiTagSize == 1);
477 add(reg, reg); 494 add(reg, reg);
478 } 495 }
479 void SmiUntag(Register reg) { 496 void SmiUntag(Register reg) {
480 sar(reg, kSmiTagSize); 497 sar(reg, kSmiTagSize);
481 } 498 }
(...skipping 573 matching lines...) Expand 10 before | Expand all | Expand 10 after
1055 } \ 1072 } \
1056 masm-> 1073 masm->
1057 #else 1074 #else
1058 #define ACCESS_MASM(masm) masm-> 1075 #define ACCESS_MASM(masm) masm->
1059 #endif 1076 #endif
1060 1077
1061 1078
1062 } } // namespace v8::internal 1079 } } // namespace v8::internal
1063 1080
1064 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_ 1081 #endif // V8_IA32_MACRO_ASSEMBLER_IA32_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698