Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(71)

Side by Side Diff: src/arm/code-stubs-arm.cc

Issue 528993002: First step to cleanup the power-of-2 mess. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: clang-format Created 6 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/arm/assembler-arm.cc ('k') | src/arm/lithium-codegen-arm.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 "src/v8.h" 5 #include "src/v8.h"
6 6
7 #if V8_TARGET_ARCH_ARM 7 #if V8_TARGET_ARCH_ARM
8 8
9 #include "src/base/bits.h"
9 #include "src/bootstrapper.h" 10 #include "src/bootstrapper.h"
10 #include "src/code-stubs.h" 11 #include "src/code-stubs.h"
11 #include "src/codegen.h" 12 #include "src/codegen.h"
12 #include "src/ic/handler-compiler.h" 13 #include "src/ic/handler-compiler.h"
13 #include "src/isolate.h" 14 #include "src/isolate.h"
14 #include "src/jsregexp.h" 15 #include "src/jsregexp.h"
15 #include "src/regexp-macro-assembler.h" 16 #include "src/regexp-macro-assembler.h"
16 #include "src/runtime.h" 17 #include "src/runtime.h"
17 18
18 namespace v8 { 19 namespace v8 {
(...skipping 2927 matching lines...) Expand 10 before | Expand all | Expand 10 after
2946 } 2947 }
2947 2948
2948 2949
2949 // ------------------------------------------------------------------------- 2950 // -------------------------------------------------------------------------
2950 // StringCharFromCodeGenerator 2951 // StringCharFromCodeGenerator
2951 2952
2952 void StringCharFromCodeGenerator::GenerateFast(MacroAssembler* masm) { 2953 void StringCharFromCodeGenerator::GenerateFast(MacroAssembler* masm) {
2953 // Fast case of Heap::LookupSingleCharacterStringFromCode. 2954 // Fast case of Heap::LookupSingleCharacterStringFromCode.
2954 STATIC_ASSERT(kSmiTag == 0); 2955 STATIC_ASSERT(kSmiTag == 0);
2955 STATIC_ASSERT(kSmiShiftSize == 0); 2956 STATIC_ASSERT(kSmiShiftSize == 0);
2956 DCHECK(IsPowerOf2(String::kMaxOneByteCharCode + 1)); 2957 DCHECK(base::bits::IsPowerOfTwo32(String::kMaxOneByteCharCode + 1));
2957 __ tst(code_, 2958 __ tst(code_,
2958 Operand(kSmiTagMask | 2959 Operand(kSmiTagMask |
2959 ((~String::kMaxOneByteCharCode) << kSmiTagSize))); 2960 ((~String::kMaxOneByteCharCode) << kSmiTagSize)));
2960 __ b(ne, &slow_case_); 2961 __ b(ne, &slow_case_);
2961 2962
2962 __ LoadRoot(result_, Heap::kSingleCharacterStringCacheRootIndex); 2963 __ LoadRoot(result_, Heap::kSingleCharacterStringCacheRootIndex);
2963 // At this point code register contains smi tagged ASCII char code. 2964 // At this point code register contains smi tagged ASCII char code.
2964 __ add(result_, result_, Operand::PointerOffsetFromSmiKey(code_)); 2965 __ add(result_, result_, Operand::PointerOffsetFromSmiKey(code_));
2965 __ ldr(result_, FieldMemOperand(result_, FixedArray::kHeaderSize)); 2966 __ ldr(result_, FieldMemOperand(result_, FixedArray::kHeaderSize));
2966 __ CompareRoot(result_, Heap::kUndefinedValueRootIndex); 2967 __ CompareRoot(result_, Heap::kUndefinedValueRootIndex);
(...skipping 1419 matching lines...) Expand 10 before | Expand all | Expand 10 after
4386 __ sub(r0, lr, Operand(kReturnAddressDistanceFromFunctionStart)); 4387 __ sub(r0, lr, Operand(kReturnAddressDistanceFromFunctionStart));
4387 4388
4388 // The caller's return address is above the saved temporaries. 4389 // The caller's return address is above the saved temporaries.
4389 // Grab that for the second argument to the hook. 4390 // Grab that for the second argument to the hook.
4390 __ add(r1, sp, Operand(kNumSavedRegs * kPointerSize)); 4391 __ add(r1, sp, Operand(kNumSavedRegs * kPointerSize));
4391 4392
4392 // Align the stack if necessary. 4393 // Align the stack if necessary.
4393 int frame_alignment = masm->ActivationFrameAlignment(); 4394 int frame_alignment = masm->ActivationFrameAlignment();
4394 if (frame_alignment > kPointerSize) { 4395 if (frame_alignment > kPointerSize) {
4395 __ mov(r5, sp); 4396 __ mov(r5, sp);
4396 DCHECK(IsPowerOf2(frame_alignment)); 4397 DCHECK(base::bits::IsPowerOfTwo32(frame_alignment));
4397 __ and_(sp, sp, Operand(-frame_alignment)); 4398 __ and_(sp, sp, Operand(-frame_alignment));
4398 } 4399 }
4399 4400
4400 #if V8_HOST_ARCH_ARM 4401 #if V8_HOST_ARCH_ARM
4401 int32_t entry_hook = 4402 int32_t entry_hook =
4402 reinterpret_cast<int32_t>(isolate()->function_entry_hook()); 4403 reinterpret_cast<int32_t>(isolate()->function_entry_hook());
4403 __ mov(ip, Operand(entry_hook)); 4404 __ mov(ip, Operand(entry_hook));
4404 #else 4405 #else
4405 // Under the simulator we need to indirect the entry hook through a 4406 // Under the simulator we need to indirect the entry hook through a
4406 // trampoline function at a known address. 4407 // trampoline function at a known address.
(...skipping 446 matching lines...) Expand 10 before | Expand all | Expand 10 after
4853 MemOperand(fp, 6 * kPointerSize), 4854 MemOperand(fp, 6 * kPointerSize),
4854 NULL); 4855 NULL);
4855 } 4856 }
4856 4857
4857 4858
4858 #undef __ 4859 #undef __
4859 4860
4860 } } // namespace v8::internal 4861 } } // namespace v8::internal
4861 4862
4862 #endif // V8_TARGET_ARCH_ARM 4863 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « src/arm/assembler-arm.cc ('k') | src/arm/lithium-codegen-arm.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698