src/cpu/x86/vm/templateInterpreter_x86_32.cpp

changeset 8368
32b682649973
parent 6723
0bf37f737702
child 8604
04d83ba48607
child 8877
f04097176542
     1.1 --- a/src/cpu/x86/vm/templateInterpreter_x86_32.cpp	Mon Jan 11 13:41:45 2016 -0800
     1.2 +++ b/src/cpu/x86/vm/templateInterpreter_x86_32.cpp	Fri Jan 15 22:33:15 2016 +0000
     1.3 @@ -1,5 +1,5 @@
     1.4  /*
     1.5 - * Copyright (c) 1997, 2013, Oracle and/or its affiliates. All rights reserved.
     1.6 + * Copyright (c) 1997, 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 @@ -713,7 +713,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 @@ -728,6 +728,12 @@
    1.20      __ jmp(xreturn_path);
    1.21  
    1.22      __ bind(notByte);
    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 +    __ bind(notBool);
    1.29      __ cmpl(rdx, stos);
    1.30      __ jcc(Assembler::notEqual, notShort);
    1.31      __ load_signed_short(rax, field_address);

mercurial