Reviewers: Kasper Lund, Description: Add a public API for using an empty sring.
v8::String::Empty() Please review this at http://codereview.chromium.org/42423 SVN Base: http://v8.googlecode.com/svn/branches/bleeding_edge/ Affected files: M include/v8.h M src/api.cc Index: include/v8.h =================================================================== --- include/v8.h (revision 1555) +++ include/v8.h (working copy) @@ -736,6 +736,11 @@ int WriteUtf8(char* buffer, int length = -1) const; // UTF-8 /** + * A zero length string. + */ + static v8::Local<v8::String> Empty(); + + /** * Returns true if the string is external */ bool IsExternal() const; Index: src/api.cc =================================================================== --- src/api.cc (revision 1555) +++ src/api.cc (working copy) @@ -2472,9 +2472,17 @@ } +Local<String> v8::String::Empty() { + EnsureInitialized("v8::String::Empty()"); + LOG_API("String::Empty()"); + return Utils::ToLocal(i::Factory::empty_symbol()); +} + + Local<String> v8::String::New(const char* data, int length) { EnsureInitialized("v8::String::New()"); LOG_API("String::New(char)"); + if (!length) return Empty(); if (length == -1) length = strlen(data); i::Handle<i::String> result = i::Factory::NewStringFromUtf8(i::Vector<const char>(data, length)); @@ -2503,6 +2511,7 @@ Local<String> v8::String::New(const uint16_t* data, int length) { EnsureInitialized("v8::String::New()"); LOG_API("String::New(uint16_)"); + if (!length) return Empty(); if (length == -1) length = TwoByteStringLength(data); i::Handle<i::String> result = i::Factory::NewStringFromTwoByte(i::Vector<const uint16_t>(data, length)); --~--~---------~--~----~------------~-------~--~----~ v8-dev mailing list [email protected] http://groups.google.com/group/v8-dev -~----------~----~----~----~------~----~------~--~---
