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

Side by Side Diff: src/ppc/macro-assembler-ppc.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/ppc/macro-assembler-ppc.h ('k') | src/s390/macro-assembler-s390.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_PPC 8 #if V8_TARGET_ARCH_PPC
9 9
10 #include "src/base/bits.h" 10 #include "src/base/bits.h"
(...skipping 1931 matching lines...) Expand 10 before | Expand all | Expand 10 after
1942 // Calculate new top using result. 1942 // Calculate new top using result.
1943 Add(result_end, result, object_size, r0); 1943 Add(result_end, result, object_size, r0);
1944 1944
1945 // The top pointer is not updated for allocation folding dominators. 1945 // The top pointer is not updated for allocation folding dominators.
1946 StoreP(result_end, MemOperand(top_address)); 1946 StoreP(result_end, MemOperand(top_address));
1947 1947
1948 // Tag object. 1948 // Tag object.
1949 addi(result, result, Operand(kHeapObjectTag)); 1949 addi(result, result, Operand(kHeapObjectTag));
1950 } 1950 }
1951 1951
1952
1953 void MacroAssembler::AllocateTwoByteString(Register result, Register length,
1954 Register scratch1, Register scratch2,
1955 Register scratch3,
1956 Label* gc_required) {
1957 // Calculate the number of bytes needed for the characters in the string while
1958 // observing object alignment.
1959 DCHECK((SeqTwoByteString::kHeaderSize & kObjectAlignmentMask) == 0);
1960 slwi(scratch1, length, Operand(1)); // Length in bytes, not chars.
1961 addi(scratch1, scratch1,
1962 Operand(kObjectAlignmentMask + SeqTwoByteString::kHeaderSize));
1963 mov(r0, Operand(~kObjectAlignmentMask));
1964 and_(scratch1, scratch1, r0);
1965
1966 // Allocate two-byte string in new space.
1967 Allocate(scratch1, result, scratch2, scratch3, gc_required,
1968 NO_ALLOCATION_FLAGS);
1969
1970 // Set the map, length and hash field.
1971 InitializeNewString(result, length, Heap::kStringMapRootIndex, scratch1,
1972 scratch2);
1973 }
1974
1975
1976 void MacroAssembler::AllocateOneByteString(Register result, Register length,
1977 Register scratch1, Register scratch2,
1978 Register scratch3,
1979 Label* gc_required) {
1980 // Calculate the number of bytes needed for the characters in the string while
1981 // observing object alignment.
1982 DCHECK((SeqOneByteString::kHeaderSize & kObjectAlignmentMask) == 0);
1983 DCHECK(kCharSize == 1);
1984 addi(scratch1, length,
1985 Operand(kObjectAlignmentMask + SeqOneByteString::kHeaderSize));
1986 li(r0, Operand(~kObjectAlignmentMask));
1987 and_(scratch1, scratch1, r0);
1988
1989 // Allocate one-byte string in new space.
1990 Allocate(scratch1, result, scratch2, scratch3, gc_required,
1991 NO_ALLOCATION_FLAGS);
1992
1993 // Set the map, length and hash field.
1994 InitializeNewString(result, length, Heap::kOneByteStringMapRootIndex,
1995 scratch1, scratch2);
1996 }
1997
1998
1999 void MacroAssembler::AllocateTwoByteConsString(Register result, Register length,
2000 Register scratch1,
2001 Register scratch2,
2002 Label* gc_required) {
2003 Allocate(ConsString::kSize, result, scratch1, scratch2, gc_required,
2004 NO_ALLOCATION_FLAGS);
2005
2006 InitializeNewString(result, length, Heap::kConsStringMapRootIndex, scratch1,
2007 scratch2);
2008 }
2009
2010
2011 void MacroAssembler::AllocateOneByteConsString(Register result, Register length,
2012 Register scratch1,
2013 Register scratch2,
2014 Label* gc_required) {
2015 Allocate(ConsString::kSize, result, scratch1, scratch2, gc_required,
2016 NO_ALLOCATION_FLAGS);
2017
2018 InitializeNewString(result, length, Heap::kConsOneByteStringMapRootIndex,
2019 scratch1, scratch2);
2020 }
2021
2022
2023 void MacroAssembler::AllocateTwoByteSlicedString(Register result,
2024 Register length,
2025 Register scratch1,
2026 Register scratch2,
2027 Label* gc_required) {
2028 Allocate(SlicedString::kSize, result, scratch1, scratch2, gc_required,
2029 NO_ALLOCATION_FLAGS);
2030
2031 InitializeNewString(result, length, Heap::kSlicedStringMapRootIndex, scratch1,
2032 scratch2);
2033 }
2034
2035
2036 void MacroAssembler::AllocateOneByteSlicedString(Register result,
2037 Register length,
2038 Register scratch1,
2039 Register scratch2,
2040 Label* gc_required) {
2041 Allocate(SlicedString::kSize, result, scratch1, scratch2, gc_required,
2042 NO_ALLOCATION_FLAGS);
2043
2044 InitializeNewString(result, length, Heap::kSlicedOneByteStringMapRootIndex,
2045 scratch1, scratch2);
2046 }
2047
2048
2049 void MacroAssembler::CompareObjectType(Register object, Register map, 1952 void MacroAssembler::CompareObjectType(Register object, Register map,
2050 Register type_reg, InstanceType type) { 1953 Register type_reg, InstanceType type) {
2051 const Register temp = type_reg.is(no_reg) ? r0 : type_reg; 1954 const Register temp = type_reg.is(no_reg) ? r0 : type_reg;
2052 1955
2053 LoadP(map, FieldMemOperand(object, HeapObject::kMapOffset)); 1956 LoadP(map, FieldMemOperand(object, HeapObject::kMapOffset));
2054 CompareInstanceType(map, temp, type); 1957 CompareInstanceType(map, temp, type);
2055 } 1958 }
2056 1959
2057 1960
2058 void MacroAssembler::CompareInstanceType(Register map, Register type_reg, 1961 void MacroAssembler::CompareInstanceType(Register map, Register type_reg,
(...skipping 981 matching lines...) Expand 10 before | Expand all | Expand 10 after
3040 const int kFlatOneByteStringTag = 2943 const int kFlatOneByteStringTag =
3041 kStringTag | kOneByteStringTag | kSeqStringTag; 2944 kStringTag | kOneByteStringTag | kSeqStringTag;
3042 andi(scratch1, first, Operand(kFlatOneByteStringMask)); 2945 andi(scratch1, first, Operand(kFlatOneByteStringMask));
3043 andi(scratch2, second, Operand(kFlatOneByteStringMask)); 2946 andi(scratch2, second, Operand(kFlatOneByteStringMask));
3044 cmpi(scratch1, Operand(kFlatOneByteStringTag)); 2947 cmpi(scratch1, Operand(kFlatOneByteStringTag));
3045 bne(failure); 2948 bne(failure);
3046 cmpi(scratch2, Operand(kFlatOneByteStringTag)); 2949 cmpi(scratch2, Operand(kFlatOneByteStringTag));
3047 bne(failure); 2950 bne(failure);
3048 } 2951 }
3049 2952
3050
3051 void MacroAssembler::JumpIfInstanceTypeIsNotSequentialOneByte(Register type,
3052 Register scratch,
3053 Label* failure) {
3054 const int kFlatOneByteStringMask =
3055 kIsNotStringMask | kStringEncodingMask | kStringRepresentationMask;
3056 const int kFlatOneByteStringTag =
3057 kStringTag | kOneByteStringTag | kSeqStringTag;
3058 andi(scratch, type, Operand(kFlatOneByteStringMask));
3059 cmpi(scratch, Operand(kFlatOneByteStringTag));
3060 bne(failure);
3061 }
3062
3063 static const int kRegisterPassedArguments = 8; 2953 static const int kRegisterPassedArguments = 8;
3064 2954
3065 2955
3066 int MacroAssembler::CalculateStackPassedWords(int num_reg_arguments, 2956 int MacroAssembler::CalculateStackPassedWords(int num_reg_arguments,
3067 int num_double_arguments) { 2957 int num_double_arguments) {
3068 int stack_passed_words = 0; 2958 int stack_passed_words = 0;
3069 if (num_double_arguments > DoubleRegister::kNumRegisters) { 2959 if (num_double_arguments > DoubleRegister::kNumRegisters) {
3070 stack_passed_words += 2960 stack_passed_words +=
3071 2 * (num_double_arguments - DoubleRegister::kNumRegisters); 2961 2 * (num_double_arguments - DoubleRegister::kNumRegisters);
3072 } 2962 }
(...skipping 1425 matching lines...) Expand 10 before | Expand all | Expand 10 after
4498 } 4388 }
4499 if (mag.shift > 0) srawi(result, result, mag.shift); 4389 if (mag.shift > 0) srawi(result, result, mag.shift);
4500 ExtractBit(r0, dividend, 31); 4390 ExtractBit(r0, dividend, 31);
4501 add(result, result, r0); 4391 add(result, result, r0);
4502 } 4392 }
4503 4393
4504 } // namespace internal 4394 } // namespace internal
4505 } // namespace v8 4395 } // namespace v8
4506 4396
4507 #endif // V8_TARGET_ARCH_PPC 4397 #endif // V8_TARGET_ARCH_PPC
OLDNEW
« no previous file with comments | « src/ppc/macro-assembler-ppc.h ('k') | src/s390/macro-assembler-s390.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698