Chromium Code Reviews| Index: runtime/vm/native_entry.h |
| =================================================================== |
| --- runtime/vm/native_entry.h (revision 15830) |
| +++ runtime/vm/native_entry.h (working copy) |
| @@ -51,9 +51,9 @@ |
| NativeArguments* arguments) |
| -// Natives should throw an exception if an illegal argument is passed. |
| +// Natives should throw an exception if an illegal argument or null is passed. |
| // type name = value. |
| -#define GET_NATIVE_ARGUMENT(type, name, value) \ |
| +#define GET_NON_NULL_NATIVE_ARGUMENT(type, name, value) \ |
| const Instance& __##name##_instance__ = \ |
| Instance::CheckedHandle(isolate, value); \ |
| if (!__##name##_instance__.Is##type()) { \ |
| @@ -64,7 +64,22 @@ |
| const type& name = type::Cast(__##name##_instance__); |
| +// Natives should throw an exception if an illegal argument is passed. |
| +// type name = value. |
| +#define GET_NATIVE_ARGUMENT(type, name, value) \ |
| + const Instance& __##name##_instance__ = \ |
| + Instance::CheckedHandle(isolate, value); \ |
| + type& name = type::Handle(isolate); \ |
| + if (!__##name##_instance__.IsNull()) { \ |
| + if (!__##name##_instance__.Is##type()) { \ |
| + GrowableArray<const Object*> __args__; \ |
| + __args__.Add(&__##name##_instance__); \ |
| + Exceptions::ThrowByType(Exceptions::kArgument, __args__); \ |
| + } \ |
| + name ^= value; \ |
|
siva
2012/12/07 02:28:40
Shouldn't the assignment above be done irrespectiv
regis
2012/12/10 17:58:42
Done.
|
| + } |
| + |
| // Helper class for resolving and handling native functions. |
| class NativeEntry : public AllStatic { |
| public: |