Index: src/x64/macro-assembler-x64.h |
diff --git a/src/x64/macro-assembler-x64.h b/src/x64/macro-assembler-x64.h |
index a5a03f6aca2e0555a5b9b4b288a721cd788ab5fe..1d7d141f340499fcc6ac722bf3068ae99863863e 100644 |
--- a/src/x64/macro-assembler-x64.h |
+++ b/src/x64/macro-assembler-x64.h |
@@ -470,10 +470,18 @@ class MacroAssembler: public Assembler { |
// Test-and-jump functions. Typically combines a check function |
// above with a conditional jump. |
+ // Jump if the value can be represented by a smi. |
+ void JumpIfValidSmiValue(Register src, Label* on_valid, |
+ Label::Distance near_jump = Label::kFar); |
+ |
// Jump if the value cannot be represented by a smi. |
void JumpIfNotValidSmiValue(Register src, Label* on_invalid, |
Label::Distance near_jump = Label::kFar); |
+ // Jump if the unsigned integer value can be represented by a smi. |
+ void JumpIfUIntValidSmiValue(Register src, Label* on_valid, |
+ Label::Distance near_jump = Label::kFar); |
+ |
// Jump if the unsigned integer value cannot be represented by a smi. |
void JumpIfUIntNotValidSmiValue(Register src, Label* on_invalid, |
Label::Distance near_jump = Label::kFar); |
@@ -631,7 +639,9 @@ class MacroAssembler: public Assembler { |
void SmiShiftLeftConstant(Register dst, |
Register src, |
- int shift_value); |
+ int shift_value, |
+ Label* on_not_smi_result = NULL, |
+ Label::Distance near_jump = Label::kFar); |
void SmiShiftLogicalRightConstant(Register dst, |
Register src, |
int shift_value, |
@@ -645,7 +655,9 @@ class MacroAssembler: public Assembler { |
// Uses and clobbers rcx, so dst may not be rcx. |
void SmiShiftLeft(Register dst, |
Register src1, |
- Register src2); |
+ Register src2, |
+ Label* on_not_smi_result = NULL, |
+ Label::Distance near_jump = Label::kFar); |
// Shifts a smi value to the right, shifting in zero bits at the top, and |
// returns the unsigned intepretation of the result if that is a smi. |
// Uses and clobbers rcx, so dst may not be rcx. |