Chromium Code Reviews| Index: src/api.cc | 
| diff --git a/src/api.cc b/src/api.cc | 
| index 60627a39710443b4aef0b17ab570af6a1cc6c4bd..4c53977e707e101de372676770d77d4516e83c55 100644 | 
| --- a/src/api.cc | 
| +++ b/src/api.cc | 
| @@ -46,6 +46,7 @@ | 
| #include "heap-profiler.h" | 
| #include "heap-snapshot-generator-inl.h" | 
| #include "icu_util.h" | 
| +#include "json-parser.h" | 
| #include "messages.h" | 
| #ifdef COMPRESS_STARTUP_DATA_BZ2 | 
| #include "natives.h" | 
| @@ -2607,6 +2608,29 @@ bool StackFrame::IsConstructor() const { | 
| } | 
| +// --- J S O N --- | 
| + | 
| +Local<Object> JSON::Parse(Local<String> json_string) { | 
| + i::Isolate* isolate = i::Isolate::Current(); | 
| + EnsureInitializedForIsolate(isolate, "v8::JSON::Parse"); | 
| + ENTER_V8(isolate); | 
| + i::HandleScope scope(isolate); | 
| + i::Handle<i::String> source = i::Handle<i::String>( | 
| + Utils::OpenHandle(*json_string)->TryFlattenGetString()); | 
| 
 
Yang
2013/08/05 10:52:35
I would prefer FlattenGetString here. While you ar
 
 | 
| + EXCEPTION_PREAMBLE(isolate); | 
| + i::Handle<i::Object> result; | 
| + if (source->IsSeqOneByteString()) { | 
| + result = i::JsonParser<true>::Parse(source); | 
| + } else { | 
| + result = i::JsonParser<false>::Parse(source); | 
| + } | 
| + has_pending_exception = result.is_null(); | 
| + EXCEPTION_BAILOUT_CHECK(isolate, Local<Object>()); | 
| + return Utils::ToLocal( | 
| + i::Handle<i::JSObject>::cast(scope.CloseAndEscape(result))); | 
| +} | 
| + | 
| + | 
| // --- D a t a --- | 
| bool Value::FullIsUndefined() const { |