tree 3b87f8b93c427c05e7690ea8d14577ce3e9eb502
parent 34937e2ed46fa9f56d99e9f32e0bfad050e5e798
author Chris Larsen <chris.larsen@imgtec.com> 1447882268 -0800
committer Chris Larsen <chris.larsen@imgtec.com> 1455149576 -0800

MIPS32: peek*/poke*, and String.charAt intrinsics.

- byte libcore.io.Memory.peekByte(long address)
- short libcore.io.Memory.peekShort(long address)
- int libcore.io.Memory.peekInt(long address)
- long libcore.io.Memory.peekLong(long address)
- void libcore.io.Memory.pokeByte(long address, byte value)
- void libcore.io.Memory.pokeShort(long address, short value)
- void libcore.io.Memory.pokeInt(long address, int value)
- void libcore.io.Memory.pokeLong(long address, long value)
- char java.lang.String.charAt(int index)

Change-Id: I5ff30b61d87313d00f0fd3f0ee09f1c454f9c9fa
