Guard against changes to class_t layout.

Project: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/commit/e28b8112
Tree: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/tree/e28b8112
Diff: http://git-wip-us.apache.org/repos/asf/lucy-clownfish/diff/e28b8112

Branch: refs/heads/master
Commit: e28b81127cbc223ac74d5c1dd42c23f768757bc3
Parents: 7161001
Author: Marvin Humphrey <[email protected]>
Authored: Mon Sep 15 16:24:37 2014 -0700
Committer: Marvin Humphrey <[email protected]>
Committed: Mon Sep 15 19:08:45 2014 -0700

----------------------------------------------------------------------
 devel/benchmarks/method_dispatch/dso.c | 7 +++----
 devel/benchmarks/method_dispatch/dso.h | 4 +++-
 2 files changed, 6 insertions(+), 5 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/e28b8112/devel/benchmarks/method_dispatch/dso.c
----------------------------------------------------------------------
diff --git a/devel/benchmarks/method_dispatch/dso.c 
b/devel/benchmarks/method_dispatch/dso.c
index 28a30e2..d0f323f 100644
--- a/devel/benchmarks/method_dispatch/dso.c
+++ b/devel/benchmarks/method_dispatch/dso.c
@@ -29,9 +29,8 @@ method_t Obj_Hello_THUNK_PTR;
 
 void
 bootstrap() {
-    size_t method_idx = 3;
     size_t class_size = offsetof(class_t, vtable)
-                        + (method_idx + 1) * sizeof(method_t);
+                        + (METHOD_IDX + 1) * sizeof(method_t);
 
     OBJ = (class_t*)calloc(1, class_size);
 
@@ -39,8 +38,8 @@ bootstrap() {
     OBJ->class_size = class_size;
 
     Obj_Hello_OFFSET = offsetof(class_t, vtable)
-                       + method_idx * sizeof(method_t);
-    OBJ->vtable[method_idx] = Obj_hello;
+                       + METHOD_IDX * sizeof(method_t);
+    OBJ->vtable[METHOD_IDX] = Obj_hello;
     Obj_Hello_THUNK_PTR = thunk3;
 }
 

http://git-wip-us.apache.org/repos/asf/lucy-clownfish/blob/e28b8112/devel/benchmarks/method_dispatch/dso.h
----------------------------------------------------------------------
diff --git a/devel/benchmarks/method_dispatch/dso.h 
b/devel/benchmarks/method_dispatch/dso.h
index fe1a07f..587a2c4 100644
--- a/devel/benchmarks/method_dispatch/dso.h
+++ b/devel/benchmarks/method_dispatch/dso.h
@@ -22,7 +22,9 @@
 extern class_t *OBJ;
 extern size_t Obj_Hello_OFFSET;
 extern method_t Obj_Hello_THUNK_PTR;
-#define Obj_Hello_FIXED_OFFSET (5 * sizeof(void*))
+#define METHOD_IDX 3
+#define Obj_Hello_FIXED_OFFSET \
+    (offsetof(class_t, vtable) + METHOD_IDX * sizeof(method_t))
 
 void bootstrap();
 

Reply via email to