OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #include "v8.h" | 5 #include "v8.h" |
6 | 6 |
7 #if V8_TARGET_ARCH_ARM | 7 #if V8_TARGET_ARCH_ARM |
8 | 8 |
9 #include "codegen.h" | 9 #include "codegen.h" |
10 #include "macro-assembler.h" | 10 #include "macro-assembler.h" |
(...skipping 690 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
701 | 701 |
702 // Handle external strings. | 702 // Handle external strings. |
703 __ bind(&external_string); | 703 __ bind(&external_string); |
704 if (FLAG_debug_code) { | 704 if (FLAG_debug_code) { |
705 // Assert that we do not have a cons or slice (indirect strings) here. | 705 // Assert that we do not have a cons or slice (indirect strings) here. |
706 // Sequential strings have already been ruled out. | 706 // Sequential strings have already been ruled out. |
707 __ tst(result, Operand(kIsIndirectStringMask)); | 707 __ tst(result, Operand(kIsIndirectStringMask)); |
708 __ Assert(eq, kExternalStringExpectedButNotFound); | 708 __ Assert(eq, kExternalStringExpectedButNotFound); |
709 } | 709 } |
710 // Rule out short external strings. | 710 // Rule out short external strings. |
711 STATIC_CHECK(kShortExternalStringTag != 0); | 711 STATIC_ASSERT(kShortExternalStringTag != 0); |
712 __ tst(result, Operand(kShortExternalStringMask)); | 712 __ tst(result, Operand(kShortExternalStringMask)); |
713 __ b(ne, call_runtime); | 713 __ b(ne, call_runtime); |
714 __ ldr(string, FieldMemOperand(string, ExternalString::kResourceDataOffset)); | 714 __ ldr(string, FieldMemOperand(string, ExternalString::kResourceDataOffset)); |
715 | 715 |
716 Label ascii, done; | 716 Label ascii, done; |
717 __ bind(&check_encoding); | 717 __ bind(&check_encoding); |
718 STATIC_ASSERT(kTwoByteStringTag == 0); | 718 STATIC_ASSERT(kTwoByteStringTag == 0); |
719 __ tst(result, Operand(kStringEncodingMask)); | 719 __ tst(result, Operand(kStringEncodingMask)); |
720 __ b(ne, &ascii); | 720 __ b(ne, &ascii); |
721 // Two-byte string. | 721 // Two-byte string. |
(...skipping 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
881 patcher.masm()->add(r0, pc, Operand(-8)); | 881 patcher.masm()->add(r0, pc, Operand(-8)); |
882 patcher.masm()->ldr(pc, MemOperand(pc, -4)); | 882 patcher.masm()->ldr(pc, MemOperand(pc, -4)); |
883 patcher.masm()->emit_code_stub_address(stub); | 883 patcher.masm()->emit_code_stub_address(stub); |
884 } | 884 } |
885 } | 885 } |
886 | 886 |
887 | 887 |
888 } } // namespace v8::internal | 888 } } // namespace v8::internal |
889 | 889 |
890 #endif // V8_TARGET_ARCH_ARM | 890 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |