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

Unified Diff: src/heap-inl.h

Issue 10857030: Add basic support for Latin1 to the API. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: addressed comments. Created 8 years, 4 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 side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/heap.cc ('k') | src/objects.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/heap-inl.h
diff --git a/src/heap-inl.h b/src/heap-inl.h
index 4a827fef176fd57cafb2c929bb834cd229737aaa..1bc6e8db5aa141f9fa11b9510c2c3403a102a347 100644
--- a/src/heap-inl.h
+++ b/src/heap-inl.h
@@ -83,9 +83,14 @@ void PromotionQueue::ActivateGuardIfOnTheSamePage() {
MaybeObject* Heap::AllocateStringFromUtf8(Vector<const char> str,
- PretenureFlag pretenure) {
- // Check for ASCII first since this is the common case.
- if (String::IsAscii(str.start(), str.length())) {
+ PretenureFlag pretenure,
+ String::AsciiHint ascii_hint) {
+ if ((ascii_hint == String::MAYBE_ASCII &&
+ String::IsAscii(str.start(), str.length())) ||
+ ascii_hint == String::ASCII) {
+ // Assert that the ASCII-hint is correct.
+ ASSERT(ascii_hint != String::ASCII ||
+ String::IsAscii(str.start(), str.length()));
// If the string is ASCII, we do not need to convert the characters
// since UTF8 is backwards compatible with ASCII.
return AllocateStringFromAscii(str, pretenure);
@@ -95,6 +100,24 @@ MaybeObject* Heap::AllocateStringFromUtf8(Vector<const char> str,
}
+MaybeObject* Heap::AllocateStringFromLatin1(Vector<const char> str,
+ PretenureFlag pretenure,
+ String::AsciiHint ascii_hint) {
+ if ((ascii_hint == String::MAYBE_ASCII &&
+ String::IsAscii(str.start(), str.length())) ||
+ ascii_hint == String::ASCII) {
+ // Assert that the strict ASCII-hint is correct.
+ ASSERT(ascii_hint != String::ASCII ||
+ String::IsAscii(str.start(), str.length()));
+ // If the string is ASCII, we do not need to convert the characters
+ // since Latin1 is backwards compatible with ASCII.
+ return AllocateStringFromAscii(str, pretenure);
+ }
+ // Non-ASCII and we need to decode.
+ return AllocateStringFromLatin1Slow(str, pretenure);
+}
+
+
MaybeObject* Heap::AllocateSymbol(Vector<const char> str,
int chars,
uint32_t hash_field) {
« no previous file with comments | « src/heap.cc ('k') | src/objects.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698