Index: runtime/vm/reusable_handles.h |
diff --git a/runtime/vm/reusable_handles.h b/runtime/vm/reusable_handles.h |
index db2752e0b4aa81fc4f4afb480f98c920e00f61cb..ef04f6ce803edfba9828cc8f846f0ad16bfb6da1 100644 |
--- a/runtime/vm/reusable_handles.h |
+++ b/runtime/vm/reusable_handles.h |
@@ -11,19 +11,24 @@ |
namespace dart { |
-// The class ReusableHandleScope is used in regions of the |
-// virtual machine where isolate specific reusable handles are used. |
-// This class asserts that we do not add code that will result in recursive |
-// uses of reusable handles. |
-// It is used as follows: |
+// Classes registered in REUSABLE_HANDLE_LIST have an isolate specific reusable |
+// handle. A guard class (Reusable*ClassName*HandleScope) should be used in |
+// regions of the virtual machine where the isolate specific reusable handle |
+// of that type is used. The class asserts that we do not add code that will |
+// result in recursive uses of the class's reusable handle. |
+// |
+// Below is an example of a reusable array handle via the |
+// REUSABLE_*CLASSNAME*_HANDLESCOPE macro: |
+// |
// { |
-// ReusableHandleScope reused_handles(isolate); |
+// REUSABLE_ARRAY_HANDLESCOPE(isolate); |
// .... |
-// ..... |
-// code that uses isolate specific reusable handles. |
-// Array& funcs = reused_handles.ArrayHandle(); |
+// .... |
+// Array& funcs = reused_array_handle.Handle(); |
+// code that uses funcs |
// .... |
// } |
+// |
#if defined(DEBUG) |
#define REUSABLE_SCOPE(name) \ |
@@ -76,28 +81,31 @@ namespace dart { |
REUSABLE_HANDLE_LIST(REUSABLE_SCOPE) |
#undef REUSABLE_SCOPE |
-#define REUSABLE_OBJECT_HANDLESCOPE(isolate) \ |
- ReusableObjectHandleScope reused_object_handle(isolate); |
-#define REUSABLE_ERROR_HANDLESCOPE(isolate) \ |
- ReusableErrorHandleScope reused_error_handle(isolate); |
+#define REUSABLE_ABSTRACT_TYPE_HANDLESCOPE(isolate) \ |
+ ReusableAbstractTypeHandleScope reused_abstract_type(isolate); |
#define REUSABLE_ARRAY_HANDLESCOPE(isolate) \ |
ReusableArrayHandleScope reused_array_handle(isolate); |
-#define REUSABLE_STRING_HANDLESCOPE(isolate) \ |
- ReusableStringHandleScope reused_string_handle(isolate); |
-#define REUSABLE_INSTANCE_HANDLESCOPE(isolate) \ |
- ReusableInstanceHandleScope reused_instance_handle(isolate); |
-#define REUSABLE_FUNCTION_HANDLESCOPE(isolate) \ |
- ReusableFunctionHandleScope reused_function_handle(isolate); |
-#define REUSABLE_FIELD_HANDLESCOPE(isolate) \ |
- ReusableFieldHandleScope reused_field_handle(isolate); |
#define REUSABLE_CLASS_HANDLESCOPE(isolate) \ |
ReusableClassHandleScope reused_class_handle(isolate); |
-#define REUSABLE_ABSTRACT_TYPE_HANDLESCOPE(isolate) \ |
- ReusableAbstractTypeHandleScope reused_abstract_type(isolate); |
-#define REUSABLE_TYPE_PARAMETER_HANDLESCOPE(isolate) \ |
- ReusableTypeParameterHandleScope reused_type_parameter(isolate); |
+#define REUSABLE_CODE_HANDLESCOPE(isolate) \ |
+ ReusableCodeHandleScope reused_code_handle(isolate); |
+#define REUSABLE_ERROR_HANDLESCOPE(isolate) \ |
+ ReusableErrorHandleScope reused_error_handle(isolate); |
+#define REUSABLE_FIELD_HANDLESCOPE(isolate) \ |
+ ReusableFieldHandleScope reused_field_handle(isolate); |
+#define REUSABLE_FUNCTION_HANDLESCOPE(isolate) \ |
+ ReusableFunctionHandleScope reused_function_handle(isolate); |
+#define REUSABLE_INSTANCE_HANDLESCOPE(isolate) \ |
+ ReusableInstanceHandleScope reused_instance_handle(isolate); |
+#define REUSABLE_OBJECT_HANDLESCOPE(isolate) \ |
+ ReusableObjectHandleScope reused_object_handle(isolate); |
+#define REUSABLE_STRING_HANDLESCOPE(isolate) \ |
+ ReusableStringHandleScope reused_string_handle(isolate); |
#define REUSABLE_TYPE_ARGUMENTS_HANDLESCOPE(isolate) \ |
ReusableTypeArgumentsHandleScope reused_type_arguments_handle(isolate); |
+#define REUSABLE_TYPE_PARAMETER_HANDLESCOPE(isolate) \ |
+ ReusableTypeParameterHandleScope reused_type_parameter(isolate); |
+ |
} // namespace dart |