| Index: src/handles.h
|
| diff --git a/src/handles.h b/src/handles.h
|
| index ba2694f509eec5800e60af14ae0f66cea4063d93..8c9cbebfd91f2af9987cb2890d073dda0c16c8f3 100644
|
| --- a/src/handles.h
|
| +++ b/src/handles.h
|
| @@ -82,7 +82,7 @@ class Handle {
|
| }
|
|
|
| static Handle<T> null() { return Handle<T>(); }
|
| - bool is_null() {return location_ == NULL; }
|
| + bool is_null() { return location_ == NULL; }
|
|
|
| // Closes the given scope, but lets this handle escape. See
|
| // implementation in api.h.
|
| @@ -119,15 +119,18 @@ class HandleScope {
|
| static int NumberOfHandles();
|
|
|
| // Creates a new handle with the given value.
|
| - static inline Object** CreateHandle(Object* value) {
|
| - void** result = current_.next;
|
| - if (result == current_.limit) result = Extend();
|
| + template <typename T>
|
| + static inline T** CreateHandle(T* value) {
|
| + void** cur = current_.next;
|
| + if (cur == current_.limit) cur = Extend();
|
| // Update the current next field, set the value in the created
|
| // handle, and return the result.
|
| - ASSERT(result < current_.limit);
|
| - current_.next = result + 1;
|
| - *reinterpret_cast<Object**>(result) = value;
|
| - return reinterpret_cast<Object**>(result);
|
| + ASSERT(cur < current_.limit);
|
| + current_.next = cur + 1;
|
| +
|
| + T** result = reinterpret_cast<T**>(cur);
|
| + *result = value;
|
| + return result;
|
| }
|
|
|
| private:
|
|
|