hotspot/src/cpu/x86/vm/c1_LIRAssembler_x86.cpp
changeset 18507 61bfc8995bb3
parent 16611 6807a703dd6b
child 19710 2f8ca425504e
equal deleted inserted replaced
18506:af8765fafc07 18507:61bfc8995bb3
     1 /*
     1 /*
     2  * Copyright (c) 2000, 2012, Oracle and/or its affiliates. All rights reserved.
     2  * Copyright (c) 2000, 2013, 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.
  3510   __ call_VM_leaf(entry, 0);
  3510   __ call_VM_leaf(entry, 0);
  3511 
  3511 
  3512   __ bind(*stub->continuation());
  3512   __ bind(*stub->continuation());
  3513 }
  3513 }
  3514 
  3514 
       
  3515 void LIR_Assembler::emit_updatecrc32(LIR_OpUpdateCRC32* op) {
       
  3516   assert(op->crc()->is_single_cpu(),  "crc must be register");
       
  3517   assert(op->val()->is_single_cpu(),  "byte value must be register");
       
  3518   assert(op->result_opr()->is_single_cpu(), "result must be register");
       
  3519   Register crc = op->crc()->as_register();
       
  3520   Register val = op->val()->as_register();
       
  3521   Register res = op->result_opr()->as_register();
       
  3522 
       
  3523   assert_different_registers(val, crc, res);
       
  3524 
       
  3525   __ lea(res, ExternalAddress(StubRoutines::crc_table_addr()));
       
  3526   __ notl(crc); // ~crc
       
  3527   __ update_byte_crc32(crc, val, res);
       
  3528   __ notl(crc); // ~crc
       
  3529   __ mov(res, crc);
       
  3530 }
  3515 
  3531 
  3516 void LIR_Assembler::emit_lock(LIR_OpLock* op) {
  3532 void LIR_Assembler::emit_lock(LIR_OpLock* op) {
  3517   Register obj = op->obj_opr()->as_register();  // may not be an oop
  3533   Register obj = op->obj_opr()->as_register();  // may not be an oop
  3518   Register hdr = op->hdr_opr()->as_register();
  3534   Register hdr = op->hdr_opr()->as_register();
  3519   Register lock = op->lock_opr()->as_register();
  3535   Register lock = op->lock_opr()->as_register();