diff options
| -rw-r--r-- | runtime/arch/mips64/quick_entrypoints_mips64.S | 2 | ||||
| -rw-r--r-- | test/529-checker-unresolved/src/Main.java | 10 |
2 files changed, 12 insertions, 0 deletions
diff --git a/runtime/arch/mips64/quick_entrypoints_mips64.S b/runtime/arch/mips64/quick_entrypoints_mips64.S index 0bf2a35bd4..26717ad798 100644 --- a/runtime/arch/mips64/quick_entrypoints_mips64.S +++ b/runtime/arch/mips64/quick_entrypoints_mips64.S @@ -1487,6 +1487,7 @@ ENTRY art_quick_get32_static ld $a1, FRAME_SIZE_SAVE_REFS_ONLY($sp) # pass referrer's Method* jal artGet32StaticFromCode # (uint32_t field_idx, const Method* referrer, Thread*) move $a2, rSELF # pass Thread::Current + sll $v0, $v0, 0 # sign-extend result RETURN_IF_NO_EXCEPTION END art_quick_get32_static @@ -1571,6 +1572,7 @@ ENTRY art_quick_get32_instance ld $a2, FRAME_SIZE_SAVE_REFS_ONLY($sp) # pass referrer's Method* jal artGet32InstanceFromCode # (field_idx, Object*, referrer, Thread*) move $a3, rSELF # pass Thread::Current + sll $v0, $v0, 0 # sign-extend result RETURN_IF_NO_EXCEPTION END art_quick_get32_instance diff --git a/test/529-checker-unresolved/src/Main.java b/test/529-checker-unresolved/src/Main.java index 7b5cbc1504..5fd51e1dca 100644 --- a/test/529-checker-unresolved/src/Main.java +++ b/test/529-checker-unresolved/src/Main.java @@ -122,6 +122,16 @@ public class Main extends UnresolvedSuperClass { expectEquals(123456789123456789f, c.instanceFloat); expectEquals(123456789123456789d, c.instanceDouble); expectEquals(o, c.instanceObject); + + // Check "large" values. + + c.instanceByte = (byte)-1; + c.instanceChar = (char)32768; + c.instanceInt = -1; + + expectEquals((byte)-1, c.instanceByte); + expectEquals((char)32768, c.instanceChar); + expectEquals(-1, c.instanceInt); } /// CHECK-START: void Main.callUnresolvedNull(UnresolvedClass) register (before) |