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 <limits.h> // For LONG_MIN, LONG_MAX. | 5 #include <limits.h> // For LONG_MIN, LONG_MAX. |
6 | 6 |
7 #include "v8.h" | 7 #include "v8.h" |
8 | 8 |
9 #if V8_TARGET_ARCH_ARM | 9 #if V8_TARGET_ARCH_ARM |
10 | 10 |
(...skipping 1962 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1973 scratch1, | 1973 scratch1, |
1974 scratch2); | 1974 scratch2); |
1975 } | 1975 } |
1976 | 1976 |
1977 | 1977 |
1978 void MacroAssembler::AllocateAsciiConsString(Register result, | 1978 void MacroAssembler::AllocateAsciiConsString(Register result, |
1979 Register length, | 1979 Register length, |
1980 Register scratch1, | 1980 Register scratch1, |
1981 Register scratch2, | 1981 Register scratch2, |
1982 Label* gc_required) { | 1982 Label* gc_required) { |
1983 Label allocate_new_space, install_map; | |
1984 AllocationFlags flags = TAG_OBJECT; | |
1985 | |
1986 ExternalReference high_promotion_mode = ExternalReference:: | |
1987 new_space_high_promotion_mode_active_address(isolate()); | |
1988 mov(scratch1, Operand(high_promotion_mode)); | |
1989 ldr(scratch1, MemOperand(scratch1, 0)); | |
1990 cmp(scratch1, Operand::Zero()); | |
1991 b(eq, &allocate_new_space); | |
1992 | |
1993 Allocate(ConsString::kSize, | 1983 Allocate(ConsString::kSize, |
1994 result, | 1984 result, |
1995 scratch1, | 1985 scratch1, |
1996 scratch2, | 1986 scratch2, |
1997 gc_required, | 1987 gc_required, |
1998 static_cast<AllocationFlags>(flags | PRETENURE_OLD_POINTER_SPACE)); | 1988 TAG_OBJECT); |
1999 | |
2000 jmp(&install_map); | |
2001 | |
2002 bind(&allocate_new_space); | |
2003 Allocate(ConsString::kSize, | |
2004 result, | |
2005 scratch1, | |
2006 scratch2, | |
2007 gc_required, | |
2008 flags); | |
2009 | |
2010 bind(&install_map); | |
2011 | 1989 |
2012 InitializeNewString(result, | 1990 InitializeNewString(result, |
2013 length, | 1991 length, |
2014 Heap::kConsAsciiStringMapRootIndex, | 1992 Heap::kConsAsciiStringMapRootIndex, |
2015 scratch1, | 1993 scratch1, |
2016 scratch2); | 1994 scratch2); |
2017 } | 1995 } |
2018 | 1996 |
2019 | 1997 |
2020 void MacroAssembler::AllocateTwoByteSlicedString(Register result, | 1998 void MacroAssembler::AllocateTwoByteSlicedString(Register result, |
(...skipping 2039 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4060 sub(result, result, Operand(dividend)); | 4038 sub(result, result, Operand(dividend)); |
4061 } | 4039 } |
4062 if (ms.shift() > 0) mov(result, Operand(result, ASR, ms.shift())); | 4040 if (ms.shift() > 0) mov(result, Operand(result, ASR, ms.shift())); |
4063 add(result, result, Operand(dividend, LSR, 31)); | 4041 add(result, result, Operand(dividend, LSR, 31)); |
4064 } | 4042 } |
4065 | 4043 |
4066 | 4044 |
4067 } } // namespace v8::internal | 4045 } } // namespace v8::internal |
4068 | 4046 |
4069 #endif // V8_TARGET_ARCH_ARM | 4047 #endif // V8_TARGET_ARCH_ARM |
OLD | NEW |