Chromium Code Reviews| Index: src/runtime.cc |
| diff --git a/src/runtime.cc b/src/runtime.cc |
| index 8a0915c894dba7b98c9a0cd0c35918220468cb2d..f2da681d08cf593f1580027172db09bfbbe48a84 100644 |
| --- a/src/runtime.cc |
| +++ b/src/runtime.cc |
| @@ -69,9 +69,9 @@ namespace internal { |
| // Cast the given object to a value of the specified type and store |
| // it in a variable with the given name. If the object is not of the |
| // expected type call IllegalOperation and return. |
| -#define CONVERT_CHECKED(Type, name, obj) \ |
| - RUNTIME_ASSERT(obj->Is##Type()); \ |
| - Type* name = Type::cast(obj); |
| +#define CONVERT_CHECKED(Type, name, index) \ |
|
Jakob Kummerow
2012/02/20 17:31:47
Now that there's so little difference between CONV
Sven Panne
2012/02/21 07:21:01
I am not 100% sure if we can really handlify every
|
| + RUNTIME_ASSERT(args[index]->Is##Type()); \ |
| + Type* name = Type::cast(args[index]); |
| #define CONVERT_ARG_CHECKED(Type, name, index) \ |
| RUNTIME_ASSERT(args[index]->Is##Type()); \ |
| @@ -80,9 +80,9 @@ namespace internal { |
| // Cast the given object to a boolean and store it in a variable with |
| // the given name. If the object is not a boolean call IllegalOperation |
| // and return. |
| -#define CONVERT_BOOLEAN_CHECKED(name, obj) \ |
| - RUNTIME_ASSERT(obj->IsBoolean()); \ |
| - bool name = (obj)->IsTrue(); |
| +#define CONVERT_BOOLEAN_CHECKED(name, index) \ |
| + RUNTIME_ASSERT(args[index]->IsBoolean()); \ |
| + bool name = args[index]->IsTrue(); |
| // Cast the given argument to a Smi and store its value in an int variable |
| // with the given name. If the argument is not a Smi call IllegalOperation |
| @@ -106,12 +106,20 @@ namespace internal { |
| type name = NumberTo##Type(obj); |
| +// Cast the given argument to PropertyDetails and store its value in a |
| +// variable with the given name. If the argument is not a Smi call |
| +// IllegalOperation and return. |
| +#define CONVERT_PROPERTY_DETAILS_CHECKED(name, index) \ |
| + RUNTIME_ASSERT(args[index]->IsSmi()); \ |
| + PropertyDetails name = PropertyDetails(Smi::cast(args[index])); |
| + |
| + |
| // Assert that the given argument has a valid value for a StrictModeFlag |
| // and store it in a StrictModeFlag variable with the given name. |
| #define CONVERT_STRICT_MODE_ARG(name, index) \ |
| - ASSERT(args[index]->IsSmi()); \ |
| - ASSERT(args.smi_at(index) == kStrictMode || \ |
| - args.smi_at(index) == kNonStrictMode); \ |
| + RUNTIME_ASSERT(args[index]->IsSmi()); \ |
| + RUNTIME_ASSERT(args.smi_at(index) == kStrictMode || \ |
| + args.smi_at(index) == kNonStrictMode); \ |
| StrictModeFlag name = \ |
| static_cast<StrictModeFlag>(args.smi_at(index)); |
| @@ -691,28 +699,28 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_IsJSFunctionProxy) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_GetHandler) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSProxy, proxy, args[0]); |
| + CONVERT_CHECKED(JSProxy, proxy, 0); |
| return proxy->handler(); |
| } |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_GetCallTrap) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSFunctionProxy, proxy, args[0]); |
| + CONVERT_CHECKED(JSFunctionProxy, proxy, 0); |
| return proxy->call_trap(); |
| } |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_GetConstructTrap) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSFunctionProxy, proxy, args[0]); |
| + CONVERT_CHECKED(JSFunctionProxy, proxy, 0); |
| return proxy->construct_trap(); |
| } |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_Fix) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSProxy, proxy, args[0]); |
| + CONVERT_CHECKED(JSProxy, proxy, 0); |
| proxy->Fix(); |
| return isolate->heap()->undefined_value(); |
| } |
| @@ -840,7 +848,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ClassOf) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_GetPrototype) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSReceiver, input_obj, args[0]); |
| + CONVERT_CHECKED(JSReceiver, input_obj, 0); |
| Object* obj = input_obj; |
| // We don't expect access checks to be needed on JSProxy objects. |
| ASSERT(!obj->IsAccessCheckNeeded() || obj->IsJSObject()); |
| @@ -1147,14 +1155,14 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetOwnProperty) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_PreventExtensions) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSObject, obj, args[0]); |
| + CONVERT_CHECKED(JSObject, obj, 0); |
| return obj->PreventExtensions(); |
| } |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_IsExtensible) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSObject, obj, args[0]); |
| + CONVERT_CHECKED(JSObject, obj, 0); |
| if (obj->IsJSGlobalProxy()) { |
| Object* proto = obj->GetPrototype(); |
| if (proto->IsNull()) return isolate->heap()->false_value(); |
| @@ -1195,9 +1203,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_IsTemplate) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_GetTemplateField) { |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(HeapObject, templ, args[0]); |
| - CONVERT_CHECKED(Smi, field, args[1]); |
| - int index = field->value(); |
| + CONVERT_CHECKED(HeapObject, templ, 0); |
| + CONVERT_SMI_ARG_CHECKED(index, 1) |
| int offset = index * kPointerSize + HeapObject::kHeaderSize; |
| InstanceType type = templ->map()->instance_type(); |
| RUNTIME_ASSERT(type == FUNCTION_TEMPLATE_INFO_TYPE || |
| @@ -1214,7 +1221,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetTemplateField) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_DisableAccessChecks) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(HeapObject, object, args[0]); |
| + CONVERT_CHECKED(HeapObject, object, 0); |
| Map* old_map = object->map(); |
| bool needs_access_checks = old_map->is_access_check_needed(); |
| if (needs_access_checks) { |
| @@ -1233,7 +1240,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DisableAccessChecks) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_EnableAccessChecks) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(HeapObject, object, args[0]); |
| + CONVERT_CHECKED(HeapObject, object, 0); |
| Map* old_map = object->map(); |
| if (!old_map->is_access_check_needed()) { |
| // Copy map so it won't interfere constructor's initial map. |
| @@ -1769,8 +1776,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_RegExpConstructResult) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_RegExpInitializeObject) { |
| AssertNoAllocation no_alloc; |
| ASSERT(args.length() == 5); |
| - CONVERT_CHECKED(JSRegExp, regexp, args[0]); |
| - CONVERT_CHECKED(String, source, args[1]); |
| + CONVERT_CHECKED(JSRegExp, regexp, 0); |
| + CONVERT_CHECKED(String, source, 1); |
| Object* global = args[2]; |
| if (!global->IsTrue()) global = isolate->heap()->false_value(); |
| @@ -1883,7 +1890,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_SpecialArrayFunctions) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_GetDefaultReceiver) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSReceiver, callable, args[0]); |
| + CONVERT_CHECKED(JSReceiver, callable, 0); |
| if (!callable->IsJSFunction()) { |
| HandleScope scope(isolate); |
| @@ -1942,7 +1949,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionGetName) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSFunction, f, args[0]); |
| + CONVERT_CHECKED(JSFunction, f, 0); |
| return f->shared()->name(); |
| } |
| @@ -1951,8 +1958,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionSetName) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(JSFunction, f, args[0]); |
| - CONVERT_CHECKED(String, name, args[1]); |
| + CONVERT_CHECKED(JSFunction, f, 0); |
| + CONVERT_CHECKED(String, name, 1); |
| f->shared()->set_name(name); |
| return isolate->heap()->undefined_value(); |
| } |
| @@ -1961,7 +1968,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionSetName) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionNameShouldPrintAsAnonymous) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSFunction, f, args[0]); |
| + CONVERT_CHECKED(JSFunction, f, 0); |
| return isolate->heap()->ToBoolean( |
| f->shared()->name_should_print_as_anonymous()); |
| } |
| @@ -1970,7 +1977,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionNameShouldPrintAsAnonymous) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionMarkNameShouldPrintAsAnonymous) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSFunction, f, args[0]); |
| + CONVERT_CHECKED(JSFunction, f, 0); |
| f->shared()->set_name_should_print_as_anonymous(true); |
| return isolate->heap()->undefined_value(); |
| } |
| @@ -1980,7 +1987,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionRemovePrototype) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSFunction, f, args[0]); |
| + CONVERT_CHECKED(JSFunction, f, 0); |
| Object* obj = f->RemovePrototype(); |
| if (obj->IsFailure()) return obj; |
| @@ -1992,7 +1999,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionGetScript) { |
| HandleScope scope(isolate); |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSFunction, fun, args[0]); |
| + CONVERT_CHECKED(JSFunction, fun, 0); |
| Handle<Object> script = Handle<Object>(fun->shared()->script(), isolate); |
| if (!script->IsScript()) return isolate->heap()->undefined_value(); |
| @@ -2014,7 +2021,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionGetScriptSourcePosition) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSFunction, fun, args[0]); |
| + CONVERT_CHECKED(JSFunction, fun, 0); |
| int pos = fun->shared()->start_position(); |
| return Smi::FromInt(pos); |
| } |
| @@ -2023,7 +2030,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionGetScriptSourcePosition) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionGetPositionForOffset) { |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(Code, code, args[0]); |
| + CONVERT_CHECKED(Code, code, 0); |
| CONVERT_NUMBER_CHECKED(int, offset, Int32, args[1]); |
| RUNTIME_ASSERT(0 <= offset && offset < code->Size()); |
| @@ -2037,8 +2044,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionSetInstanceClassName) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(JSFunction, fun, args[0]); |
| - CONVERT_CHECKED(String, name, args[1]); |
| + CONVERT_CHECKED(JSFunction, fun, 0); |
| + CONVERT_CHECKED(String, name, 1); |
| fun->SetInstanceClassName(name); |
| return isolate->heap()->undefined_value(); |
| } |
| @@ -2048,10 +2055,10 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionSetLength) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(JSFunction, fun, args[0]); |
| - CONVERT_CHECKED(Smi, length, args[1]); |
| - fun->shared()->set_length(length->value()); |
| - return length; |
| + CONVERT_CHECKED(JSFunction, fun, 0); |
| + CONVERT_SMI_ARG_CHECKED(length, 1); |
| + fun->shared()->set_length(length); |
| + return fun; |
|
Jakob Kummerow
2012/02/20 17:31:47
Is this change intentional?
Sven Panne
2012/02/21 07:21:01
Yep, it is just our usual ultra-confusing way of s
|
| } |
| @@ -2059,7 +2066,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionSetPrototype) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(JSFunction, fun, args[0]); |
| + CONVERT_CHECKED(JSFunction, fun, 0); |
| ASSERT(fun->should_have_prototype()); |
| Object* obj; |
| { MaybeObject* maybe_obj = |
| @@ -2073,7 +2080,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionSetPrototype) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionSetReadOnlyPrototype) { |
| NoHandleAllocation ha; |
| RUNTIME_ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSFunction, function, args[0]); |
| + CONVERT_CHECKED(JSFunction, function, 0); |
| MaybeObject* maybe_name = |
| isolate->heap()->AllocateStringFromAscii(CStrVector("prototype")); |
| @@ -2129,7 +2136,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionIsAPIFunction) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSFunction, f, args[0]); |
| + CONVERT_CHECKED(JSFunction, f, 0); |
| return isolate->heap()->ToBoolean(f->shared()->IsApiFunction()); |
| } |
| @@ -2138,7 +2145,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionIsBuiltin) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSFunction, f, args[0]); |
| + CONVERT_CHECKED(JSFunction, f, 0); |
| return isolate->heap()->ToBoolean(f->IsBuiltin()); |
| } |
| @@ -2235,7 +2242,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringCharCodeAt) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(String, subject, args[0]); |
| + CONVERT_CHECKED(String, subject, 0); |
| Object* index = args[1]; |
| RUNTIME_ASSERT(index->IsNumber()); |
| @@ -3212,7 +3219,7 @@ MUST_USE_RESULT static MaybeObject* StringReplaceRegExpWithEmptyString( |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_StringReplaceRegExpWithString) { |
| ASSERT(args.length() == 4); |
| - CONVERT_CHECKED(String, subject, args[0]); |
| + CONVERT_CHECKED(String, subject, 0); |
| if (!subject->IsFlat()) { |
| Object* flat_subject; |
| { MaybeObject* maybe_flat_subject = subject->TryFlatten(); |
| @@ -3223,7 +3230,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringReplaceRegExpWithString) { |
| subject = String::cast(flat_subject); |
| } |
| - CONVERT_CHECKED(String, replacement, args[2]); |
| + CONVERT_CHECKED(String, replacement, 2); |
| if (!replacement->IsFlat()) { |
| Object* flat_replacement; |
| { MaybeObject* maybe_flat_replacement = replacement->TryFlatten(); |
| @@ -3234,8 +3241,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringReplaceRegExpWithString) { |
| replacement = String::cast(flat_replacement); |
| } |
| - CONVERT_CHECKED(JSRegExp, regexp, args[1]); |
| - CONVERT_CHECKED(JSArray, last_match_info, args[3]); |
| + CONVERT_CHECKED(JSRegExp, regexp, 1); |
| + CONVERT_CHECKED(JSArray, last_match_info, 3); |
| ASSERT(last_match_info->HasFastElements()); |
| @@ -3497,8 +3504,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringLocaleCompare) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(String, str1, args[0]); |
| - CONVERT_CHECKED(String, str2, args[1]); |
| + CONVERT_CHECKED(String, str1, 0); |
| + CONVERT_CHECKED(String, str2, 1); |
| if (str1 == str2) return Smi::FromInt(0); // Equal. |
| int str1_length = str1->length(); |
| @@ -3545,7 +3552,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_SubString) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 3); |
| - CONVERT_CHECKED(String, value, args[0]); |
| + CONVERT_CHECKED(String, value, 0); |
| int start, end; |
| // We have a fast integer-only case here to avoid a conversion to double in |
| // the common case where from and to are Smis. |
| @@ -4318,18 +4325,17 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DefineOrRedefineAccessorProperty) { |
| ASSERT(args.length() == 5); |
| HandleScope scope(isolate); |
| CONVERT_ARG_CHECKED(JSObject, obj, 0); |
| - CONVERT_CHECKED(String, name, args[1]); |
| - CONVERT_CHECKED(Smi, flag_setter, args[2]); |
| + CONVERT_CHECKED(String, name, 1); |
| + CONVERT_SMI_ARG_CHECKED(flag_setter, 2); |
| Object* fun = args[3]; |
| - CONVERT_CHECKED(Smi, flag_attr, args[4]); |
| + CONVERT_SMI_ARG_CHECKED(unchecked, 4); |
| - int unchecked = flag_attr->value(); |
| RUNTIME_ASSERT((unchecked & ~(READ_ONLY | DONT_ENUM | DONT_DELETE)) == 0); |
| PropertyAttributes attr = static_cast<PropertyAttributes>(unchecked); |
| RUNTIME_ASSERT(!obj->IsNull()); |
| RUNTIME_ASSERT(fun->IsSpecFunction() || fun->IsUndefined()); |
| - return obj->DefineAccessor(name, flag_setter->value() == 0, fun, attr); |
| + return obj->DefineAccessor(name, flag_setter == 0, fun, attr); |
| } |
| // Implements part of 8.12.9 DefineOwnProperty. |
| @@ -4344,9 +4350,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DefineOrRedefineDataProperty) { |
| CONVERT_ARG_CHECKED(JSObject, js_object, 0); |
| CONVERT_ARG_CHECKED(String, name, 1); |
| Handle<Object> obj_value = args.at<Object>(2); |
| - CONVERT_CHECKED(Smi, flag, args[3]); |
| + CONVERT_SMI_ARG_CHECKED(unchecked, 3); |
| - int unchecked = flag->value(); |
| RUNTIME_ASSERT((unchecked & ~(READ_ONLY | DONT_ENUM | DONT_DELETE)) == 0); |
| PropertyAttributes attr = static_cast<PropertyAttributes>(unchecked); |
| @@ -4758,13 +4763,12 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StoreArrayLiteralElement) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_IgnoreAttributesAndSetProperty) { |
| NoHandleAllocation ha; |
| RUNTIME_ASSERT(args.length() == 3 || args.length() == 4); |
| - CONVERT_CHECKED(JSObject, object, args[0]); |
| - CONVERT_CHECKED(String, name, args[1]); |
| + CONVERT_CHECKED(JSObject, object, 0); |
| + CONVERT_CHECKED(String, name, 1); |
| // Compute attributes. |
| PropertyAttributes attributes = NONE; |
| if (args.length() == 4) { |
| - CONVERT_CHECKED(Smi, value_obj, args[3]); |
| - int unchecked_value = value_obj->value(); |
| + CONVERT_SMI_ARG_CHECKED(unchecked_value, 3); |
| // Only attribute bits should be set. |
| RUNTIME_ASSERT( |
| (unchecked_value & ~(READ_ONLY | DONT_ENUM | DONT_DELETE)) == 0); |
| @@ -4780,8 +4784,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DeleteProperty) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 3); |
| - CONVERT_CHECKED(JSReceiver, object, args[0]); |
| - CONVERT_CHECKED(String, key, args[1]); |
| + CONVERT_CHECKED(JSReceiver, object, 0); |
| + CONVERT_CHECKED(String, key, 1); |
| CONVERT_STRICT_MODE_ARG(strict_mode, 2); |
| return object->DeleteProperty(key, (strict_mode == kStrictMode) |
| ? JSReceiver::STRICT_DELETION |
| @@ -4810,7 +4814,7 @@ static Object* HasLocalPropertyImplementation(Isolate* isolate, |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_HasLocalProperty) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(String, key, args[1]); |
| + CONVERT_CHECKED(String, key, 1); |
| uint32_t index; |
| const bool key_is_array_index = key->AsArrayIndex(&index); |
| @@ -4848,8 +4852,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_HasLocalProperty) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_HasProperty) { |
| NoHandleAllocation na; |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(JSReceiver, receiver, args[0]); |
| - CONVERT_CHECKED(String, key, args[1]); |
| + CONVERT_CHECKED(JSReceiver, receiver, 0); |
| + CONVERT_CHECKED(String, key, 1); |
| bool result = receiver->HasProperty(key); |
| if (isolate->has_pending_exception()) return Failure::Exception(); |
| @@ -4860,10 +4864,10 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_HasProperty) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_HasElement) { |
| NoHandleAllocation na; |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(JSReceiver, receiver, args[0]); |
| - CONVERT_CHECKED(Smi, index, args[1]); |
| + CONVERT_CHECKED(JSReceiver, receiver, 0); |
| + CONVERT_SMI_ARG_CHECKED(index, 1); |
| - bool result = receiver->HasElement(index->value()); |
| + bool result = receiver->HasElement(index); |
| if (isolate->has_pending_exception()) return Failure::Exception(); |
| return isolate->heap()->ToBoolean(result); |
| } |
| @@ -4873,8 +4877,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_IsPropertyEnumerable) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(JSObject, object, args[0]); |
| - CONVERT_CHECKED(String, key, args[1]); |
| + CONVERT_CHECKED(JSObject, object, 0); |
| + CONVERT_CHECKED(String, key, 1); |
| uint32_t index; |
| if (key->AsArrayIndex(&index)) { |
| @@ -4935,7 +4939,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetPropertyNames) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_GetPropertyNamesFast) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSReceiver, raw_object, args[0]); |
| + CONVERT_CHECKED(JSReceiver, raw_object, 0); |
| if (raw_object->IsSimpleEnum()) return raw_object->map(); |
| @@ -5122,7 +5126,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetIndexedInterceptorElementNames) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_LocalKeys) { |
| ASSERT_EQ(args.length(), 1); |
| - CONVERT_CHECKED(JSObject, raw_object, args[0]); |
| + CONVERT_CHECKED(JSObject, raw_object, 0); |
| HandleScope scope(isolate); |
| Handle<JSObject> object(raw_object); |
| @@ -5314,7 +5318,7 @@ static int ParseDecimalInteger(const char*s, int from, int to) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_StringToNumber) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(String, subject, args[0]); |
| + CONVERT_CHECKED(String, subject, 0); |
| subject->TryFlatten(); |
| // Fast case: short integer or some sorts of junk values. |
| @@ -5370,7 +5374,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringFromCharCodeArray) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSArray, codes, args[0]); |
| + CONVERT_CHECKED(JSArray, codes, 0); |
| int length = Smi::cast(codes->length())->value(); |
| // Check if the string can be ASCII. |
| @@ -5450,7 +5454,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_URIEscape) { |
| const char hex_chars[] = "0123456789ABCDEF"; |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(String, source, args[0]); |
| + CONVERT_CHECKED(String, source, 0); |
| source->TryFlatten(); |
| @@ -5568,7 +5572,7 @@ static inline int Unescape(String* source, |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_URIUnescape) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(String, source, args[0]); |
| + CONVERT_CHECKED(String, source, 0); |
| source->TryFlatten(); |
| @@ -5825,7 +5829,7 @@ static MaybeObject* QuoteJsonString(Isolate* isolate, |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_QuoteJSONString) { |
| NoHandleAllocation ha; |
| - CONVERT_CHECKED(String, str, args[0]); |
| + CONVERT_CHECKED(String, str, 0); |
| if (!str->IsFlat()) { |
| MaybeObject* try_flatten = str->TryFlatten(); |
| Object* flat; |
| @@ -5849,7 +5853,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_QuoteJSONString) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_QuoteJSONStringComma) { |
| NoHandleAllocation ha; |
| - CONVERT_CHECKED(String, str, args[0]); |
| + CONVERT_CHECKED(String, str, 0); |
| if (!str->IsFlat()) { |
| MaybeObject* try_flatten = str->TryFlatten(); |
| Object* flat; |
| @@ -5926,7 +5930,7 @@ static MaybeObject* QuoteJsonStringArray(Isolate* isolate, |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_QuoteJSONStringArray) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSArray, array, args[0]); |
| + CONVERT_CHECKED(JSArray, array, 0); |
| if (!array->HasFastElements()) return isolate->heap()->undefined_value(); |
| FixedArray* elements = FixedArray::cast(array->elements()); |
| @@ -5968,7 +5972,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_QuoteJSONStringArray) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_StringParseInt) { |
| NoHandleAllocation ha; |
| - CONVERT_CHECKED(String, s, args[0]); |
| + CONVERT_CHECKED(String, s, 0); |
| CONVERT_SMI_ARG_CHECKED(radix, 1); |
| s->TryFlatten(); |
| @@ -5981,7 +5985,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringParseInt) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_StringParseFloat) { |
| NoHandleAllocation ha; |
| - CONVERT_CHECKED(String, str, args[0]); |
| + CONVERT_CHECKED(String, str, 0); |
| // ECMA-262 section 15.1.2.3, empty string is NaN |
| double value = StringToDouble(isolate->unicode_cache(), |
| @@ -6230,7 +6234,7 @@ MUST_USE_RESULT static MaybeObject* ConvertCase( |
| Isolate* isolate, |
| unibrow::Mapping<typename ConvertTraits::UnibrowConverter, 128>* mapping) { |
| NoHandleAllocation ha; |
| - CONVERT_CHECKED(String, s, args[0]); |
| + CONVERT_CHECKED(String, s, 0); |
| s = s->TryFlattenGetString(); |
| const int length = s->length(); |
| @@ -6292,9 +6296,9 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringTrim) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 3); |
| - CONVERT_CHECKED(String, s, args[0]); |
| - CONVERT_BOOLEAN_CHECKED(trimLeft, args[1]); |
| - CONVERT_BOOLEAN_CHECKED(trimRight, args[2]); |
| + CONVERT_CHECKED(String, s, 0); |
| + CONVERT_BOOLEAN_CHECKED(trimLeft, 1); |
| + CONVERT_BOOLEAN_CHECKED(trimRight, 2); |
| s->TryFlatten(); |
| int length = s->length(); |
| @@ -6492,7 +6496,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringToArray) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_NewStringWrapper) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(String, value, args[0]); |
| + CONVERT_CHECKED(String, value, 0); |
| return value->ToObject(); |
| } |
| @@ -6683,8 +6687,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NumberMod) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_StringAdd) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(String, str1, args[0]); |
| - CONVERT_CHECKED(String, str2, args[1]); |
| + CONVERT_CHECKED(String, str1, 0); |
| + CONVERT_CHECKED(String, str2, 1); |
| isolate->counters()->string_add_runtime()->Increment(); |
| return isolate->heap()->AllocateConsString(str1, str2); |
| } |
| @@ -6732,13 +6736,13 @@ static inline void StringBuilderConcatHelper(String* special, |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_StringBuilderConcat) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 3); |
| - CONVERT_CHECKED(JSArray, array, args[0]); |
| + CONVERT_CHECKED(JSArray, array, 0); |
| if (!args[1]->IsSmi()) { |
| isolate->context()->mark_out_of_memory(); |
| return Failure::OutOfMemoryException(); |
| } |
| int array_length = args.smi_at(1); |
| - CONVERT_CHECKED(String, special, args[2]); |
| + CONVERT_CHECKED(String, special, 2); |
| // This assumption is used by the slice encoding in one or two smis. |
| ASSERT(Smi::kMaxValue >= String::kMaxLength); |
| @@ -6848,13 +6852,13 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringBuilderConcat) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_StringBuilderJoin) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 3); |
| - CONVERT_CHECKED(JSArray, array, args[0]); |
| + CONVERT_CHECKED(JSArray, array, 0); |
| if (!args[1]->IsSmi()) { |
| isolate->context()->mark_out_of_memory(); |
| return Failure::OutOfMemoryException(); |
| } |
| int array_length = args.smi_at(1); |
| - CONVERT_CHECKED(String, separator, args[2]); |
| + CONVERT_CHECKED(String, separator, 2); |
| if (!array->HasFastElements()) { |
| return isolate->Throw(isolate->heap()->illegal_argument_symbol()); |
| @@ -6972,11 +6976,11 @@ static void JoinSparseArrayWithSeparator(FixedArray* elements, |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_SparseJoinWithSeparator) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 3); |
| - CONVERT_CHECKED(JSArray, elements_array, args[0]); |
| + CONVERT_CHECKED(JSArray, elements_array, 0); |
| RUNTIME_ASSERT(elements_array->HasFastElements() || |
| elements_array->HasFastSmiOnlyElements()); |
| CONVERT_NUMBER_CHECKED(uint32_t, array_length, Uint32, args[1]); |
| - CONVERT_CHECKED(String, separator, args[2]); |
| + CONVERT_CHECKED(String, separator, 2); |
| // elements_array is fast-mode JSarray of alternating positions |
| // (increasing order) and strings. |
| // array_length is length of original array (used to add separators); |
| @@ -6998,7 +7002,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_SparseJoinWithSeparator) { |
| FixedArray* elements = FixedArray::cast(elements_array->elements()); |
| for (int i = 0; i < elements_length; i += 2) { |
| RUNTIME_ASSERT(elements->get(i)->IsNumber()); |
| - CONVERT_CHECKED(String, string, elements->get(i + 1)); |
| + RUNTIME_ASSERT(elements->get(i + 1)->IsString()); |
| + String* string = String::cast(elements->get(i + 1)); |
| int length = string->length(); |
| if (is_ascii && !string->IsAsciiRepresentation()) { |
| is_ascii = false; |
| @@ -7156,8 +7161,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringEquals) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(String, x, args[0]); |
| - CONVERT_CHECKED(String, y, args[1]); |
| + CONVERT_CHECKED(String, x, 0); |
| + CONVERT_CHECKED(String, y, 1); |
| bool not_equal = !x->Equals(y); |
| // This is slightly convoluted because the value that signifies |
| @@ -7188,12 +7193,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NumberCompare) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_SmiLexicographicCompare) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 2); |
| - |
| - // Extract the integer values from the Smis. |
| - CONVERT_CHECKED(Smi, x, args[0]); |
| - CONVERT_CHECKED(Smi, y, args[1]); |
| - int x_value = x->value(); |
| - int y_value = y->value(); |
| + CONVERT_SMI_ARG_CHECKED(x_value, 0); |
| + CONVERT_SMI_ARG_CHECKED(y_value, 1); |
| // If the integers are equal so are the string representations. |
| if (x_value == y_value) return Smi::FromInt(EQUAL); |
| @@ -7333,8 +7334,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_StringCompare) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(String, x, args[0]); |
| - CONVERT_CHECKED(String, y, args[1]); |
| + CONVERT_CHECKED(String, x, 0); |
| + CONVERT_CHECKED(String, y, 1); |
| isolate->counters()->string_compare_runtime()->Increment(); |
| @@ -7941,7 +7942,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DateYMDFromTime) { |
| ASSERT(args.length() == 2); |
| CONVERT_DOUBLE_ARG_CHECKED(t, 0); |
| - CONVERT_CHECKED(JSArray, res_array, args[1]); |
| + CONVERT_CHECKED(JSArray, res_array, 1); |
| int year, month, day; |
| DateYMDFromTime(static_cast<int>(floor(t / 86400000)), year, month, day); |
| @@ -8098,7 +8099,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewClosure) { |
| ASSERT(args.length() == 3); |
| CONVERT_ARG_CHECKED(Context, context, 0); |
| CONVERT_ARG_CHECKED(SharedFunctionInfo, shared, 1); |
| - CONVERT_BOOLEAN_CHECKED(pretenure, args[2]); |
| + CONVERT_BOOLEAN_CHECKED(pretenure, 2); |
| // The caller ensures that we pretenure closures that are assigned |
| // directly to properties. |
| @@ -8754,9 +8755,9 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_CheckIsBootstrapping) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_Call) { |
| HandleScope scope(isolate); |
| ASSERT(args.length() >= 2); |
| - CONVERT_CHECKED(JSReceiver, fun, args[args.length() - 1]); |
| - Object* receiver = args[0]; |
| int argc = args.length() - 2; |
| + CONVERT_CHECKED(JSReceiver, fun, argc + 1); |
| + Object* receiver = args[0]; |
| // If there are too many arguments, allocate argv via malloc. |
| const int argv_small_size = 10; |
| @@ -8842,7 +8843,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewFunctionContext) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSFunction, function, args[0]); |
| + CONVERT_CHECKED(JSFunction, function, 0); |
| int length = function->shared()->scope_info()->ContextLength(); |
| Object* result; |
| { MaybeObject* maybe_result = |
| @@ -9624,8 +9625,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_AllocateInNewSpace) { |
| // false otherwise. |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_PushIfAbsent) { |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(JSArray, array, args[0]); |
| - CONVERT_CHECKED(JSObject, element, args[1]); |
| + CONVERT_CHECKED(JSArray, array, 0); |
| + CONVERT_CHECKED(JSObject, element, 1); |
| RUNTIME_ASSERT(array->HasFastElements() || array->HasFastSmiOnlyElements()); |
| int length = Smi::cast(array->length())->value(); |
| FixedArray* elements = FixedArray::cast(array->elements()); |
| @@ -10211,7 +10212,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GlobalPrint) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(String, string, args[0]); |
| + CONVERT_CHECKED(String, string, 0); |
| StringInputBuffer buffer(string); |
| while (buffer.has_more()) { |
| uint16_t character = buffer.GetNext(); |
| @@ -10227,7 +10228,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GlobalPrint) { |
| // Returns the number of non-undefined elements collected. |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_RemoveArrayHoles) { |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(JSObject, object, args[0]); |
| + CONVERT_CHECKED(JSObject, object, 0); |
| CONVERT_NUMBER_CHECKED(uint32_t, limit, Uint32, args[1]); |
| return object->PrepareElementsForSort(limit); |
| } |
| @@ -10236,8 +10237,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_RemoveArrayHoles) { |
| // Move contents of argument 0 (an array) to argument 1 (an array) |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_MoveArrayContents) { |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(JSArray, from, args[0]); |
| - CONVERT_CHECKED(JSArray, to, args[1]); |
| + CONVERT_CHECKED(JSArray, from, 0); |
| + CONVERT_CHECKED(JSArray, to, 1); |
| FixedArrayBase* new_elements = from->elements(); |
| MaybeObject* maybe_new_map; |
| ElementsKind elements_kind; |
| @@ -10268,7 +10269,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_MoveArrayContents) { |
| // How many elements does this object/array have? |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_EstimateNumberOfElements) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSObject, object, args[0]); |
| + CONVERT_CHECKED(JSObject, object, 0); |
| HeapObject* elements = object->elements(); |
| if (elements->IsDictionary()) { |
| int result = SeededNumberDictionary::cast(elements)->NumberOfElements(); |
| @@ -10368,27 +10369,26 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DefineAccessor) { |
| // Compute attributes. |
| PropertyAttributes attributes = NONE; |
| if (args.length() == 5) { |
| - CONVERT_CHECKED(Smi, attrs, args[4]); |
| - int value = attrs->value(); |
| + CONVERT_SMI_ARG_CHECKED(value, 4); |
| // Only attribute bits should be set. |
| ASSERT((value & ~(READ_ONLY | DONT_ENUM | DONT_DELETE)) == 0); |
| attributes = static_cast<PropertyAttributes>(value); |
| } |
| - CONVERT_CHECKED(JSObject, obj, args[0]); |
| - CONVERT_CHECKED(String, name, args[1]); |
| - CONVERT_CHECKED(Smi, flag, args[2]); |
| - CONVERT_CHECKED(JSFunction, fun, args[3]); |
| - return obj->DefineAccessor(name, flag->value() == 0, fun, attributes); |
| + CONVERT_CHECKED(JSObject, obj, 0); |
| + CONVERT_CHECKED(String, name, 1); |
| + CONVERT_SMI_ARG_CHECKED(flag, 2); |
| + CONVERT_CHECKED(JSFunction, fun, 3); |
| + return obj->DefineAccessor(name, flag == 0, fun, attributes); |
| } |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_LookupAccessor) { |
| ASSERT(args.length() == 3); |
| - CONVERT_CHECKED(JSObject, obj, args[0]); |
| - CONVERT_CHECKED(String, name, args[1]); |
| - CONVERT_CHECKED(Smi, flag, args[2]); |
| - return obj->LookupAccessor(name, flag->value() == 0); |
| + CONVERT_CHECKED(JSObject, obj, 0); |
| + CONVERT_CHECKED(String, name, 1); |
| + CONVERT_SMI_ARG_CHECKED(flag, 2); |
| + return obj->LookupAccessor(name, flag == 0); |
| } |
| @@ -10406,8 +10406,8 @@ static Smi* WrapFrameId(StackFrame::Id id) { |
| } |
| -static StackFrame::Id UnwrapFrameId(Smi* wrapped) { |
| - return static_cast<StackFrame::Id>(wrapped->value() << 2); |
| +static StackFrame::Id UnwrapFrameId(int wrapped) { |
| + return static_cast<StackFrame::Id>(wrapped << 2); |
| } |
| @@ -10624,9 +10624,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugGetProperty) { |
| // args[0]: smi with property details. |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugPropertyTypeFromDetails) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(Smi, details, args[0]); |
| - PropertyType type = PropertyDetails(details).type(); |
| - return Smi::FromInt(static_cast<int>(type)); |
| + CONVERT_PROPERTY_DETAILS_CHECKED(details, 0); |
| + return Smi::FromInt(static_cast<int>(details.type())); |
| } |
| @@ -10634,9 +10633,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugPropertyTypeFromDetails) { |
| // args[0]: smi with property details. |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugPropertyAttributesFromDetails) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(Smi, details, args[0]); |
| - PropertyAttributes attributes = PropertyDetails(details).attributes(); |
| - return Smi::FromInt(static_cast<int>(attributes)); |
| + CONVERT_PROPERTY_DETAILS_CHECKED(details, 0); |
| + return Smi::FromInt(static_cast<int>(details.attributes())); |
| } |
| @@ -10644,9 +10642,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugPropertyAttributesFromDetails) { |
| // args[0]: smi with property details. |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugPropertyIndexFromDetails) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(Smi, details, args[0]); |
| - int index = PropertyDetails(details).index(); |
| - return Smi::FromInt(index); |
| + CONVERT_PROPERTY_DETAILS_CHECKED(details, 0); |
| + return Smi::FromInt(details.index()); |
| } |
| @@ -11607,7 +11604,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetScopeCount) { |
| RUNTIME_ARGUMENTS(isolate, args)); |
| if (!maybe_check->ToObject(&check)) return maybe_check; |
| } |
| - CONVERT_CHECKED(Smi, wrapped_id, args[1]); |
| + CONVERT_SMI_ARG_CHECKED(wrapped_id, 1); |
| // Get the frame where the debugging is performed. |
| StackFrame::Id id = UnwrapFrameId(wrapped_id); |
| @@ -11649,7 +11646,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetScopeDetails) { |
| RUNTIME_ARGUMENTS(isolate, args)); |
| if (!maybe_check->ToObject(&check)) return maybe_check; |
| } |
| - CONVERT_CHECKED(Smi, wrapped_id, args[1]); |
| + CONVERT_SMI_ARG_CHECKED(wrapped_id, 1); |
| CONVERT_NUMBER_CHECKED(int, inlined_jsframe_index, Int32, args[2]); |
| CONVERT_NUMBER_CHECKED(int, index, Int32, args[3]); |
| @@ -11789,7 +11786,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetThreadDetails) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_SetDisableBreak) { |
| HandleScope scope(isolate); |
| ASSERT(args.length() == 1); |
| - CONVERT_BOOLEAN_CHECKED(disable_break, args[0]); |
| + CONVERT_BOOLEAN_CHECKED(disable_break, 0); |
| isolate->debug()->set_disable_break(disable_break); |
| return isolate->heap()->undefined_value(); |
| } |
| @@ -11973,7 +11970,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ChangeBreakOnException) { |
| HandleScope scope(isolate); |
| ASSERT(args.length() == 2); |
| RUNTIME_ASSERT(args[0]->IsNumber()); |
| - CONVERT_BOOLEAN_CHECKED(enable, args[1]); |
| + CONVERT_BOOLEAN_CHECKED(enable, 1); |
| // If the number doesn't match an enum value, the ChangeBreakOnException |
| // function will default to affecting caught exceptions. |
| @@ -12188,10 +12185,10 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugEvaluate) { |
| return maybe_check_result; |
| } |
| } |
| - CONVERT_CHECKED(Smi, wrapped_id, args[1]); |
| + CONVERT_SMI_ARG_CHECKED(wrapped_id, 1); |
| CONVERT_NUMBER_CHECKED(int, inlined_jsframe_index, Int32, args[2]); |
| CONVERT_ARG_CHECKED(String, source, 3); |
| - CONVERT_BOOLEAN_CHECKED(disable_break, args[4]); |
| + CONVERT_BOOLEAN_CHECKED(disable_break, 4); |
| Handle<Object> additional_context(args[5]); |
| // Handle the processing of break. |
| @@ -12328,7 +12325,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugEvaluateGlobal) { |
| } |
| } |
| CONVERT_ARG_CHECKED(String, source, 1); |
| - CONVERT_BOOLEAN_CHECKED(disable_break, args[2]); |
| + CONVERT_BOOLEAN_CHECKED(disable_break, 2); |
| Handle<Object> additional_context(args[3]); |
| // Handle the processing of break. |
| @@ -12501,7 +12498,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugReferencedBy) { |
| // Object* locals that are not protected by handles. |
| // Check parameters. |
| - CONVERT_CHECKED(JSObject, target, args[0]); |
| + CONVERT_CHECKED(JSObject, target, 0); |
| Object* instance_filter = args[1]; |
| RUNTIME_ASSERT(instance_filter->IsUndefined() || |
| instance_filter->IsJSObject()); |
| @@ -12589,7 +12586,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugConstructedBy) { |
| "%DebugConstructedBy"); |
| // Check parameters. |
| - CONVERT_CHECKED(JSFunction, constructor, args[0]); |
| + CONVERT_CHECKED(JSFunction, constructor, 0); |
| CONVERT_NUMBER_CHECKED(int32_t, max_references, Int32, args[1]); |
| RUNTIME_ASSERT(max_references >= 0); |
| @@ -12633,7 +12630,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugConstructedBy) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugGetPrototype) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSObject, obj, args[0]); |
| + CONVERT_CHECKED(JSObject, obj, 0); |
| // Use the __proto__ accessor. |
| return Accessors::ObjectPrototype.getter(obj, NULL); |
| @@ -12683,7 +12680,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionGetInferredName) { |
| NoHandleAllocation ha; |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(JSFunction, f, args[0]); |
| + CONVERT_CHECKED(JSFunction, f, 0); |
| return f->shared()->inferred_name(); |
| } |
| @@ -12720,7 +12717,7 @@ RUNTIME_FUNCTION(MaybeObject*, |
| Runtime_LiveEditFindSharedFunctionInfosForScript) { |
| ASSERT(args.length() == 1); |
| HandleScope scope(isolate); |
| - CONVERT_CHECKED(JSValue, script_value, args[0]); |
| + CONVERT_CHECKED(JSValue, script_value, 0); |
| Handle<Script> script = Handle<Script>(Script::cast(script_value->value())); |
| @@ -12766,7 +12763,7 @@ RUNTIME_FUNCTION(MaybeObject*, |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditGatherCompileInfo) { |
| ASSERT(args.length() == 2); |
| HandleScope scope(isolate); |
| - CONVERT_CHECKED(JSValue, script, args[0]); |
| + CONVERT_CHECKED(JSValue, script, 0); |
| CONVERT_ARG_CHECKED(String, source, 1); |
| Handle<Script> script_handle = Handle<Script>(Script::cast(script->value())); |
| @@ -12785,13 +12782,12 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditGatherCompileInfo) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditReplaceScript) { |
| ASSERT(args.length() == 3); |
| HandleScope scope(isolate); |
| - CONVERT_CHECKED(JSValue, original_script_value, args[0]); |
| + CONVERT_CHECKED(JSValue, original_script_value, 0); |
| CONVERT_ARG_CHECKED(String, new_source, 1); |
| Handle<Object> old_script_name(args[2], isolate); |
| - CONVERT_CHECKED(Script, original_script_pointer, |
| - original_script_value->value()); |
| - Handle<Script> original_script(original_script_pointer); |
| + RUNTIME_ASSERT(original_script_value->value()->IsScript()); |
| + Handle<Script> original_script(Script::cast(original_script_value->value())); |
| Object* old_script = LiveEdit::ChangeScriptSource(original_script, |
| new_source, |
| @@ -12834,7 +12830,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditFunctionSetScript) { |
| if (function_object->IsJSValue()) { |
| Handle<JSValue> function_wrapper = Handle<JSValue>::cast(function_object); |
| if (script_object->IsJSValue()) { |
| - CONVERT_CHECKED(Script, script, JSValue::cast(*script_object)->value()); |
| + RUNTIME_ASSERT(JSValue::cast(*script_object)->value()->IsScript()); |
| + Script* script = Script::cast(JSValue::cast(*script_object)->value()); |
| script_object = Handle<Object>(script, isolate); |
| } |
| @@ -12888,7 +12885,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_LiveEditCheckAndDropActivations) { |
| ASSERT(args.length() == 2); |
| HandleScope scope(isolate); |
| CONVERT_ARG_CHECKED(JSArray, shared_array, 0); |
| - CONVERT_BOOLEAN_CHECKED(do_drop, args[1]); |
| + CONVERT_BOOLEAN_CHECKED(do_drop, 1); |
| return *LiveEdit::CheckAndDropActivations(shared_array, do_drop); |
| } |
| @@ -12949,7 +12946,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ExecuteInDebugContext) { |
| ASSERT(args.length() == 2); |
| HandleScope scope(isolate); |
| CONVERT_ARG_CHECKED(JSFunction, function, 0); |
| - CONVERT_BOOLEAN_CHECKED(without_debugger, args[1]); |
| + CONVERT_BOOLEAN_CHECKED(without_debugger, 1); |
| Handle<Object> result; |
| bool pending_exception; |
| @@ -12973,7 +12970,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ExecuteInDebugContext) { |
| // Sets a v8 flag. |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_SetFlags) { |
| - CONVERT_CHECKED(String, arg, args[0]); |
| + CONVERT_CHECKED(String, arg, 0); |
| SmartArrayPointer<char> flags = |
| arg->ToCString(DISALLOW_NULLS, ROBUST_STRING_TRAVERSAL); |
| FlagList::SetFlagsFromString(*flags, StrLength(*flags)); |
| @@ -13257,7 +13254,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_GetScript) { |
| ASSERT(args.length() == 1); |
| - CONVERT_CHECKED(String, script_name, args[0]); |
| + CONVERT_CHECKED(String, script_name, 0); |
| // Find the requested script. |
| Handle<Object> result = |
| @@ -13397,7 +13394,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_Abort) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_GetFromCache) { |
| // This is only called from codegen, so checks might be more lax. |
| - CONVERT_CHECKED(JSFunctionResultCache, cache, args[0]); |
| + CONVERT_CHECKED(JSFunctionResultCache, cache, 0); |
| Object* key = args[1]; |
| int finger_index = cache->finger_index(); |
| @@ -13507,25 +13504,25 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_NewMessageObject) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_MessageGetType) { |
| - CONVERT_CHECKED(JSMessageObject, message, args[0]); |
| + CONVERT_CHECKED(JSMessageObject, message, 0); |
| return message->type(); |
| } |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_MessageGetArguments) { |
| - CONVERT_CHECKED(JSMessageObject, message, args[0]); |
| + CONVERT_CHECKED(JSMessageObject, message, 0); |
| return message->arguments(); |
| } |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_MessageGetStartPosition) { |
| - CONVERT_CHECKED(JSMessageObject, message, args[0]); |
| + CONVERT_CHECKED(JSMessageObject, message, 0); |
| return Smi::FromInt(message->start_position()); |
| } |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_MessageGetScript) { |
| - CONVERT_CHECKED(JSMessageObject, message, args[0]); |
| + CONVERT_CHECKED(JSMessageObject, message, 0); |
| return message->script(); |
| } |
| @@ -13579,8 +13576,8 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_ListNatives) { |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_Log) { |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(String, format, args[0]); |
| - CONVERT_CHECKED(JSArray, elms, args[1]); |
| + CONVERT_CHECKED(String, format, 0); |
| + CONVERT_CHECKED(JSArray, elms, 1); |
| String::FlatContent format_content = format->GetFlatContent(); |
| RUNTIME_ASSERT(format_content.IsAscii()); |
| Vector<const char> chars = format_content.ToAsciiVector(); |
| @@ -13597,7 +13594,7 @@ RUNTIME_FUNCTION(MaybeObject*, Runtime_IS_VAR) { |
| #define ELEMENTS_KIND_CHECK_RUNTIME_FUNCTION(Name) \ |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_Has##Name) { \ |
| - CONVERT_CHECKED(JSObject, obj, args[0]); \ |
| + CONVERT_CHECKED(JSObject, obj, 0); \ |
| return isolate->heap()->ToBoolean(obj->Has##Name()); \ |
| } |
| @@ -13621,8 +13618,8 @@ ELEMENTS_KIND_CHECK_RUNTIME_FUNCTION(ExternalDoubleElements) |
| RUNTIME_FUNCTION(MaybeObject*, Runtime_HaveSameMap) { |
| ASSERT(args.length() == 2); |
| - CONVERT_CHECKED(JSObject, obj1, args[0]); |
| - CONVERT_CHECKED(JSObject, obj2, args[1]); |
| + CONVERT_CHECKED(JSObject, obj1, 0); |
| + CONVERT_CHECKED(JSObject, obj2, 1); |
| return isolate->heap()->ToBoolean(obj1->map() == obj2->map()); |
| } |