Chromium Code Reviews| 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) { |
|
Franzi
2016/05/27 14:20:08
This file is already very large (or so I was told
Benedikt Meurer
2016/05/27 17:20:58
Yes, builtins.cc should definitely be split at som
|
| + 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 |