10 template <
typename Char,
typename Base>
37 "native function externalizeString();"
38 "native function isOneByteString();";
56 if (args.
Length() < 1 || !args[0]->IsString()) {
59 "First parameter to externalizeString() must be a string."));
62 bool force_two_byte =
false;
64 if (args[1]->IsBoolean()) {
65 force_two_byte = args[1]->BooleanValue();
69 "Second parameter to externalizeString() must be a boolean."));
75 if (string->IsExternalString()) {
78 "externalizeString() can't externalize twice."));
81 if (string->IsOneByteRepresentation() && !force_two_byte) {
82 uint8_t* data =
new uint8_t[
string->length()];
85 reinterpret_cast<char*
>(data), string->length());
86 result =
string->MakeExternal(resource);
91 if (!result)
delete resource;
93 uc16* data =
new uc16[
string->length()];
96 data, string->length());
97 result =
string->MakeExternal(resource);
102 if (!result)
delete resource;
106 args.
GetIsolate(),
"externalizeString() failed."));
114 if (args.
Length() != 1 || !args[0]->IsString()) {
117 "isOneByteString() requires a single string argument."));
The argument information given to function call callbacks.
ReturnValue< T > GetReturnValue() const
Isolate * GetIsolate() const
static Local< FunctionTemplate > New(Isolate *isolate, FunctionCallback callback=0, Handle< Value > data=Handle< Value >(), Handle< Signature > signature=Handle< Signature >(), int length=0)
Creates a function template.
An object reference managed by the v8 garbage collector.
Isolate represents an isolated instance of the V8 engine.
Local< Value > ThrowException(Local< Value > exception)
Schedules an exception to be thrown when returning to JavaScript.
Converts an object to a UTF-8-encoded character array.
static Local< String > NewFromUtf8(Isolate *isolate, const char *data, NewStringType type=kNormalString, int length=-1)
Allocates a new string from UTF-8 data.
static v8::internal::Handle< To > OpenHandle(v8::Local< From > handle)
void AddString(String *string)
static void IsOneByte(const v8::FunctionCallbackInfo< v8::Value > &args)
static const char *const kSource
virtual v8::Handle< v8::FunctionTemplate > GetNativeFunctionTemplate(v8::Isolate *isolate, v8::Handle< v8::String > name)
static void Externalize(const v8::FunctionCallbackInfo< v8::Value > &args)
ExternalStringTable * external_string_table()
virtual size_t length() const
virtual ~SimpleStringResource()
SimpleStringResource(Char *data, size_t length)
virtual const Char * data() const
static void WriteToFlat(String *source, sinkchar *sink, int from, int to)
#define DCHECK(condition)
SimpleStringResource< char, v8::String::ExternalOneByteStringResource > SimpleOneByteStringResource
SimpleStringResource< uc16, v8::String::ExternalStringResource > SimpleTwoByteStringResource
Debugger support for the V8 JavaScript engine.