5 #ifndef V8_RUNTIME_UTILS_H_
6 #define V8_RUNTIME_UTILS_H_
12 #define RUNTIME_ASSERT(value) \
13 if (!(value)) return isolate->ThrowIllegalOperation();
15 #define RUNTIME_ASSERT_HANDLIFIED(value, T) \
17 isolate->ThrowIllegalOperation(); \
18 return MaybeHandle<T>(); \
24 #define CONVERT_ARG_CHECKED(Type, name, index) \
25 RUNTIME_ASSERT(args[index]->Is##Type()); \
26 Type* name = Type::cast(args[index]);
28 #define CONVERT_ARG_HANDLE_CHECKED(Type, name, index) \
29 RUNTIME_ASSERT(args[index]->Is##Type()); \
30 Handle<Type> name = args.at<Type>(index);
32 #define CONVERT_NUMBER_ARG_HANDLE_CHECKED(name, index) \
33 RUNTIME_ASSERT(args[index]->IsNumber()); \
34 Handle<Object> name = args.at<Object>(index);
39 #define CONVERT_BOOLEAN_ARG_CHECKED(name, index) \
40 RUNTIME_ASSERT(args[index]->IsBoolean()); \
41 bool name = args[index]->IsTrue();
46 #define CONVERT_SMI_ARG_CHECKED(name, index) \
47 RUNTIME_ASSERT(args[index]->IsSmi()); \
48 int name = args.smi_at(index);
53 #define CONVERT_DOUBLE_ARG_CHECKED(name, index) \
54 RUNTIME_ASSERT(args[index]->IsNumber()); \
55 double name = args.number_at(index);
60 #define CONVERT_NUMBER_CHECKED(type, name, Type, obj) \
61 RUNTIME_ASSERT(obj->IsNumber()); \
62 type name = NumberTo##Type(obj);
68 #define CONVERT_PROPERTY_DETAILS_CHECKED(name, index) \
69 RUNTIME_ASSERT(args[index]->IsSmi()); \
70 PropertyDetails name = PropertyDetails(Smi::cast(args[index]));
75 #define CONVERT_STRICT_MODE_ARG_CHECKED(name, index) \
76 RUNTIME_ASSERT(args[index]->IsSmi()); \
77 RUNTIME_ASSERT(args.smi_at(index) == STRICT || \
78 args.smi_at(index) == SLOPPY); \
79 StrictMode name = static_cast<StrictMode>(args.smi_at(index));
85 #define CONVERT_INT32_ARG_CHECKED(name, index) \
86 RUNTIME_ASSERT(args[index]->IsNumber()); \
88 RUNTIME_ASSERT(args[index]->ToInt32(&name));
99 #ifdef V8_HOST_ARCH_64_BIT
112 #elif V8_TARGET_ARCH_X64 && V8_TARGET_ARCH_32_BIT
132 #if defined(V8_TARGET_LITTLE_ENDIAN)
133 return reinterpret_cast<uint32_t>(x) |
135 #elif defined(V8_TARGET_BIG_ENDIAN)
139 #error Unknown endianness
kSerializedDataOffset Object
static ObjectPair MakePair(Object *x, Object *y)
Debugger support for the V8 JavaScript engine.