V8 Project
runtime-json.cc
Go to the documentation of this file.
1 // Copyright 2014 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #include "src/v8.h"
6 
7 #include "src/arguments.h"
8 #include "src/json-parser.h"
9 #include "src/json-stringifier.h"
10 #include "src/runtime/runtime.h"
12 
13 namespace v8 {
14 namespace internal {
15 
16 RUNTIME_FUNCTION(Runtime_QuoteJSONString) {
17  HandleScope scope(isolate);
19  DCHECK(args.length() == 1);
20  Handle<Object> result;
22  isolate, result, BasicJsonStringifier::StringifyString(isolate, string));
23  return *result;
24 }
25 
26 
27 RUNTIME_FUNCTION(Runtime_BasicJSONStringify) {
28  HandleScope scope(isolate);
29  DCHECK(args.length() == 1);
31  BasicJsonStringifier stringifier(isolate);
32  Handle<Object> result;
33  ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
34  stringifier.Stringify(object));
35  return *result;
36 }
37 
38 
39 RUNTIME_FUNCTION(Runtime_ParseJson) {
40  HandleScope scope(isolate);
41  DCHECK(args.length() == 1);
43 
44  source = String::Flatten(source);
45  // Optimized fast case where we only have Latin1 characters.
46  Handle<Object> result;
47  ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
48  source->IsSeqOneByteString()
49  ? JsonParser<true>::Parse(source)
50  : JsonParser<false>::Parse(source));
51  return *result;
52 }
53 }
54 } // namespace v8::internal
static Handle< String > Flatten(Handle< String > string, PretenureFlag pretenure=NOT_TENURED)
Definition: objects-inl.h:3354
#define ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, dst, call)
Definition: isolate.h:131
#define DCHECK(condition)
Definition: logging.h:205
static void Parse(Handle< JSFunction > function, CompilationInfoWithZone *info)
Definition: js-inlining.cc:56
@ RUNTIME_FUNCTION
Definition: serialize.h:23
Debugger support for the V8 JavaScript engine.
Definition: accessors.cc:20
#define CONVERT_ARG_HANDLE_CHECKED(Type, name, index)
Definition: runtime-utils.h:28