| Index: src/builtins/builtins-global.cc
|
| diff --git a/src/builtins/builtins-global.cc b/src/builtins/builtins-global.cc
|
| new file mode 100644
|
| index 0000000000000000000000000000000000000000..427a67a33679b761036e7e7c2759a6ce2666b7b7
|
| --- /dev/null
|
| +++ b/src/builtins/builtins-global.cc
|
| @@ -0,0 +1,98 @@
|
| +// Copyright 2016 the V8 project authors. All rights reserved.
|
| +// Use of this source code is governed by a BSD-style license that can be
|
| +// found in the LICENSE file.
|
| +
|
| +#include "src/builtins/builtins.h"
|
| +#include "src/builtins/builtins-utils.h"
|
| +
|
| +#include "src/uri.h"
|
| +
|
| +namespace v8 {
|
| +namespace internal {
|
| +
|
| +// ES6 section 18.2.6.2 decodeURI (encodedURI)
|
| +BUILTIN(GlobalDecodeURI) {
|
| + HandleScope scope(isolate);
|
| + Handle<String> encoded_uri;
|
| + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| + isolate, encoded_uri,
|
| + Object::ToString(isolate, args.atOrUndefined(isolate, 1)));
|
| +
|
| + RETURN_RESULT_OR_FAILURE(isolate, Uri::DecodeUri(isolate, encoded_uri));
|
| +}
|
| +
|
| +// ES6 section 18.2.6.3 decodeURIComponent (encodedURIComponent)
|
| +BUILTIN(GlobalDecodeURIComponent) {
|
| + HandleScope scope(isolate);
|
| + Handle<String> encoded_uri_component;
|
| + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| + isolate, encoded_uri_component,
|
| + Object::ToString(isolate, args.atOrUndefined(isolate, 1)));
|
| +
|
| + RETURN_RESULT_OR_FAILURE(
|
| + isolate, Uri::DecodeUriComponent(isolate, encoded_uri_component));
|
| +}
|
| +
|
| +// ES6 section 18.2.6.4 encodeURI (uri)
|
| +BUILTIN(GlobalEncodeURI) {
|
| + HandleScope scope(isolate);
|
| + Handle<String> uri;
|
| + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| + isolate, uri, Object::ToString(isolate, args.atOrUndefined(isolate, 1)));
|
| +
|
| + RETURN_RESULT_OR_FAILURE(isolate, Uri::EncodeUri(isolate, uri));
|
| +}
|
| +
|
| +// ES6 section 18.2.6.5 encodeURIComponenet (uriComponent)
|
| +BUILTIN(GlobalEncodeURIComponent) {
|
| + HandleScope scope(isolate);
|
| + Handle<String> uri_component;
|
| + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| + isolate, uri_component,
|
| + Object::ToString(isolate, args.atOrUndefined(isolate, 1)));
|
| +
|
| + RETURN_RESULT_OR_FAILURE(isolate,
|
| + Uri::EncodeUriComponent(isolate, uri_component));
|
| +}
|
| +
|
| +// ES6 section B.2.1.1 escape (string)
|
| +BUILTIN(GlobalEscape) {
|
| + HandleScope scope(isolate);
|
| + Handle<String> string;
|
| + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| + isolate, string,
|
| + Object::ToString(isolate, args.atOrUndefined(isolate, 1)));
|
| +
|
| + RETURN_RESULT_OR_FAILURE(isolate, Uri::Escape(isolate, string));
|
| +}
|
| +
|
| +// ES6 section B.2.1.2 unescape (string)
|
| +BUILTIN(GlobalUnescape) {
|
| + HandleScope scope(isolate);
|
| + Handle<String> string;
|
| + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| + isolate, string,
|
| + Object::ToString(isolate, args.atOrUndefined(isolate, 1)));
|
| +
|
| + RETURN_RESULT_OR_FAILURE(isolate, Uri::Unescape(isolate, string));
|
| +}
|
| +
|
| +// ES6 section 18.2.1 eval (x)
|
| +BUILTIN(GlobalEval) {
|
| + HandleScope scope(isolate);
|
| + Handle<Object> x = args.atOrUndefined(isolate, 1);
|
| + Handle<JSFunction> target = args.target<JSFunction>();
|
| + Handle<JSObject> target_global_proxy(target->global_proxy(), isolate);
|
| + if (!x->IsString()) return *x;
|
| + Handle<JSFunction> function;
|
| + ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
|
| + isolate, function,
|
| + Builtins::CompileString(handle(target->native_context(), isolate),
|
| + Handle<String>::cast(x), NO_PARSE_RESTRICTION));
|
| + RETURN_RESULT_OR_FAILURE(
|
| + isolate,
|
| + Execution::Call(isolate, function, target_global_proxy, 0, nullptr));
|
| +}
|
| +
|
| +} // namespace internal
|
| +} // namespace v8
|
|
|