Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(341)

Unified Diff: src/handles.h

Issue 164498: Fix strict aliasing crash on x64. (Closed)
Patch Set: remove todo. Created 11 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/compilation-cache.cc ('k') | src/handles-inl.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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:
« no previous file with comments | « src/compilation-cache.cc ('k') | src/handles-inl.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698