Chromium Code Reviews| Index: runtime/vm/object.cc |
| =================================================================== |
| --- runtime/vm/object.cc (revision 478) |
| +++ runtime/vm/object.cc (working copy) |
| @@ -15,6 +15,7 @@ |
| #include "vm/compiler_stats.h" |
| #include "vm/class_finalizer.h" |
| #include "vm/dart.h" |
| +#include "vm/dart_api_impl.h" |
|
Ivan Posva
2011/10/18 20:44:28
Is this still needed?
turnidge
2011/10/18 22:03:12
Removed.
|
| #include "vm/debuginfo.h" |
| #include "vm/growable_array.h" |
| #include "vm/heap.h" |
| @@ -74,6 +75,7 @@ |
| reinterpret_cast<RawClass*>(RAW_NULL); |
| RawClass* Object::context_class_ = reinterpret_cast<RawClass*>(RAW_NULL); |
| RawClass* Object::context_scope_class_ = reinterpret_cast<RawClass*>(RAW_NULL); |
| +RawClass* Object::api_failure_class_ = reinterpret_cast<RawClass*>(RAW_NULL); |
| #undef RAW_NULL |
| int Object::GetSingletonClassIndex(const RawClass* raw_class) { |
| @@ -124,6 +126,8 @@ |
| return kContextClass; |
| } else if (raw_class == context_scope_class()) { |
| return kContextScopeClass; |
| + } else if (raw_class == api_failure_class()) { |
| + return kApiFailureClass; |
| } |
| return kInvalidIndex; |
| } |
| @@ -155,6 +159,7 @@ |
| case kExceptionHandlersClass: return exception_handlers_class(); |
| case kContextClass: return context_class(); |
| case kContextScopeClass: return context_scope_class(); |
| + case kApiFailureClass: return api_failure_class(); |
| default: break; |
| } |
| UNREACHABLE(); |
| @@ -187,6 +192,7 @@ |
| case kExceptionHandlersClass: return "ExceptionHandlers"; |
| case kContextClass: return "Context"; |
| case kContextScopeClass: return "ContextScope"; |
| + case kApiFailureClass: return "ApiFailure"; |
| default: break; |
| } |
| UNREACHABLE(); |
| @@ -317,6 +323,9 @@ |
| cls = Class::New<ContextScope>(); |
| context_scope_class_ = cls.raw(); |
| + cls = Class::New<ApiFailure>(); |
| + api_failure_class_ = cls.raw(); |
| + |
| ASSERT(class_class() != null_); |
| } |
| @@ -4324,6 +4333,31 @@ |
| } |
| +RawApiFailure* ApiFailure::New(const String& message, |
| + Heap::Space space) { |
|
Ivan Posva
2011/10/18 20:44:28
Is a new line needed here?
turnidge
2011/10/18 22:03:12
Removed.
|
| + const Class& cls = Class::Handle(Object::api_failure_class()); |
| + ApiFailure& result = ApiFailure::Handle(); |
| + { |
| + RawObject* raw = Object::Allocate(cls, |
| + ApiFailure::InstanceSize(), |
| + space); |
| + NoGCScope no_gc; |
| + result ^= raw; |
| + } |
| + result.set_message(message); |
| + return result.raw(); |
| +} |
| + |
| + |
| +void ApiFailure::set_message(const String& message) const { |
| + StorePointer(&raw_ptr()->message_, message.raw()); |
| +} |
| + |
| + |
| +const char* ApiFailure::ToCString() const { |
| + return "ApiFailure"; |
| +} |
| + |
|
Ivan Posva
2011/10/18 20:44:28
new line
turnidge
2011/10/18 22:03:12
Done.
|
| bool Instance::Equals(const Instance& other) const { |
| if (this->raw() == other.raw()) { |
| return true; // "===". |