Mercurial > hg > graal-jvmci-8
comparison src/cpu/sparc/vm/c1_LIRGenerator_sparc.cpp @ 23660:b5f3a471e646
Merge.
author | Doug Simon <doug.simon@oracle.com> |
---|---|
date | Wed, 01 Jun 2016 00:11:44 +0200 |
parents | 32b682649973 |
children | 0b85ccd62409 |
comparison
equal
deleted
inserted
replaced
23411:d7cf78885a3a | 23660:b5f3a471e646 |
---|---|
1 /* | 1 /* |
2 * Copyright (c) 2005, 2013, Oracle and/or its affiliates. All rights reserved. | 2 * Copyright (c) 2005, 2016, Oracle and/or its affiliates. All rights reserved. |
3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. | 3 * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. |
4 * | 4 * |
5 * This code is free software; you can redistribute it and/or modify it | 5 * This code is free software; you can redistribute it and/or modify it |
6 * under the terms of the GNU General Public License version 2 only, as | 6 * under the terms of the GNU General Public License version 2 only, as |
7 * published by the Free Software Foundation. | 7 * published by the Free Software Foundation. |
341 | 341 |
342 if (use_length && needs_range_check) { | 342 if (use_length && needs_range_check) { |
343 length.set_instruction(x->length()); | 343 length.set_instruction(x->length()); |
344 length.load_item(); | 344 length.load_item(); |
345 } | 345 } |
346 if (needs_store_check) { | 346 if (needs_store_check || x->check_boolean()) { |
347 value.load_item(); | 347 value.load_item(); |
348 } else { | 348 } else { |
349 value.load_for_store(x->elt_type()); | 349 value.load_for_store(x->elt_type()); |
350 } | 350 } |
351 | 351 |
386 if (obj_store) { | 386 if (obj_store) { |
387 // Needs GC write barriers. | 387 // Needs GC write barriers. |
388 pre_barrier(LIR_OprFact::address(array_addr), LIR_OprFact::illegalOpr /* pre_val */, | 388 pre_barrier(LIR_OprFact::address(array_addr), LIR_OprFact::illegalOpr /* pre_val */, |
389 true /* do_load */, false /* patch */, NULL); | 389 true /* do_load */, false /* patch */, NULL); |
390 } | 390 } |
391 __ move(value.result(), array_addr, null_check_info); | 391 LIR_Opr result = maybe_mask_boolean(x, array.result(), value.result(), null_check_info); |
392 __ move(result, array_addr, null_check_info); | |
392 if (obj_store) { | 393 if (obj_store) { |
393 // Precise card mark | 394 // Precise card mark |
394 post_barrier(LIR_OprFact::address(array_addr), value.result()); | 395 post_barrier(LIR_OprFact::address(array_addr), value.result()); |
395 } | 396 } |
396 } | 397 } |