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

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

Issue 2580653002: [cleanup] Drop unused Allocate*String MacroAssembler instructions (Closed)
Patch Set: Created 4 years 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/s390/macro-assembler-s390.h ('k') | src/x64/macro-assembler-x64.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 2014 the V8 project authors. All rights reserved. 1 // Copyright 2014 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 <assert.h> // For assert 5 #include <assert.h> // For assert
6 #include <limits.h> // For LONG_MIN, LONG_MAX. 6 #include <limits.h> // For LONG_MIN, LONG_MAX.
7 7
8 #if V8_TARGET_ARCH_S390 8 #if V8_TARGET_ARCH_S390
9 9
10 #include "src/base/bits.h" 10 #include "src/base/bits.h"
(...skipping 1829 matching lines...) Expand 10 before | Expand all | Expand 10 after
1840 // Calculate new top using result. 1840 // Calculate new top using result.
1841 AddP(result_end, result, Operand(object_size)); 1841 AddP(result_end, result, Operand(object_size));
1842 1842
1843 // The top pointer is not updated for allocation folding dominators. 1843 // The top pointer is not updated for allocation folding dominators.
1844 StoreP(result_end, MemOperand(top_address)); 1844 StoreP(result_end, MemOperand(top_address));
1845 1845
1846 // Tag object. 1846 // Tag object.
1847 AddP(result, result, Operand(kHeapObjectTag)); 1847 AddP(result, result, Operand(kHeapObjectTag));
1848 } 1848 }
1849 1849
1850 void MacroAssembler::AllocateTwoByteString(Register result, Register length,
1851 Register scratch1, Register scratch2,
1852 Register scratch3,
1853 Label* gc_required) {
1854 // Calculate the number of bytes needed for the characters in the string while
1855 // observing object alignment.
1856 DCHECK((SeqTwoByteString::kHeaderSize & kObjectAlignmentMask) == 0);
1857
1858 ShiftLeftP(scratch1, length, Operand(1)); // Length in bytes, not chars.
1859 AddP(scratch1, Operand(kObjectAlignmentMask + SeqTwoByteString::kHeaderSize));
1860
1861 AndP(scratch1, Operand(~kObjectAlignmentMask));
1862
1863 // Allocate two-byte string in new space.
1864 Allocate(scratch1, result, scratch2, scratch3, gc_required,
1865 NO_ALLOCATION_FLAGS);
1866
1867 // Set the map, length and hash field.
1868 InitializeNewString(result, length, Heap::kStringMapRootIndex, scratch1,
1869 scratch2);
1870 }
1871
1872 void MacroAssembler::AllocateOneByteString(Register result, Register length,
1873 Register scratch1, Register scratch2,
1874 Register scratch3,
1875 Label* gc_required) {
1876 // Calculate the number of bytes needed for the characters in the string while
1877 // observing object alignment.
1878 DCHECK((SeqOneByteString::kHeaderSize & kObjectAlignmentMask) == 0);
1879 DCHECK(kCharSize == 1);
1880 AddP(scratch1, length,
1881 Operand(kObjectAlignmentMask + SeqOneByteString::kHeaderSize));
1882 AndP(scratch1, Operand(~kObjectAlignmentMask));
1883
1884 // Allocate one-byte string in new space.
1885 Allocate(scratch1, result, scratch2, scratch3, gc_required,
1886 NO_ALLOCATION_FLAGS);
1887
1888 // Set the map, length and hash field.
1889 InitializeNewString(result, length, Heap::kOneByteStringMapRootIndex,
1890 scratch1, scratch2);
1891 }
1892
1893 void MacroAssembler::AllocateTwoByteConsString(Register result, Register length,
1894 Register scratch1,
1895 Register scratch2,
1896 Label* gc_required) {
1897 Allocate(ConsString::kSize, result, scratch1, scratch2, gc_required,
1898 NO_ALLOCATION_FLAGS);
1899
1900 InitializeNewString(result, length, Heap::kConsStringMapRootIndex, scratch1,
1901 scratch2);
1902 }
1903
1904 void MacroAssembler::AllocateOneByteConsString(Register result, Register length,
1905 Register scratch1,
1906 Register scratch2,
1907 Label* gc_required) {
1908 Allocate(ConsString::kSize, result, scratch1, scratch2, gc_required,
1909 NO_ALLOCATION_FLAGS);
1910
1911 InitializeNewString(result, length, Heap::kConsOneByteStringMapRootIndex,
1912 scratch1, scratch2);
1913 }
1914
1915 void MacroAssembler::AllocateTwoByteSlicedString(Register result,
1916 Register length,
1917 Register scratch1,
1918 Register scratch2,
1919 Label* gc_required) {
1920 Allocate(SlicedString::kSize, result, scratch1, scratch2, gc_required,
1921 NO_ALLOCATION_FLAGS);
1922
1923 InitializeNewString(result, length, Heap::kSlicedStringMapRootIndex, scratch1,
1924 scratch2);
1925 }
1926
1927 void MacroAssembler::AllocateOneByteSlicedString(Register result,
1928 Register length,
1929 Register scratch1,
1930 Register scratch2,
1931 Label* gc_required) {
1932 Allocate(SlicedString::kSize, result, scratch1, scratch2, gc_required,
1933 NO_ALLOCATION_FLAGS);
1934
1935 InitializeNewString(result, length, Heap::kSlicedOneByteStringMapRootIndex,
1936 scratch1, scratch2);
1937 }
1938
1939 void MacroAssembler::CompareObjectType(Register object, Register map, 1850 void MacroAssembler::CompareObjectType(Register object, Register map,
1940 Register type_reg, InstanceType type) { 1851 Register type_reg, InstanceType type) {
1941 const Register temp = type_reg.is(no_reg) ? r0 : type_reg; 1852 const Register temp = type_reg.is(no_reg) ? r0 : type_reg;
1942 1853
1943 LoadP(map, FieldMemOperand(object, HeapObject::kMapOffset)); 1854 LoadP(map, FieldMemOperand(object, HeapObject::kMapOffset));
1944 CompareInstanceType(map, temp, type); 1855 CompareInstanceType(map, temp, type);
1945 } 1856 }
1946 1857
1947 void MacroAssembler::CompareInstanceType(Register map, Register type_reg, 1858 void MacroAssembler::CompareInstanceType(Register map, Register type_reg,
1948 InstanceType type) { 1859 InstanceType type) {
(...skipping 837 matching lines...) Expand 10 before | Expand all | Expand 10 after
2786 if (!scratch1.is(first)) LoadRR(scratch1, first); 2697 if (!scratch1.is(first)) LoadRR(scratch1, first);
2787 if (!scratch2.is(second)) LoadRR(scratch2, second); 2698 if (!scratch2.is(second)) LoadRR(scratch2, second);
2788 nilf(scratch1, Operand(kFlatOneByteStringMask)); 2699 nilf(scratch1, Operand(kFlatOneByteStringMask));
2789 CmpP(scratch1, Operand(kFlatOneByteStringTag)); 2700 CmpP(scratch1, Operand(kFlatOneByteStringTag));
2790 bne(failure); 2701 bne(failure);
2791 nilf(scratch2, Operand(kFlatOneByteStringMask)); 2702 nilf(scratch2, Operand(kFlatOneByteStringMask));
2792 CmpP(scratch2, Operand(kFlatOneByteStringTag)); 2703 CmpP(scratch2, Operand(kFlatOneByteStringTag));
2793 bne(failure); 2704 bne(failure);
2794 } 2705 }
2795 2706
2796 void MacroAssembler::JumpIfInstanceTypeIsNotSequentialOneByte(Register type,
2797 Register scratch,
2798 Label* failure) {
2799 const int kFlatOneByteStringMask =
2800 kIsNotStringMask | kStringEncodingMask | kStringRepresentationMask;
2801 const int kFlatOneByteStringTag =
2802 kStringTag | kOneByteStringTag | kSeqStringTag;
2803
2804 if (!scratch.is(type)) LoadRR(scratch, type);
2805 nilf(scratch, Operand(kFlatOneByteStringMask));
2806 CmpP(scratch, Operand(kFlatOneByteStringTag));
2807 bne(failure);
2808 }
2809
2810 static const int kRegisterPassedArguments = 5; 2707 static const int kRegisterPassedArguments = 5;
2811 2708
2812 int MacroAssembler::CalculateStackPassedWords(int num_reg_arguments, 2709 int MacroAssembler::CalculateStackPassedWords(int num_reg_arguments,
2813 int num_double_arguments) { 2710 int num_double_arguments) {
2814 int stack_passed_words = 0; 2711 int stack_passed_words = 0;
2815 if (num_double_arguments > DoubleRegister::kNumRegisters) { 2712 if (num_double_arguments > DoubleRegister::kNumRegisters) {
2816 stack_passed_words += 2713 stack_passed_words +=
2817 2 * (num_double_arguments - DoubleRegister::kNumRegisters); 2714 2 * (num_double_arguments - DoubleRegister::kNumRegisters);
2818 } 2715 }
2819 // Up to five simple arguments are passed in registers r2..r6 2716 // Up to five simple arguments are passed in registers r2..r6
(...skipping 2363 matching lines...) Expand 10 before | Expand all | Expand 10 after
5183 } 5080 }
5184 if (mag.shift > 0) ShiftRightArith(result, result, Operand(mag.shift)); 5081 if (mag.shift > 0) ShiftRightArith(result, result, Operand(mag.shift));
5185 ExtractBit(r0, dividend, 31); 5082 ExtractBit(r0, dividend, 31);
5186 AddP(result, r0); 5083 AddP(result, r0);
5187 } 5084 }
5188 5085
5189 } // namespace internal 5086 } // namespace internal
5190 } // namespace v8 5087 } // namespace v8
5191 5088
5192 #endif // V8_TARGET_ARCH_S390 5089 #endif // V8_TARGET_ARCH_S390
OLDNEW
« no previous file with comments | « src/s390/macro-assembler-s390.h ('k') | src/x64/macro-assembler-x64.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698