OLD | NEW |
1 // Copyright (c) 1994-2006 Sun Microsystems Inc. | 1 // Copyright (c) 1994-2006 Sun Microsystems Inc. |
2 // All Rights Reserved. | 2 // All Rights Reserved. |
3 // | 3 // |
4 // Redistribution and use in source and binary forms, with or without | 4 // Redistribution and use in source and binary forms, with or without |
5 // modification, are permitted provided that the following conditions | 5 // modification, are permitted provided that the following conditions |
6 // are met: | 6 // are met: |
7 // | 7 // |
8 // - Redistributions of source code must retain the above copyright notice, | 8 // - Redistributions of source code must retain the above copyright notice, |
9 // this list of conditions and the following disclaimer. | 9 // this list of conditions and the following disclaimer. |
10 // | 10 // |
(...skipping 3820 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3831 { | 3831 { |
3832 // Block recursive calls to CheckConstPool. | 3832 // Block recursive calls to CheckConstPool. |
3833 BlockConstPoolScope block_const_pool(this); | 3833 BlockConstPoolScope block_const_pool(this); |
3834 RecordComment("[ Constant Pool"); | 3834 RecordComment("[ Constant Pool"); |
3835 RecordConstPool(size); | 3835 RecordConstPool(size); |
3836 | 3836 |
3837 Label size_check; | 3837 Label size_check; |
3838 bind(&size_check); | 3838 bind(&size_check); |
3839 | 3839 |
3840 // Emit jump over constant pool if necessary. | 3840 // Emit jump over constant pool if necessary. |
3841 Label after_pool; | 3841 if (require_jump) b(size - kPcLoadDelta); |
3842 if (require_jump) { | |
3843 b(&after_pool); | |
3844 } | |
3845 | 3842 |
3846 // Put down constant pool marker "Undefined instruction". | 3843 // Put down constant pool marker "Undefined instruction". |
3847 // The data size helps disassembly know what to print. | 3844 // The data size helps disassembly know what to print. |
3848 emit(kConstantPoolMarker | | 3845 emit(kConstantPoolMarker | |
3849 EncodeConstantPoolLength(size_after_marker / kPointerSize)); | 3846 EncodeConstantPoolLength(size_after_marker / kPointerSize)); |
3850 | 3847 |
3851 if (require_64_bit_align) { | 3848 if (require_64_bit_align) { |
3852 emit(kConstantPoolMarker); | 3849 emit(kConstantPoolMarker); |
3853 } | 3850 } |
3854 | 3851 |
(...skipping 63 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3918 } | 3915 } |
3919 | 3916 |
3920 num_pending_32_bit_constants_ = 0; | 3917 num_pending_32_bit_constants_ = 0; |
3921 num_pending_64_bit_constants_ = 0; | 3918 num_pending_64_bit_constants_ = 0; |
3922 first_const_pool_32_use_ = -1; | 3919 first_const_pool_32_use_ = -1; |
3923 first_const_pool_64_use_ = -1; | 3920 first_const_pool_64_use_ = -1; |
3924 | 3921 |
3925 RecordComment("]"); | 3922 RecordComment("]"); |
3926 | 3923 |
3927 DCHECK_EQ(size, SizeOfCodeGeneratedSince(&size_check)); | 3924 DCHECK_EQ(size, SizeOfCodeGeneratedSince(&size_check)); |
3928 | |
3929 if (after_pool.is_linked()) { | |
3930 bind(&after_pool); | |
3931 } | |
3932 } | 3925 } |
3933 | 3926 |
3934 // Since a constant pool was just emitted, move the check offset forward by | 3927 // Since a constant pool was just emitted, move the check offset forward by |
3935 // the standard interval. | 3928 // the standard interval. |
3936 next_buffer_check_ = pc_offset() + kCheckPoolInterval; | 3929 next_buffer_check_ = pc_offset() + kCheckPoolInterval; |
3937 } | 3930 } |
3938 | 3931 |
3939 | 3932 |
3940 void Assembler::PatchConstantPoolAccessInstruction( | 3933 void Assembler::PatchConstantPoolAccessInstruction( |
3941 int pc_offset, int offset, ConstantPoolEntry::Access access, | 3934 int pc_offset, int offset, ConstantPoolEntry::Access access, |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3988 DCHECK(is_uint12(offset)); | 3981 DCHECK(is_uint12(offset)); |
3989 instr_at_put(pc, SetLdrRegisterImmediateOffset(instr, offset)); | 3982 instr_at_put(pc, SetLdrRegisterImmediateOffset(instr, offset)); |
3990 } | 3983 } |
3991 } | 3984 } |
3992 | 3985 |
3993 | 3986 |
3994 } // namespace internal | 3987 } // namespace internal |
3995 } // namespace v8 | 3988 } // namespace v8 |
3996 | 3989 |
3997 #endif // V8_TARGET_ARCH_ARM | 3990 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |