Combine InstanceField and StaticField and Field.

This gives us full consistency with the java.lang.reflect.Field type.

Change-Id: Ib17c7fca4fe2c912fa9f5e37da2be0aebb8def9c
diff --git a/src/object.cc b/src/object.cc
index 409ff61..2297eca 100644
--- a/src/object.cc
+++ b/src/object.cc
@@ -153,105 +153,125 @@
   return IsInSamePackage(klass1->descriptor_, klass2->descriptor_);
 }
 
-bool StaticField::GetBoolean() {
+bool Field::GetBoolean() {
   CHECK_EQ(GetType(), 'Z');
-  return declaring_class_->static_32bit_primitives_->Get(java_slot_);
+  CHECK(IsStatic());
+  return declaring_class_->static_32bit_primitives_->Get(offset_);
 }
 
-void StaticField::SetBoolean(bool z) {
+void Field::SetBoolean(bool z) {
   CHECK_EQ(GetType(), 'Z');
-  declaring_class_->static_32bit_primitives_->Set(java_slot_, z);
+  CHECK(IsStatic());
+  declaring_class_->static_32bit_primitives_->Set(offset_, z);
 }
 
-int8_t StaticField::GetByte() {
+int8_t Field::GetByte() {
   CHECK_EQ(GetType(), 'B');
-  return declaring_class_->static_32bit_primitives_->Get(java_slot_);
+  CHECK(IsStatic());
+  return declaring_class_->static_32bit_primitives_->Get(offset_);
 }
 
-void StaticField::SetByte(int8_t b) {
+void Field::SetByte(int8_t b) {
   CHECK_EQ(GetType(), 'B');
-  declaring_class_->static_32bit_primitives_->Set(java_slot_, b);
+  CHECK(IsStatic());
+  declaring_class_->static_32bit_primitives_->Set(offset_, b);
 }
 
-uint16_t StaticField::GetChar() {
+uint16_t Field::GetChar() {
   CHECK_EQ(GetType(), 'C');
-  return declaring_class_->static_32bit_primitives_->Get(java_slot_);
+  CHECK(IsStatic());
+  return declaring_class_->static_32bit_primitives_->Get(offset_);
 }
 
-void StaticField::SetChar(uint16_t c) {
+void Field::SetChar(uint16_t c) {
   CHECK_EQ(GetType(), 'C');
-  declaring_class_->static_32bit_primitives_->Set(java_slot_, c);
+  CHECK(IsStatic());
+  declaring_class_->static_32bit_primitives_->Set(offset_, c);
 }
 
-uint16_t StaticField::GetShort() {
+uint16_t Field::GetShort() {
   CHECK_EQ(GetType(), 'S');
-  return declaring_class_->static_32bit_primitives_->Get(java_slot_);
+  CHECK(IsStatic());
+  return declaring_class_->static_32bit_primitives_->Get(offset_);
 }
 
-void StaticField::SetShort(uint16_t s) {
+void Field::SetShort(uint16_t s) {
   CHECK_EQ(GetType(), 'S');
-  declaring_class_->static_32bit_primitives_->Set(java_slot_, s);
+  CHECK(IsStatic());
+  declaring_class_->static_32bit_primitives_->Set(offset_, s);
 }
 
-int32_t StaticField::GetInt() {
+int32_t Field::GetInt() {
   CHECK_EQ(GetType(), 'I');
-  return declaring_class_->static_32bit_primitives_->Get(java_slot_);
+  CHECK(IsStatic());
+  return declaring_class_->static_32bit_primitives_->Get(offset_);
 }
 
-void StaticField::SetInt(int32_t i) {
+void Field::SetInt(int32_t i) {
   CHECK_EQ(GetType(), 'I');
-  declaring_class_->static_32bit_primitives_->Set(java_slot_, i);
+  CHECK(IsStatic());
+  declaring_class_->static_32bit_primitives_->Set(offset_, i);
 }
 
-int64_t StaticField::GetLong() {
+int64_t Field::GetLong() {
   CHECK_EQ(GetType(), 'J');
-  return declaring_class_->static_64bit_primitives_->Get(java_slot_);
+  CHECK(IsStatic());
+  return declaring_class_->static_64bit_primitives_->Get(offset_);
 }
 
-void StaticField::SetLong(int64_t j) {
+void Field::SetLong(int64_t j) {
   CHECK_EQ(GetType(), 'J');
-  declaring_class_->static_64bit_primitives_->Set(java_slot_, j);
+  CHECK(IsStatic());
+  declaring_class_->static_64bit_primitives_->Set(offset_, j);
 }
 
-float StaticField::GetFloat() {
+float Field::GetFloat() {
   CHECK_EQ(GetType(), 'F');
+  CHECK(IsStatic());
   JValue float_bits;
-  float_bits.i = declaring_class_->static_32bit_primitives_->Get(java_slot_);
+  float_bits.i = declaring_class_->static_32bit_primitives_->Get(offset_);
   return float_bits.f;
 }
 
-void StaticField::SetFloat(float f) {
+void Field::SetFloat(float f) {
   CHECK_EQ(GetType(), 'F');
+  CHECK(IsStatic());
   JValue float_bits;
   float_bits.f = f;
-  declaring_class_->static_32bit_primitives_->Set(java_slot_, float_bits.i);
+  declaring_class_->static_32bit_primitives_->Set(offset_, float_bits.i);
 }
 
-double StaticField::GetDouble() {
+double Field::GetDouble() {
   CHECK_EQ(GetType(), 'D');
+  CHECK(IsStatic());
   JValue double_bits;
-  double_bits.j = declaring_class_->static_64bit_primitives_->Get(java_slot_);
+  double_bits.j = declaring_class_->static_64bit_primitives_->Get(offset_);
   return double_bits.d;
 }
 
-void StaticField::SetDouble(double d) {
+void Field::SetDouble(double d) {
   CHECK_EQ(GetType(), 'D');
+  CHECK(IsStatic());
   JValue double_bits;
   double_bits.d = d;
-  declaring_class_->static_64bit_primitives_->Set(java_slot_, double_bits.j);
+  declaring_class_->static_64bit_primitives_->Set(offset_, double_bits.j);
 }
 
-Object* StaticField::GetObject() {
-  return declaring_class_->static_references_->Get(java_slot_);
-}
-
-const Object* StaticField::GetObject() const {
-  return declaring_class_->static_references_->Get(java_slot_);
-}
-
-void StaticField::SetObject(Object* l) {
+Object* Field::GetObject() {
   CHECK(GetType() == 'L' || GetType() == '[');
-  declaring_class_->static_references_->Set(java_slot_, l);  // TODO: write barrier
+  CHECK(IsStatic());
+  return declaring_class_->static_references_->Get(offset_);
+}
+
+const Object* Field::GetObject() const {
+  CHECK(GetType() == 'L' || GetType() == '[');
+  CHECK(IsStatic());
+  return declaring_class_->static_references_->Get(offset_);
+}
+
+void Field::SetObject(Object* l) {
+  CHECK(GetType() == 'L' || GetType() == '[');
+  declaring_class_->static_references_->Set(offset_, l);  // TODO: write barrier
 }
 
 uint32_t Method::NumArgRegisters() {