Chromium Code Reviews| Index: runtime/lib/error.cc |
| =================================================================== |
| --- runtime/lib/error.cc (revision 1334) |
| +++ runtime/lib/error.cc (working copy) |
| @@ -12,6 +12,7 @@ |
| namespace dart { |
| +DEFINE_FLAG(bool, trace_type_checks, false, "Trace runtime type checks."); |
| DECLARE_FLAG(bool, print_stack_trace_at_throw); |
| @@ -213,6 +214,24 @@ |
| ThrowTypeError(location, src_type_name, dst_type_name, dst_name); |
| UNREACHABLE(); |
| } |
| + |
| + if (FLAG_trace_type_checks) { |
|
regis
2011/11/09 01:47:53
Are you planning on leaving this flag in or was it
srdjan
2011/11/09 19:36:30
I plan to keep it in, removed "if (known_type)".
|
| + Class& cls = Class::Handle(src_instance.clazz()); |
| + // TODO(regis): Remove once all classes finalized. |
| + if (cls.is_finalized()) { |
| + bool known_type = |
| + (cls.type_arguments_instance_field_offset() |
| + == Class::kNoTypeArguments) || |
|
regis
2011/11/09 01:47:53
cls.HasTypeArguments() ?
And why only print raw t
srdjan
2011/11/09 19:36:30
Removed.
|
| + TypeArguments::Handle(src_instance.GetTypeArguments()). |
| + IsTypeArray(); |
| + if (known_type) { |
| + OS::Print("TypeCheck <%s> vs <%s>\n", |
|
regis
2011/11/09 01:47:53
The chosen print syntax with "<" and ">" is unfort
srdjan
2011/11/09 19:36:30
:-). Using quotes instead.
|
| + String::Handle(Type::Handle(src_instance.GetType()).Name()). |
| + ToCString(), |
| + String::Handle(dst_type.Name()).ToCString()); |
| + } |
| + } |
| + } |
| arguments.SetReturn(src_instance); |
| } |