summaryrefslogtreecommitdiffstats
path: root/ppapi/c/pp_var.h
diff options
context:
space:
mode:
Diffstat (limited to 'ppapi/c/pp_var.h')
-rw-r--r--ppapi/c/pp_var.h19
1 files changed, 13 insertions, 6 deletions
diff --git a/ppapi/c/pp_var.h b/ppapi/c/pp_var.h
index fad5db4..1695293 100644
--- a/ppapi/c/pp_var.h
+++ b/ppapi/c/pp_var.h
@@ -26,7 +26,6 @@ typedef enum {
PP_VARTYPE_STRING,
PP_VARTYPE_OBJECT
} PP_VarType;
-
PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_VarType, 4);
/**
@@ -43,6 +42,13 @@ PP_COMPILE_ASSERT_SIZE_IN_BYTES(PP_VarType, 4);
*/
struct PP_Var {
PP_VarType type;
+
+ /** Ensures @a value is aligned on an 8-byte boundary relative to the
+ * start of the struct. Some compilers align doubles on 8-byte boundaries
+ * for 32-bit x86, and some align on 4-byte boundaries.
+ */
+ int32_t padding;
+
union {
PP_Bool as_bool;
int32_t as_int;
@@ -56,31 +62,32 @@ struct PP_Var {
int64_t as_id;
} value;
};
+PP_COMPILE_ASSERT_STRUCT_SIZE_IN_BYTES(PP_Var, 16);
PP_INLINE struct PP_Var PP_MakeUndefined() {
- struct PP_Var result = { PP_VARTYPE_UNDEFINED, {PP_FALSE} };
+ struct PP_Var result = { PP_VARTYPE_UNDEFINED, 0, {PP_FALSE} };
return result;
}
PP_INLINE struct PP_Var PP_MakeNull() {
- struct PP_Var result = { PP_VARTYPE_NULL, {PP_FALSE} };
+ struct PP_Var result = { PP_VARTYPE_NULL, 0, {PP_FALSE} };
return result;
}
PP_INLINE struct PP_Var PP_MakeBool(PP_Bool value) {
- struct PP_Var result = { PP_VARTYPE_BOOL, {PP_FALSE} };
+ struct PP_Var result = { PP_VARTYPE_BOOL, 0, {PP_FALSE} };
result.value.as_bool = value;
return result;
}
PP_INLINE struct PP_Var PP_MakeInt32(int32_t value) {
- struct PP_Var result = { PP_VARTYPE_INT32, {PP_FALSE} };
+ struct PP_Var result = { PP_VARTYPE_INT32, 0, {PP_FALSE} };
result.value.as_int = value;
return result;
}
PP_INLINE struct PP_Var PP_MakeDouble(double value) {
- struct PP_Var result = { PP_VARTYPE_DOUBLE, {PP_FALSE} };
+ struct PP_Var result = { PP_VARTYPE_DOUBLE, 0, {PP_FALSE} };
result.value.as_double = value;
return result;
}