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

Side by Side Diff: src/factory.cc

Issue 227593004: Handlify LookupSingleCharacterStringFromCode. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 years, 8 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 | Annotate | Revision Log
« no previous file with comments | « src/factory.h ('k') | src/handles.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 "factory.h" 5 #include "factory.h"
6 6
7 #include "isolate-inl.h" 7 #include "isolate-inl.h"
8 8
9 namespace v8 { 9 namespace v8 {
10 namespace internal { 10 namespace internal {
(...skipping 269 matching lines...) Expand 10 before | Expand all | Expand 10 after
280 280
281 MaybeHandle<SeqTwoByteString> Factory::NewRawTwoByteString( 281 MaybeHandle<SeqTwoByteString> Factory::NewRawTwoByteString(
282 int length, PretenureFlag pretenure) { 282 int length, PretenureFlag pretenure) {
283 CALL_HEAP_FUNCTION( 283 CALL_HEAP_FUNCTION(
284 isolate(), 284 isolate(),
285 isolate()->heap()->AllocateRawTwoByteString(length, pretenure), 285 isolate()->heap()->AllocateRawTwoByteString(length, pretenure),
286 SeqTwoByteString); 286 SeqTwoByteString);
287 } 287 }
288 288
289 289
290 Handle<String> Factory::LookupSingleCharacterStringFromCode(uint32_t index) {
291 CALL_HEAP_FUNCTION(
292 isolate(),
293 isolate()->heap()->LookupSingleCharacterStringFromCode(index),
294 String);
295 }
296
297
290 // Returns true for a character in a range. Both limits are inclusive. 298 // Returns true for a character in a range. Both limits are inclusive.
291 static inline bool Between(uint32_t character, uint32_t from, uint32_t to) { 299 static inline bool Between(uint32_t character, uint32_t from, uint32_t to) {
292 // This makes uses of the the unsigned wraparound. 300 // This makes uses of the the unsigned wraparound.
293 return character - from <= to - from; 301 return character - from <= to - from;
294 } 302 }
295 303
296 304
297 static inline Handle<String> MakeOrFindTwoCharacterString(Isolate* isolate, 305 static inline Handle<String> MakeOrFindTwoCharacterString(Isolate* isolate,
298 uint16_t c1, 306 uint16_t c1,
299 uint16_t c2) { 307 uint16_t c2) {
(...skipping 162 matching lines...) Expand 10 before | Expand all | Expand 10 after
462 int begin, 470 int begin,
463 int end) { 471 int end) {
464 #if VERIFY_HEAP 472 #if VERIFY_HEAP
465 if (FLAG_verify_heap) str->StringVerify(); 473 if (FLAG_verify_heap) str->StringVerify();
466 #endif 474 #endif
467 ASSERT(begin > 0 || end < str->length()); 475 ASSERT(begin > 0 || end < str->length());
468 476
469 int length = end - begin; 477 int length = end - begin;
470 if (length <= 0) return empty_string(); 478 if (length <= 0) return empty_string();
471 if (length == 1) { 479 if (length == 1) {
472 return LookupSingleCharacterStringFromCode(isolate(), str->Get(begin)); 480 return LookupSingleCharacterStringFromCode(str->Get(begin));
473 } 481 }
474 if (length == 2) { 482 if (length == 2) {
475 // Optimization for 2-byte strings often used as keys in a decompression 483 // Optimization for 2-byte strings often used as keys in a decompression
476 // dictionary. Check whether we already have the string in the string 484 // dictionary. Check whether we already have the string in the string
477 // table to prevent creation of many unnecessary strings. 485 // table to prevent creation of many unnecessary strings.
478 uint16_t c1 = str->Get(begin); 486 uint16_t c1 = str->Get(begin);
479 uint16_t c2 = str->Get(begin + 1); 487 uint16_t c2 = str->Get(begin + 1);
480 return MakeOrFindTwoCharacterString(isolate(), c1, c2); 488 return MakeOrFindTwoCharacterString(isolate(), c1, c2);
481 } 489 }
482 490
(...skipping 1496 matching lines...) Expand 10 before | Expand all | Expand 10 after
1979 if (name->Equals(h->infinity_string())) return infinity_value(); 1987 if (name->Equals(h->infinity_string())) return infinity_value();
1980 return Handle<Object>::null(); 1988 return Handle<Object>::null();
1981 } 1989 }
1982 1990
1983 1991
1984 Handle<Object> Factory::ToBoolean(bool value) { 1992 Handle<Object> Factory::ToBoolean(bool value) {
1985 return value ? true_value() : false_value(); 1993 return value ? true_value() : false_value();
1986 } 1994 }
1987 1995
1988 } } // namespace v8::internal 1996 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/factory.h ('k') | src/handles.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698