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

Side by Side Diff: src/arm/macro-assembler-arm.cc

Issue 2762973004: [macro-assembler] Remove a bunch of unused functions. (Closed)
Patch Set: More. Created 3 years, 9 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
« no previous file with comments | « src/arm/macro-assembler-arm.h ('k') | src/arm64/macro-assembler-arm64.h » ('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 <limits.h> // For LONG_MIN, LONG_MAX. 5 #include <limits.h> // For LONG_MIN, LONG_MAX.
6 6
7 #if V8_TARGET_ARCH_ARM 7 #if V8_TARGET_ARCH_ARM
8 8
9 #include "src/assembler-inl.h" 9 #include "src/assembler-inl.h"
10 #include "src/base/bits.h" 10 #include "src/base/bits.h"
(...skipping 1905 matching lines...) Expand 10 before | Expand all | Expand 10 after
1916 1916
1917 Condition MacroAssembler::IsObjectStringType(Register obj, Register type, 1917 Condition MacroAssembler::IsObjectStringType(Register obj, Register type,
1918 Condition cond) { 1918 Condition cond) {
1919 ldr(type, FieldMemOperand(obj, HeapObject::kMapOffset), cond); 1919 ldr(type, FieldMemOperand(obj, HeapObject::kMapOffset), cond);
1920 ldrb(type, FieldMemOperand(type, Map::kInstanceTypeOffset), cond); 1920 ldrb(type, FieldMemOperand(type, Map::kInstanceTypeOffset), cond);
1921 tst(type, Operand(kIsNotStringMask), cond); 1921 tst(type, Operand(kIsNotStringMask), cond);
1922 DCHECK_EQ(0u, kStringTag); 1922 DCHECK_EQ(0u, kStringTag);
1923 return eq; 1923 return eq;
1924 } 1924 }
1925 1925
1926 void MacroAssembler::IsObjectNameType(Register object,
1927 Register scratch,
1928 Label* fail) {
1929 ldr(scratch, FieldMemOperand(object, HeapObject::kMapOffset));
1930 ldrb(scratch, FieldMemOperand(scratch, Map::kInstanceTypeOffset));
1931 cmp(scratch, Operand(LAST_NAME_TYPE));
1932 b(hi, fail);
1933 }
1934
1935 void MacroAssembler::MaybeDropFrames() { 1926 void MacroAssembler::MaybeDropFrames() {
1936 // Check whether we need to drop frames to restart a function on the stack. 1927 // Check whether we need to drop frames to restart a function on the stack.
1937 ExternalReference restart_fp = 1928 ExternalReference restart_fp =
1938 ExternalReference::debug_restart_fp_address(isolate()); 1929 ExternalReference::debug_restart_fp_address(isolate());
1939 mov(r1, Operand(restart_fp)); 1930 mov(r1, Operand(restart_fp));
1940 ldr(r1, MemOperand(r1)); 1931 ldr(r1, MemOperand(r1));
1941 tst(r1, r1); 1932 tst(r1, r1);
1942 Jump(isolate()->builtins()->FrameDropperTrampoline(), RelocInfo::CODE_TARGET, 1933 Jump(isolate()->builtins()->FrameDropperTrampoline(), RelocInfo::CODE_TARGET,
1943 ne); 1934 ne);
1944 } 1935 }
(...skipping 440 matching lines...) Expand 10 before | Expand all | Expand 10 after
2385 if (smi_check_type == DO_SMI_CHECK) { 2376 if (smi_check_type == DO_SMI_CHECK) {
2386 JumpIfSmi(obj, fail); 2377 JumpIfSmi(obj, fail);
2387 } 2378 }
2388 ldr(scratch, FieldMemOperand(obj, HeapObject::kMapOffset)); 2379 ldr(scratch, FieldMemOperand(obj, HeapObject::kMapOffset));
2389 LoadRoot(ip, index); 2380 LoadRoot(ip, index);
2390 cmp(scratch, ip); 2381 cmp(scratch, ip);
2391 b(ne, fail); 2382 b(ne, fail);
2392 } 2383 }
2393 2384
2394 2385
2395 void MacroAssembler::DispatchWeakMap(Register obj, Register scratch1,
2396 Register scratch2, Handle<WeakCell> cell,
2397 Handle<Code> success,
2398 SmiCheckType smi_check_type) {
2399 Label fail;
2400 if (smi_check_type == DO_SMI_CHECK) {
2401 JumpIfSmi(obj, &fail);
2402 }
2403 ldr(scratch1, FieldMemOperand(obj, HeapObject::kMapOffset));
2404 CmpWeakValue(scratch1, cell, scratch2);
2405 Jump(success, RelocInfo::CODE_TARGET, eq);
2406 bind(&fail);
2407 }
2408
2409
2410 void MacroAssembler::CmpWeakValue(Register value, Handle<WeakCell> cell,
2411 Register scratch) {
2412 mov(scratch, Operand(cell));
2413 ldr(scratch, FieldMemOperand(scratch, WeakCell::kValueOffset));
2414 cmp(value, scratch);
2415 }
2416
2417
2418 void MacroAssembler::GetWeakValue(Register value, Handle<WeakCell> cell) { 2386 void MacroAssembler::GetWeakValue(Register value, Handle<WeakCell> cell) {
2419 mov(value, Operand(cell)); 2387 mov(value, Operand(cell));
2420 ldr(value, FieldMemOperand(value, WeakCell::kValueOffset)); 2388 ldr(value, FieldMemOperand(value, WeakCell::kValueOffset));
2421 } 2389 }
2422 2390
2423 2391
2424 void MacroAssembler::LoadWeakValue(Register value, Handle<WeakCell> cell, 2392 void MacroAssembler::LoadWeakValue(Register value, Handle<WeakCell> cell,
2425 Label* miss) { 2393 Label* miss) {
2426 GetWeakValue(value, cell); 2394 GetWeakValue(value, cell);
2427 JumpIfSmi(value, miss); 2395 JumpIfSmi(value, miss);
(...skipping 280 matching lines...) Expand 10 before | Expand all | Expand 10 after
2708 } 2676 }
2709 } 2677 }
2710 2678
2711 2679
2712 void MacroAssembler::Assert(Condition cond, BailoutReason reason) { 2680 void MacroAssembler::Assert(Condition cond, BailoutReason reason) {
2713 if (emit_debug_code()) 2681 if (emit_debug_code())
2714 Check(cond, reason); 2682 Check(cond, reason);
2715 } 2683 }
2716 2684
2717 2685
2718 void MacroAssembler::AssertFastElements(Register elements) {
2719 if (emit_debug_code()) {
2720 DCHECK(!elements.is(ip));
2721 Label ok;
2722 push(elements);
2723 ldr(elements, FieldMemOperand(elements, HeapObject::kMapOffset));
2724 LoadRoot(ip, Heap::kFixedArrayMapRootIndex);
2725 cmp(elements, ip);
2726 b(eq, &ok);
2727 LoadRoot(ip, Heap::kFixedDoubleArrayMapRootIndex);
2728 cmp(elements, ip);
2729 b(eq, &ok);
2730 LoadRoot(ip, Heap::kFixedCOWArrayMapRootIndex);
2731 cmp(elements, ip);
2732 b(eq, &ok);
2733 Abort(kJSObjectWithFastElementsMapHasSlowElements);
2734 bind(&ok);
2735 pop(elements);
2736 }
2737 }
2738
2739 2686
2740 void MacroAssembler::Check(Condition cond, BailoutReason reason) { 2687 void MacroAssembler::Check(Condition cond, BailoutReason reason) {
2741 Label L; 2688 Label L;
2742 b(cond, &L); 2689 b(cond, &L);
2743 Abort(reason); 2690 Abort(reason);
2744 // will not return here 2691 // will not return here
2745 bind(&L); 2692 bind(&L);
2746 } 2693 }
2747 2694
2748 2695
(...skipping 151 matching lines...) Expand 10 before | Expand all | Expand 10 after
2900 2847
2901 void MacroAssembler::JumpIfEitherSmi(Register reg1, 2848 void MacroAssembler::JumpIfEitherSmi(Register reg1,
2902 Register reg2, 2849 Register reg2,
2903 Label* on_either_smi) { 2850 Label* on_either_smi) {
2904 STATIC_ASSERT(kSmiTag == 0); 2851 STATIC_ASSERT(kSmiTag == 0);
2905 tst(reg1, Operand(kSmiTagMask)); 2852 tst(reg1, Operand(kSmiTagMask));
2906 tst(reg2, Operand(kSmiTagMask), ne); 2853 tst(reg2, Operand(kSmiTagMask), ne);
2907 b(eq, on_either_smi); 2854 b(eq, on_either_smi);
2908 } 2855 }
2909 2856
2910 void MacroAssembler::AssertNotNumber(Register object) {
2911 if (emit_debug_code()) {
2912 STATIC_ASSERT(kSmiTag == 0);
2913 tst(object, Operand(kSmiTagMask));
2914 Check(ne, kOperandIsANumber);
2915 push(object);
2916 CompareObjectType(object, object, object, HEAP_NUMBER_TYPE);
2917 pop(object);
2918 Check(ne, kOperandIsANumber);
2919 }
2920 }
2921
2922 void MacroAssembler::AssertNotSmi(Register object) { 2857 void MacroAssembler::AssertNotSmi(Register object) {
2923 if (emit_debug_code()) { 2858 if (emit_debug_code()) {
2924 STATIC_ASSERT(kSmiTag == 0); 2859 STATIC_ASSERT(kSmiTag == 0);
2925 tst(object, Operand(kSmiTagMask)); 2860 tst(object, Operand(kSmiTagMask));
2926 Check(ne, kOperandIsASmi); 2861 Check(ne, kOperandIsASmi);
2927 } 2862 }
2928 } 2863 }
2929 2864
2930 2865
2931 void MacroAssembler::AssertSmi(Register object) { 2866 void MacroAssembler::AssertSmi(Register object) {
2932 if (emit_debug_code()) { 2867 if (emit_debug_code()) {
2933 STATIC_ASSERT(kSmiTag == 0); 2868 STATIC_ASSERT(kSmiTag == 0);
2934 tst(object, Operand(kSmiTagMask)); 2869 tst(object, Operand(kSmiTagMask));
2935 Check(eq, kOperandIsNotSmi); 2870 Check(eq, kOperandIsNotSmi);
2936 } 2871 }
2937 } 2872 }
2938 2873
2939 2874
2940 void MacroAssembler::AssertString(Register object) {
2941 if (emit_debug_code()) {
2942 STATIC_ASSERT(kSmiTag == 0);
2943 tst(object, Operand(kSmiTagMask));
2944 Check(ne, kOperandIsASmiAndNotAString);
2945 push(object);
2946 ldr(object, FieldMemOperand(object, HeapObject::kMapOffset));
2947 CompareInstanceType(object, object, FIRST_NONSTRING_TYPE);
2948 pop(object);
2949 Check(lo, kOperandIsNotAString);
2950 }
2951 }
2952
2953
2954 void MacroAssembler::AssertName(Register object) {
2955 if (emit_debug_code()) {
2956 STATIC_ASSERT(kSmiTag == 0);
2957 tst(object, Operand(kSmiTagMask));
2958 Check(ne, kOperandIsASmiAndNotAName);
2959 push(object);
2960 ldr(object, FieldMemOperand(object, HeapObject::kMapOffset));
2961 CompareInstanceType(object, object, LAST_NAME_TYPE);
2962 pop(object);
2963 Check(le, kOperandIsNotAName);
2964 }
2965 }
2966
2967
2968 void MacroAssembler::AssertFunction(Register object) { 2875 void MacroAssembler::AssertFunction(Register object) {
2969 if (emit_debug_code()) { 2876 if (emit_debug_code()) {
2970 STATIC_ASSERT(kSmiTag == 0); 2877 STATIC_ASSERT(kSmiTag == 0);
2971 tst(object, Operand(kSmiTagMask)); 2878 tst(object, Operand(kSmiTagMask));
2972 Check(ne, kOperandIsASmiAndNotAFunction); 2879 Check(ne, kOperandIsASmiAndNotAFunction);
2973 push(object); 2880 push(object);
2974 CompareObjectType(object, object, object, JS_FUNCTION_TYPE); 2881 CompareObjectType(object, object, object, JS_FUNCTION_TYPE);
2975 pop(object); 2882 pop(object);
2976 Check(eq, kOperandIsNotAFunction); 2883 Check(eq, kOperandIsNotAFunction);
2977 } 2884 }
(...skipping 17 matching lines...) Expand all
2995 STATIC_ASSERT(kSmiTag == 0); 2902 STATIC_ASSERT(kSmiTag == 0);
2996 tst(object, Operand(kSmiTagMask)); 2903 tst(object, Operand(kSmiTagMask));
2997 Check(ne, kOperandIsASmiAndNotAGeneratorObject); 2904 Check(ne, kOperandIsASmiAndNotAGeneratorObject);
2998 push(object); 2905 push(object);
2999 CompareObjectType(object, object, object, JS_GENERATOR_OBJECT_TYPE); 2906 CompareObjectType(object, object, object, JS_GENERATOR_OBJECT_TYPE);
3000 pop(object); 2907 pop(object);
3001 Check(eq, kOperandIsNotAGeneratorObject); 2908 Check(eq, kOperandIsNotAGeneratorObject);
3002 } 2909 }
3003 } 2910 }
3004 2911
3005 void MacroAssembler::AssertReceiver(Register object) {
3006 if (emit_debug_code()) {
3007 STATIC_ASSERT(kSmiTag == 0);
3008 tst(object, Operand(kSmiTagMask));
3009 Check(ne, kOperandIsASmiAndNotAReceiver);
3010 push(object);
3011 STATIC_ASSERT(LAST_TYPE == LAST_JS_RECEIVER_TYPE);
3012 CompareObjectType(object, object, object, FIRST_JS_RECEIVER_TYPE);
3013 pop(object);
3014 Check(hs, kOperandIsNotAReceiver);
3015 }
3016 }
3017
3018
3019 void MacroAssembler::AssertUndefinedOrAllocationSite(Register object, 2912 void MacroAssembler::AssertUndefinedOrAllocationSite(Register object,
3020 Register scratch) { 2913 Register scratch) {
3021 if (emit_debug_code()) { 2914 if (emit_debug_code()) {
3022 Label done_checking; 2915 Label done_checking;
3023 AssertNotSmi(object); 2916 AssertNotSmi(object);
3024 CompareRoot(object, Heap::kUndefinedValueRootIndex); 2917 CompareRoot(object, Heap::kUndefinedValueRootIndex);
3025 b(eq, &done_checking); 2918 b(eq, &done_checking);
3026 ldr(scratch, FieldMemOperand(object, HeapObject::kMapOffset)); 2919 ldr(scratch, FieldMemOperand(object, HeapObject::kMapOffset));
3027 CompareRoot(scratch, Heap::kAllocationSiteMapRootIndex); 2920 CompareRoot(scratch, Heap::kAllocationSiteMapRootIndex);
3028 Assert(eq, kExpectedUndefinedOrCell); 2921 Assert(eq, kExpectedUndefinedOrCell);
(...skipping 855 matching lines...) Expand 10 before | Expand all | Expand 10 after
3884 } 3777 }
3885 } 3778 }
3886 if (mag.shift > 0) mov(result, Operand(result, ASR, mag.shift)); 3779 if (mag.shift > 0) mov(result, Operand(result, ASR, mag.shift));
3887 add(result, result, Operand(dividend, LSR, 31)); 3780 add(result, result, Operand(dividend, LSR, 31));
3888 } 3781 }
3889 3782
3890 } // namespace internal 3783 } // namespace internal
3891 } // namespace v8 3784 } // namespace v8
3892 3785
3893 #endif // V8_TARGET_ARCH_ARM 3786 #endif // V8_TARGET_ARCH_ARM
OLDNEW
« no previous file with comments | « src/arm/macro-assembler-arm.h ('k') | src/arm64/macro-assembler-arm64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698