| OLD | NEW |
| 1 // Copyright 2010 the V8 project authors. All rights reserved. | 1 // Copyright 2010 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 479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 490 void AllocateHeapNumberWithValue(Register result, | 490 void AllocateHeapNumberWithValue(Register result, |
| 491 DwVfpRegister value, | 491 DwVfpRegister value, |
| 492 Register scratch1, | 492 Register scratch1, |
| 493 Register scratch2, | 493 Register scratch2, |
| 494 Register heap_number_map, | 494 Register heap_number_map, |
| 495 Label* gc_required); | 495 Label* gc_required); |
| 496 | 496 |
| 497 // Copies a fixed number of fields of heap objects from src to dst. | 497 // Copies a fixed number of fields of heap objects from src to dst. |
| 498 void CopyFields(Register dst, Register src, RegList temps, int field_count); | 498 void CopyFields(Register dst, Register src, RegList temps, int field_count); |
| 499 | 499 |
| 500 // Copies a number of bytes from src to dst. All registers are clobbered. On |
| 501 // exit src and dst will point to the place just after where the last byte was |
| 502 // read or written and length will be zero. |
| 503 void CopyBytes(Register src, |
| 504 Register dst, |
| 505 Register length, |
| 506 Register scratch); |
| 507 |
| 500 // --------------------------------------------------------------------------- | 508 // --------------------------------------------------------------------------- |
| 501 // Support functions. | 509 // Support functions. |
| 502 | 510 |
| 503 // Try to get function prototype of a function and puts the value in | 511 // Try to get function prototype of a function and puts the value in |
| 504 // the result register. Checks that the function really is a | 512 // the result register. Checks that the function really is a |
| 505 // function and jumps to the miss label if the fast checks fail. The | 513 // function and jumps to the miss label if the fast checks fail. The |
| 506 // function register will be untouched; the other registers may be | 514 // function register will be untouched; the other registers may be |
| 507 // clobbered. | 515 // clobbered. |
| 508 void TryGetFunctionPrototype(Register function, | 516 void TryGetFunctionPrototype(Register function, |
| 509 Register result, | 517 Register result, |
| (...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 770 // Try to convert int32 to smi. If the value is to large, preserve | 778 // Try to convert int32 to smi. If the value is to large, preserve |
| 771 // the original value and jump to not_a_smi. Destroys scratch and | 779 // the original value and jump to not_a_smi. Destroys scratch and |
| 772 // sets flags. | 780 // sets flags. |
| 773 void TrySmiTag(Register reg, Label* not_a_smi, Register scratch) { | 781 void TrySmiTag(Register reg, Label* not_a_smi, Register scratch) { |
| 774 mov(scratch, reg); | 782 mov(scratch, reg); |
| 775 SmiTag(scratch, SetCC); | 783 SmiTag(scratch, SetCC); |
| 776 b(vs, not_a_smi); | 784 b(vs, not_a_smi); |
| 777 mov(reg, scratch); | 785 mov(reg, scratch); |
| 778 } | 786 } |
| 779 | 787 |
| 780 void SmiUntag(Register reg) { | 788 void SmiUntag(Register reg, SBit s = LeaveCC) { |
| 781 mov(reg, Operand(reg, ASR, kSmiTagSize)); | 789 mov(reg, Operand(reg, ASR, kSmiTagSize), s); |
| 782 } | 790 } |
| 783 void SmiUntag(Register dst, Register src) { | 791 void SmiUntag(Register dst, Register src, SBit s = LeaveCC) { |
| 784 mov(dst, Operand(src, ASR, kSmiTagSize)); | 792 mov(dst, Operand(src, ASR, kSmiTagSize), s); |
| 785 } | 793 } |
| 786 | 794 |
| 787 // Jump the register contains a smi. | 795 // Jump the register contains a smi. |
| 788 inline void JumpIfSmi(Register value, Label* smi_label) { | 796 inline void JumpIfSmi(Register value, Label* smi_label) { |
| 789 tst(value, Operand(kSmiTagMask)); | 797 tst(value, Operand(kSmiTagMask)); |
| 790 b(eq, smi_label); | 798 b(eq, smi_label); |
| 791 } | 799 } |
| 792 // Jump if either of the registers contain a non-smi. | 800 // Jump if either of the registers contain a non-smi. |
| 793 inline void JumpIfNotSmi(Register value, Label* not_smi_label) { | 801 inline void JumpIfNotSmi(Register value, Label* not_smi_label) { |
| 794 tst(value, Operand(kSmiTagMask)); | 802 tst(value, Operand(kSmiTagMask)); |
| (...skipping 170 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 965 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) | 973 #define __FILE_LINE__ __FILE__ ":" CODE_COVERAGE_TOSTRING(__LINE__) |
| 966 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> | 974 #define ACCESS_MASM(masm) masm->stop(__FILE_LINE__); masm-> |
| 967 #else | 975 #else |
| 968 #define ACCESS_MASM(masm) masm-> | 976 #define ACCESS_MASM(masm) masm-> |
| 969 #endif | 977 #endif |
| 970 | 978 |
| 971 | 979 |
| 972 } } // namespace v8::internal | 980 } } // namespace v8::internal |
| 973 | 981 |
| 974 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ | 982 #endif // V8_ARM_MACRO_ASSEMBLER_ARM_H_ |
| OLD | NEW |