Reviewers: iposva, Description: Make check in GetExternalString a runtime check instead of ASSERT. This will allow us to remove the separate call to IsExternal() from our chrome client code, speeding up the combination.
Please review this at http://codereview.chromium.org/113035 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M src/api.cc Index: src/api.cc =================================================================== --- src/api.cc (revision 1886) +++ src/api.cc (working copy) @@ -2355,9 +2355,12 @@ v8::String::GetExternalStringResource() const { EnsureInitialized("v8::String::GetExternalStringResource()"); i::Handle<i::String> str = Utils::OpenHandle(this); - ASSERT(str->IsExternalTwoByteString()); - void* resource = i::Handle<i::ExternalTwoByteString>::cast(str)->resource(); - return reinterpret_cast<ExternalStringResource*>(resource); + if (i::StringShape(*str).IsExternalTwoByte()) { + void* resource = i::Handle<i::ExternalTwoByteString>::cast(str)->resource(); + return reinterpret_cast<ExternalStringResource*>(resource); + } else { + return NULL; + } } @@ -2365,9 +2368,12 @@ v8::String::GetExternalAsciiStringResource() const { EnsureInitialized("v8::String::GetExternalAsciiStringResource()"); i::Handle<i::String> str = Utils::OpenHandle(this); - ASSERT(str->IsExternalAsciiString()); - void* resource = i::Handle<i::ExternalAsciiString>::cast(str)->resource(); - return reinterpret_cast<ExternalAsciiStringResource*>(resource); + if (i::StringShape(*str).IsExternalAscii()) { + void* resource = i::Handle<i::ExternalAsciiString>::cast(str)->resource(); + return reinterpret_cast<ExternalAsciiStringResource*>(resource); + } else { + return NULL; + } } --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list v8-dev@googlegroups.com http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---