src/cpu/x86/vm/cppInterpreter_x86.cpp

changeset 8368
32b682649973
parent 6723
0bf37f737702
child 8604
04d83ba48607
     1.1 --- a/src/cpu/x86/vm/cppInterpreter_x86.cpp	Mon Jan 11 13:41:45 2016 -0800
     1.2 +++ b/src/cpu/x86/vm/cppInterpreter_x86.cpp	Fri Jan 15 22:33:15 2016 +0000
     1.3 @@ -1,5 +1,5 @@
     1.4  /*
     1.5 - * Copyright (c) 2007, 2013, Oracle and/or its affiliates. All rights reserved.
     1.6 + * Copyright (c) 2007, 2016, Oracle and/or its affiliates. All rights reserved.
     1.7   * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
     1.8   *
     1.9   * This code is free software; you can redistribute it and/or modify it
    1.10 @@ -870,7 +870,7 @@
    1.11                      rdx,
    1.12                      Address::times_ptr, ConstantPoolCache::base_offset() + ConstantPoolCacheEntry::flags_offset()));
    1.13  
    1.14 -    Label notByte, notShort, notChar;
    1.15 +    Label notByte, notBool, notShort, notChar;
    1.16      const Address field_address (rax, rcx, Address::times_1);
    1.17  
    1.18      // Need to differentiate between igetfield, agetfield, bgetfield etc.
    1.19 @@ -889,6 +889,11 @@
    1.20  
    1.21      __ bind(notObj);
    1.22  #endif // _LP64
    1.23 +    __ cmpl(rdx, ztos);
    1.24 +    __ jcc(Assembler::notEqual, notBool);
    1.25 +    __ load_signed_byte(rax, field_address);
    1.26 +    __ jmp(xreturn_path);
    1.27 +
    1.28      __ cmpl(rdx, btos);
    1.29      __ jcc(Assembler::notEqual, notByte);
    1.30      __ load_signed_byte(rax, field_address);

mercurial