Add alignment attribute to packed.

Make packed objects 4 byte aligned or else GCC becomes paranoid and
assumes only byte alignment on whole objects.
Change CHECK in GetCalleeSaveMethod to DCHECK to encourage inlining.

Change-Id: I79f1a13752492413c919b36f4e207e637647834f
diff --git a/src/thread.h b/src/thread.h
index 112db2d..b56bcf1 100644
--- a/src/thread.h
+++ b/src/thread.h
@@ -103,7 +103,7 @@
   kEnterInterpreter = 8,  // Instruct managed code it should enter the interpreter.
 };
 
-class PACKED Thread {
+class PACKED(4) Thread {
  public:
   // Space to throw a StackOverflowError in.
   static const size_t kStackOverflowReservedBytes = 10 * KB;
@@ -657,7 +657,7 @@
   // 32 bits of atomically changed state and flags. Keeping as 32 bits allows and atomic CAS to
   // change from being Suspended to Runnable without a suspend request occurring.
   union StateAndFlags {
-    struct PACKED {
+    struct PACKED(4) {
       // Bitfield of flag values. Must be changed atomically so that flag values aren't lost. See
       // ThreadFlags for bit field meanings.
       volatile uint16_t flags;