From 318c9eed21071880761af66661f64bf93bc1c136 Mon Sep 17 00:00:00 2001 From: "mike@belshe.com" Date: Thu, 19 Mar 2009 23:35:09 +0000 Subject: [PATCH] Add a public API for using an empty sring. v8::String::Empty() Review URL: http://codereview.chromium.org/42423 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@1556 ce2b1a6d-e550-0410-aec6-3dcde31c8c00 --- include/v8.h | 5 +++++ src/api.cc | 9 +++++++++ 2 files changed, 14 insertions(+) diff --git a/include/v8.h b/include/v8.h index ce1e9b6..fb142d7 100644 --- a/include/v8.h +++ b/include/v8.h @@ -736,6 +736,11 @@ class V8EXPORT String : public Primitive { int WriteUtf8(char* buffer, int length = -1) const; // UTF-8 /** + * A zero length string. + */ + static v8::Local Empty(); + + /** * Returns true if the string is external */ bool IsExternal() const; diff --git a/src/api.cc b/src/api.cc index 7e0e460..5c48e5e 100644 --- a/src/api.cc +++ b/src/api.cc @@ -2472,9 +2472,17 @@ Local v8::External::New(void* data) { } +Local v8::String::Empty() { + EnsureInitialized("v8::String::Empty()"); + LOG_API("String::Empty()"); + return Utils::ToLocal(i::Factory::empty_symbol()); +} + + Local v8::String::New(const char* data, int length) { EnsureInitialized("v8::String::New()"); LOG_API("String::New(char)"); + if (length == 0) return Empty(); if (length == -1) length = strlen(data); i::Handle result = i::Factory::NewStringFromUtf8(i::Vector(data, length)); @@ -2503,6 +2511,7 @@ static int TwoByteStringLength(const uint16_t* data) { Local v8::String::New(const uint16_t* data, int length) { EnsureInitialized("v8::String::New()"); LOG_API("String::New(uint16_)"); + if (length == 0) return Empty(); if (length == -1) length = TwoByteStringLength(data); i::Handle result = i::Factory::NewStringFromTwoByte(i::Vector(data, length)); -- 2.7.4