Index: src/ia32/macro-assembler-ia32.h |
=================================================================== |
--- src/ia32/macro-assembler-ia32.h (revision 5165) |
+++ src/ia32/macro-assembler-ia32.h (working copy) |
@@ -29,6 +29,7 @@ |
#define V8_IA32_MACRO_ASSEMBLER_IA32_H_ |
#include "assembler.h" |
+#include "type-info.h" |
namespace v8 { |
namespace internal { |
@@ -225,12 +226,41 @@ |
sar(reg, kSmiTagSize); |
} |
+ void SmiUntagAndBranchOnNonSmi(Register reg, TypeInfo info, Label* non_smi) { |
Lasse Reichstein
2010/08/06 08:20:12
In X64 I've been naming functions like this just S
Lasse Reichstein
2010/08/06 08:20:12
Do comment that this function is destructive.
Erik Corry
2010/08/09 13:13:49
Done.
Erik Corry
2010/08/09 13:13:49
Done.
|
+ ASSERT(kSmiTagSize == 1); |
+ sar(reg, kSmiTagSize); |
+ if (info.IsSmi()) { |
+ ASSERT(kSmiTag == 0); |
+ j(carry, non_smi); |
+ } |
+ } |
+ |
+ void SmiUntagAndBranchOnSmi(Register reg, Label* is_smi) { |
+ ASSERT(kSmiTagSize == 1); |
+ sar(reg, kSmiTagSize); |
+ ASSERT(kSmiTag == 0); |
+ j(not_carry, is_smi); |
+ } |
+ |
+ // Assumes input is a heap object. |
+ void JumpIfNotNumber(Register reg, TypeInfo info, Label* on_not_number); |
+ |
+ // Assumes input is a heap number. Jumps on things out of range. Also jumps |
+ // on the min negative int32. Ignores frational parts. |
Lasse Reichstein
2010/08/06 08:20:12
As stated otherwhere, the name doesn't match the f
Erik Corry
2010/08/09 13:13:49
Renamed.
|
+ void JumpIfNotInt32(Register reg, |
+ Register scratch, |
+ TypeInfo info, |
+ Label* on_not_int32); |
+ |
// Abort execution if argument is not a number. Used in debug code. |
void AbortIfNotNumber(Register object); |
// Abort execution if argument is not a smi. Used in debug code. |
void AbortIfNotSmi(Register object); |
+ // Abort execution if argument is a smi. Used in debug code. |
+ void AbortIfSmi(Register object); |
+ |
// --------------------------------------------------------------------------- |
// Exception handling |