2009/12/8 Søren Gjesse <[email protected]>:
> The construct you are using creates a copy of the V8::String into a char*
> bupper allocated for the String::AsciiValue object. This is the only way to
> get a V8::String sitting in the V8 heap as a C string. This is both due to
> GC issues and due to the internal representation of strings in V8 where a
> string object is not necessarily a sequential ASCII buffer.
> However it might be possible for you to use external strings, but of cause
> that depends on the use-case. External strings are strings which have their
> actual string buffer outside the V8 heap, and when you have an external
> string it is possible get pointer to that string buffer without copying the
> string data. External strings can be created either when creating a string
> through the API using v8::String::NewExternal, or an external string can
> replace a normal string using v8::String::MakeExternal. If your strings are
> created from outside V8 in the first place consider v8::String::NewExternal,
> and if you are converting the same strings to c strings again and again
> consider v8::String::MakeExternal.

I think there is a problem with encoding. Google Protocol Buffers
encode strings as UTF-8.
ExternalStringResource's must be either UCS2 or ASCII encoded.

Matthias

> Regards,
> Søren
> On Tue, Dec 8, 2009 at 08:26, Ray Morgan <[email protected]> wrote:
>>
>> Hey,
>>
>> I am currently writing a Protocol Buffers library for Node.js.
>> Basically I am going to generate a thin v8 wrapper around the protobuf
>> generated C++ code. The main issue that I am coming up against is how
>> to convert a v8::String to a c string in an efficient way. Right now I
>> am doing:
>>
>> String::AsciiValue data(args[0]->ToString());
>> ParseFromString(*data, data.length());
>>
>> This works, but seems to be the main bottleneck that I am running up
>> against. Is there any more efficient way to go from v8::String ->
>> const char* or std::string?
>>
>> Thanks.
>>
>> --
>> v8-users mailing list
>> [email protected]
>> http://groups.google.com/group/v8-users
>
> --
> v8-users mailing list
> [email protected]
> http://groups.google.com/group/v8-users

-- 
v8-users mailing list
[email protected]
http://groups.google.com/group/v8-users

Reply via email to