OLD | NEW |
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 "src/factory.h" | 5 #include "src/factory.h" |
6 | 6 |
7 #include "src/allocation-site-scopes.h" | 7 #include "src/allocation-site-scopes.h" |
8 #include "src/conversions.h" | 8 #include "src/conversions.h" |
9 #include "src/isolate-inl.h" | 9 #include "src/isolate-inl.h" |
10 #include "src/macro-assembler.h" | 10 #include "src/macro-assembler.h" |
(...skipping 168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
179 | 179 |
180 | 180 |
181 Handle<String> Factory::InternalizeOneByteString(Vector<const uint8_t> string) { | 181 Handle<String> Factory::InternalizeOneByteString(Vector<const uint8_t> string) { |
182 OneByteStringKey key(string, isolate()->heap()->HashSeed()); | 182 OneByteStringKey key(string, isolate()->heap()->HashSeed()); |
183 return InternalizeStringWithKey(&key); | 183 return InternalizeStringWithKey(&key); |
184 } | 184 } |
185 | 185 |
186 | 186 |
187 Handle<String> Factory::InternalizeOneByteString( | 187 Handle<String> Factory::InternalizeOneByteString( |
188 Handle<SeqOneByteString> string, int from, int length) { | 188 Handle<SeqOneByteString> string, int from, int length) { |
189 SubStringKey<uint8_t> key(string, from, length); | 189 SeqOneByteSubStringKey key(string, from, length); |
190 return InternalizeStringWithKey(&key); | 190 return InternalizeStringWithKey(&key); |
191 } | 191 } |
192 | 192 |
193 | 193 |
194 Handle<String> Factory::InternalizeTwoByteString(Vector<const uc16> string) { | 194 Handle<String> Factory::InternalizeTwoByteString(Vector<const uc16> string) { |
195 TwoByteStringKey key(string, isolate()->heap()->HashSeed()); | 195 TwoByteStringKey key(string, isolate()->heap()->HashSeed()); |
196 return InternalizeStringWithKey(&key); | 196 return InternalizeStringWithKey(&key); |
197 } | 197 } |
198 | 198 |
199 | 199 |
200 template<class StringTableKey> | 200 template<class StringTableKey> |
201 Handle<String> Factory::InternalizeStringWithKey(StringTableKey* key) { | 201 Handle<String> Factory::InternalizeStringWithKey(StringTableKey* key) { |
202 return StringTable::LookupKey(isolate(), key); | 202 return StringTable::LookupKey(isolate(), key); |
203 } | 203 } |
204 | 204 |
205 | 205 |
206 template Handle<String> Factory::InternalizeStringWithKey< | |
207 SubStringKey<uint8_t> > (SubStringKey<uint8_t>* key); | |
208 template Handle<String> Factory::InternalizeStringWithKey< | |
209 SubStringKey<uint16_t> > (SubStringKey<uint16_t>* key); | |
210 | |
211 | |
212 MaybeHandle<String> Factory::NewStringFromOneByte(Vector<const uint8_t> string, | 206 MaybeHandle<String> Factory::NewStringFromOneByte(Vector<const uint8_t> string, |
213 PretenureFlag pretenure) { | 207 PretenureFlag pretenure) { |
214 int length = string.length(); | 208 int length = string.length(); |
215 if (length == 1) return LookupSingleCharacterStringFromCode(string[0]); | 209 if (length == 1) return LookupSingleCharacterStringFromCode(string[0]); |
216 Handle<SeqOneByteString> result; | 210 Handle<SeqOneByteString> result; |
217 ASSIGN_RETURN_ON_EXCEPTION( | 211 ASSIGN_RETURN_ON_EXCEPTION( |
218 isolate(), | 212 isolate(), |
219 result, | 213 result, |
220 NewRawOneByteString(string.length(), pretenure), | 214 NewRawOneByteString(string.length(), pretenure), |
221 String); | 215 String); |
(...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
306 MUST_USE_RESULT Handle<String> Factory::NewOneByteInternalizedString( | 300 MUST_USE_RESULT Handle<String> Factory::NewOneByteInternalizedString( |
307 Vector<const uint8_t> str, | 301 Vector<const uint8_t> str, |
308 uint32_t hash_field) { | 302 uint32_t hash_field) { |
309 CALL_HEAP_FUNCTION( | 303 CALL_HEAP_FUNCTION( |
310 isolate(), | 304 isolate(), |
311 isolate()->heap()->AllocateOneByteInternalizedString(str, hash_field), | 305 isolate()->heap()->AllocateOneByteInternalizedString(str, hash_field), |
312 String); | 306 String); |
313 } | 307 } |
314 | 308 |
315 | 309 |
| 310 MUST_USE_RESULT Handle<String> Factory::NewOneByteInternalizedSubString( |
| 311 Handle<SeqOneByteString> string, int offset, int length, |
| 312 uint32_t hash_field) { |
| 313 CALL_HEAP_FUNCTION( |
| 314 isolate(), isolate()->heap()->AllocateOneByteInternalizedString( |
| 315 Vector<const uint8_t>(string->GetChars() + offset, length), |
| 316 hash_field), |
| 317 String); |
| 318 } |
| 319 |
| 320 |
316 MUST_USE_RESULT Handle<String> Factory::NewTwoByteInternalizedString( | 321 MUST_USE_RESULT Handle<String> Factory::NewTwoByteInternalizedString( |
317 Vector<const uc16> str, | 322 Vector<const uc16> str, |
318 uint32_t hash_field) { | 323 uint32_t hash_field) { |
319 CALL_HEAP_FUNCTION( | 324 CALL_HEAP_FUNCTION( |
320 isolate(), | 325 isolate(), |
321 isolate()->heap()->AllocateTwoByteInternalizedString(str, hash_field), | 326 isolate()->heap()->AllocateTwoByteInternalizedString(str, hash_field), |
322 String); | 327 String); |
323 } | 328 } |
324 | 329 |
325 | 330 |
(...skipping 2048 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2374 return Handle<Object>::null(); | 2379 return Handle<Object>::null(); |
2375 } | 2380 } |
2376 | 2381 |
2377 | 2382 |
2378 Handle<Object> Factory::ToBoolean(bool value) { | 2383 Handle<Object> Factory::ToBoolean(bool value) { |
2379 return value ? true_value() : false_value(); | 2384 return value ? true_value() : false_value(); |
2380 } | 2385 } |
2381 | 2386 |
2382 | 2387 |
2383 } } // namespace v8::internal | 2388 } } // namespace v8::internal |
OLD | NEW |