Stop cheating in reflective field access.
The java.lang.reflect.Field get/set calls have been "cheating" by
reading and writing 32-bit or 64-bit values without regard to the
underlying field type. This worked fine until recently, when we
developed three special cases:
(1) writing to a reference field (must notify the GC)
(2) reading/writing a volatile field (must emit barrier on SMP,
and 64-bit accesses must be atomic on all platforms)
(3) writing to a final field (must emit barrier on SMP)
This replaces the old "get a pointer and do stuff" approach with a
bunch of switch statements that call the ObjectInlines functions.
Bug 2992610
Change-Id: Ib30f043d325363743112e9b1bb170d9d232bca6b
1 file changed