| Index: src/builtins.cc
|
| diff --git a/src/builtins.cc b/src/builtins.cc
|
| index e5feca997a077674cb77660814ed3015be0329ce..b2cf4861ec0ed6f7cb462e6173807f1b70d311cd 100644
|
| --- a/src/builtins.cc
|
| +++ b/src/builtins.cc
|
| @@ -179,6 +179,19 @@ BUILTIN_LIST_C(DEF_ARG_TYPE)
|
| } \
|
| Handle<Type> name = Handle<Type>::cast(args.receiver())
|
|
|
| +// Throws a TypeError for {method} if the receiver is not coercible to Object,
|
| +// or converts the receiver to a String otherwise and assigns it to a new var
|
| +// with the given {name}.
|
| +#define TO_THIS_STRING(name, method) \
|
| + if (args.receiver()->IsNull() || args.receiver()->IsUndefined()) { \
|
| + THROW_NEW_ERROR_RETURN_FAILURE( \
|
| + isolate, \
|
| + NewTypeError(MessageTemplate::kCalledOnNullOrUndefined, \
|
| + isolate->factory()->NewStringFromAsciiChecked(method))); \
|
| + } \
|
| + Handle<String> name; \
|
| + ASSIGN_RETURN_FAILURE_ON_EXCEPTION( \
|
| + isolate, name, Object::ToString(isolate, args.receiver()))
|
|
|
| inline bool ClampedToInteger(Object* object, int* out) {
|
| // This is an extended version of ECMA-262 7.1.11 handling signed values
|
| @@ -4541,6 +4554,27 @@ void Builtins::Generate_StringPrototypeCharCodeAt(
|
| assembler->Return(result);
|
| }
|
|
|
| +// ES6 section 21.1.3.25 String.prototype.trim ()
|
| +BUILTIN(StringPrototypeTrim) {
|
| + HandleScope scope(isolate);
|
| + TO_THIS_STRING(string, "String.prototype.trim");
|
| + return *String::Trim(string, String::kTrim);
|
| +}
|
| +
|
| +// Non-standard WebKit extension
|
| +BUILTIN(StringPrototypeTrimLeft) {
|
| + HandleScope scope(isolate);
|
| + TO_THIS_STRING(string, "String.prototype.trimLeft");
|
| + return *String::Trim(string, String::kTrimLeft);
|
| +}
|
| +
|
| +// Non-standard WebKit extension
|
| +BUILTIN(StringPrototypeTrimRight) {
|
| + HandleScope scope(isolate);
|
| + TO_THIS_STRING(string, "String.prototype.trimRight");
|
| + return *String::Trim(string, String::kTrimRight);
|
| +}
|
| +
|
| // -----------------------------------------------------------------------------
|
| // ES6 section 21.1 ArrayBuffer Objects
|
|
|
|
|