diff src/cpu/x86/vm/templateInterpreter_x86_32.cpp @ 23660:b5f3a471e646

Merge.
author Doug Simon <doug.simon@oracle.com>
date Wed, 01 Jun 2016 00:11:44 +0200
parents 5214669b01f2 32b682649973
children ca5c97226d1c
line wrap: on
line diff
--- a/src/cpu/x86/vm/templateInterpreter_x86_32.cpp	Tue May 31 08:05:44 2016 +0200
+++ b/src/cpu/x86/vm/templateInterpreter_x86_32.cpp	Wed Jun 01 00:11:44 2016 +0200
@@ -1,5 +1,5 @@
 /*
- * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2016, Oracle and/or its affiliates. All rights reserved.
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
  *
  * This code is free software; you can redistribute it and/or modify it
@@ -713,7 +713,7 @@
                     rdx,
                     Address::times_ptr, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::flags_offset()));
 
-    Label notByte, notShort, notChar;
+    Label notByte, notBool, notShort, notChar;
     const Address field_address (rax, rcx, Address::times_1);
 
     // Need to differentiate between igetfield, agetfield, bgetfield etc.
@@ -728,6 +728,12 @@
     __ jmp(xreturn_path);
 
     __ bind(notByte);
+    __ cmpl(rdx, ztos);
+    __ jcc(Assembler::notEqual, notBool);
+    __ load_signed_byte(rax, field_address);
+    __ jmp(xreturn_path);
+
+    __ bind(notBool);
     __ cmpl(rdx, stos);
     __ jcc(Assembler::notEqual, notShort);
     __ load_signed_short(rax, field_address);