Revert to alignment on max(architecture size)
authorMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Wed, 10 Feb 2010 20:21:44 +0000 (15:21 -0500)
committerMathieu Desnoyers <mathieu.desnoyers@polymtl.ca>
Wed, 10 Feb 2010 20:23:18 +0000 (15:23 -0500)
Finally, noticed that gcc aligns uint64_t on 32-bit for 32-bit architectures.
Hopefully we are not facing a case where different compilers behave differently.

Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>
ltt/ltt-private.h

index 5f7919726b6c51300c5f7217ab87c6366bb22045..e432dc5b04010394d9372a0183c5ccbd21cf1572 100644 (file)
@@ -196,23 +196,24 @@ struct LttSystemDescription {
 
 /*
  * Calculate the offset needed to align the type.
- * If alignment is 0, alignment is disactivated.
+ * If alignment is 0, alignment is deactivated.
  * else, the function returns the offset needed to
  * align align_drift on the alignment value.
  *
- * Do not limit alignment on architecture size anymore,
- * because uint64_t types are aligned on 64-bit even
- * on 32-bit archs.
+ * align align_drift on the alignment value (should be
+ * the size of the architecture).
  */
 static inline unsigned int ltt_align(size_t align_drift,
           size_t size_of_type,
           size_t alignment)
 {
+  size_t align_offset = min(alignment, size_of_type);
+  
   if(!alignment)
     return 0;
   
   g_assert(size_of_type != 0);
-  return ((size_of_type - align_drift) & (size_of_type - 1));
+  return ((align_offset - align_drift) & (align_offset-1));
 }
 
 
This page took 0.023744 seconds and 4 git commands to generate.