Assembler Class Reference

#include <assembler.hpp>

Inheritance diagram for Assembler:

Inheritance graph
[legend]
Collaboration diagram for Assembler:

Collaboration graph
[legend]
List of all members.

Public Types

 zero = 0x4
 notZero = 0x5
 equal = 0x4
 notEqual = 0x5
 less = 0xc
 lessEqual = 0xe
 greater = 0xf
 greaterEqual = 0xd
 below = 0x2
 belowEqual = 0x6
 above = 0x7
 aboveEqual = 0x3
 overflow = 0x0
 noOverflow = 0x1
 carrySet = 0x2
 carryClear = 0x3
 negative = 0x8
 positive = 0x9
 sizeOfCall = 5
enum  Condition {
  zero = 0x4, notZero = 0x5, equal = 0x4, notEqual = 0x5,
  less = 0xc, lessEqual = 0xe, greater = 0xf, greaterEqual = 0xd,
  below = 0x2, belowEqual = 0x6, above = 0x7, aboveEqual = 0x3,
  overflow = 0x0, noOverflow = 0x1, carrySet = 0x2, carryClear = 0x3,
  negative = 0x8, positive = 0x9
}
enum  Constants { sizeOfCall = 5 }

Public Member Functions

 Assembler (CodeBuffer *code)
void finalize ()
CodeBuffer * code () const
char * pc () const
int offset () const
void pushad ()
void popad ()
void pushl (int imm32)
void pushl (oop obj)
void pushl (Register src)
void pushl (Address src)
void popl (Register dst)
void popl (Address dst)
void movb (Register dst, Address src)
void movb (Address dst, int imm8)
void movb (Address dst, Register src)
void movw (Register dst, Address src)
void movw (Address dst, Register src)
void movl (Register dst, int imm32)
void movl (Register dst, oop obj)
void movl (Register dst, Register src)
void movl (Register dst, Address src)
void movl (Address dst, int imm32)
void movl (Address dst, oop obj)
void movl (Address dst, Register src)
void movsxb (Register dst, Address src)
void movsxb (Register dst, Register src)
void movsxw (Register dst, Address src)
void movsxw (Register dst, Register src)
void cmovccl (Condition cc, Register dst, int imm32)
void cmovccl (Condition cc, Register dst, oop obj)
void cmovccl (Condition cc, Register dst, Register src)
void cmovccl (Condition cc, Register dst, Address src)
void adcl (Register dst, int imm32)
void adcl (Register dst, Register src)
void addl (Address dst, int imm32)
void addl (Register dst, int imm32)
void addl (Register dst, Register src)
void andl (Register dst, int imm32)
void andl (Register dst, Register src)
void cmpl (Address dst, int imm32)
void cmpl (Address dst, oop obj)
void cmpl (Register dst, int imm32)
void cmpl (Register dst, oop obj)
void cmpl (Register dst, Register src)
void cmpl (Register dst, Address src)
void decb (Register dst)
void decl (Register dst)
void idivl (Register src)
void imull (Register dst, Register src)
void imull (Register dst, Register src, int value)
void incl (Register dst)
void incl (Address dst)
void leal (Register dst, Address src)
void mull (Register src)
void negl (Register dst)
void notl (Register dst)
void orl (Register dst, int imm32)
void orl (Register dst, Register src)
void orl (Register dst, Address src)
void rcll (Register dst, int imm8)
void sarl (Register dst, int imm8)
void sarl (Register dst)
void sbbl (Register dst, int imm32)
void sbbl (Register dst, Register src)
void shldl (Register dst, Register src)
void shll (Register dst, int imm8)
void shll (Register dst)
void shrdl (Register dst, Register src)
void shrl (Register dst, int imm8)
void shrl (Register dst)
void subl (Register dst, int imm32)
void subl (Register dst, Register src)
void testb (Register dst, int imm8)
void testl (Register dst, int imm32)
void testl (Register dst, Register src)
void xorl (Register dst, int imm32)
void xorl (Register dst, Register src)
void hlt ()
void int3 ()
void nop ()
void ret (int imm16)
void bind (Label &L)
void merge (Label &L, Label &with)
void call (Label &L)
void call (char *entry, relocInfo::relocType rtype)
void call (Register reg)
void call (Address adr)
void jmp (char *entry, relocInfo::relocType rtype)
void jmp (Register reg)
void jmp (Address adr)
void jmp (Label &L)
void jcc (Condition cc, char *dst, relocInfo::relocType rtype=relocInfo::runtime_call_type)
void jcc (Condition cc, Label &L)
void ic_info (Label &L, int flags)
void fld1 ()
void fldz ()
void fld_s (Address adr)
void fld_d (Address adr)
void fstp_s (Address adr)
void fstp_d (Address adr)
void fild_s (Address adr)
void fild_d (Address adr)
void fistp_s (Address adr)
void fistp_d (Address adr)
void fabs ()
void fchs ()
void fadd (int i)
void fsub (int i)
void fmul (int i)
void fdiv (int i)
void faddp (int i=1)
void fsubp (int i=1)
void fsubrp (int i=1)
void fmulp (int i=1)
void fdivp (int i=1)
void fprem ()
void fprem1 ()
void fxch (int i=1)
void fincstp ()
void ffree (int i=0)
void ftst ()
void fcompp ()
void fnstsw_ax ()
void fwait ()
void Load (Register base, int disp, Register dst)
void Store (Register src, Register base, int disp)

Protected Member Functions

char * addr_at (int pos)
int byte_at (int pos)
void byte_at_put (int pos, int x)
int long_at (int pos)
void long_at_put (int pos, int x)
bool is8bit (int x)
bool isByte (int x)
bool isShiftCount (int x)
void emit_byte (int x)
void emit_long (int x)
void emit_data (int data, relocInfo::relocType rtype)
void emit_arith_b (int op1, int op2, Register dst, int imm8)
void emit_arith (int op1, int op2, Register dst, int imm32)
void emit_arith (int op1, int op2, Register dst, oop obj)
void emit_arith (int op1, int op2, Register dst, Register src)
void emit_operand (Register reg, Register base, Register index, Address::ScaleFactor scale, int disp, relocInfo::relocType rtype)
void emit_operand (Register reg, Address adr)
void emit_farith (int b1, int b2, int i)
void print (Label &L)
void bind_to (Label &L, int pos)
void link_to (Label &L, Label &appendix)

Protected Attributes

CodeBuffer * _code
char * _code_begin
char * _code_limit
char * _code_pos
Label _unbound_label
int _binding_pos

Detailed Description

Definition at line 134 of file assembler.hpp.


Member Enumeration Documentation

enum Assembler::Condition

Enumerator:
zero 
notZero 
equal 
notEqual 
less 
lessEqual 
greater 
greaterEqual 
below 
belowEqual 
above 
aboveEqual 
overflow 
noOverflow 
carrySet 
carryClear 
negative 
positive 

Definition at line 177 of file assembler.hpp.

enum Assembler::Constants

Enumerator:
sizeOfCall 

Definition at line 198 of file assembler.hpp.


Constructor & Destructor Documentation

Assembler::Assembler ( CodeBuffer *  code  ) 

Definition at line 171 of file assembler.cpp.

References _code, _code_begin, _code_limit, and _code_pos.


Member Function Documentation

void Assembler::adcl ( Register  dst,
Register  src 
)

Definition at line 526 of file assembler.cpp.

References emit_arith().

Here is the call graph for this function:

void Assembler::adcl ( Register  dst,
int  imm32 
)

Definition at line 521 of file assembler.cpp.

References emit_arith().

Here is the call graph for this function:

void Assembler::addl ( Register  dst,
Register  src 
)

Definition at line 543 of file assembler.cpp.

References emit_arith().

Here is the call graph for this function:

void Assembler::addl ( Register  dst,
int  imm32 
)

Definition at line 538 of file assembler.cpp.

References emit_arith().

Here is the call graph for this function:

void Assembler::addl ( Address  dst,
int  imm32 
)

Definition at line 531 of file assembler.cpp.

References eax, emit_byte(), emit_long(), and emit_operand().

Referenced by InterpreterGenerator::advance_aligned(), MacroAssembler::call_C(), StubRoutines::generate_call_DLL(), StubRoutines::generate_continue_NLR(), StubRoutines::generate_verify_context_chain(), StubRoutines::generate_zombie_block_nmethod(), InterpreterGenerator::push_arg_n(), InterpreterGenerator::push_smi(), InterpreterGenerator::push_temp_n(), MacroAssembler::set_last_Delta_frame_after_call(), InterpreterGenerator::skip_words(), and InterpreterGenerator::store_temp_n().

Here is the call graph for this function:

char* Assembler::addr_at ( int  pos  )  [inline, protected]

Definition at line 145 of file assembler.hpp.

References _code_begin.

Referenced by byte_at(), byte_at_put(), long_at(), and long_at_put().

void Assembler::andl ( Register  dst,
Register  src 
)

Definition at line 553 of file assembler.cpp.

References emit_arith().

Here is the call graph for this function:

void Assembler::andl ( Register  dst,
int  imm32 
)

Definition at line 548 of file assembler.cpp.

References emit_arith().

Referenced by InterpreterGenerator::advance_aligned(), StubRoutines::generate_megamorphic_ic(), and InterpreterGenerator::skip_words().

Here is the call graph for this function:

void Assembler::bind ( Label L  ) 

Definition at line 945 of file assembler.cpp.

References _binding_pos, _code_pos, _unbound_label, Displacement::absolute_jump, assert, bind_to(), byte_at(), code(), disp_at, Label::is_unbound(), L, link_to(), offset(), outputStream::print_cr(), and std.

Referenced by MacroAssembler::call_C(), InterpreterGenerator::check_ebx(), InterpreterGenerator::check_oop(), StubRoutines::generate_call_DLL(), Floats::generate_cmp(), StubRoutines::generate_megamorphic_ic(), StubRoutines::generate_PIC_stub(), Floats::generate_tst(), StubRoutines::generate_verify_context_chain(), InterpreterGenerator::jump_ebx(), and InterpreterGenerator::jump_edi().

Here is the call graph for this function:

void Assembler::bind_to ( Label L,
int  pos 
) [protected]

Definition at line 878 of file assembler.cpp.

References Displacement::absolute_jump, assert, byte_at(), Displacement::call, code(), Displacement::conditional_jump, disp_at, Displacement::ic_info, IC_Info::info_offset, L, long_at_put(), IC_Info::number_of_flags, offset(), and ShouldNotReachHere.

Referenced by bind(), and finalize().

Here is the call graph for this function:

int Assembler::byte_at ( int  pos  )  [inline, protected]

Definition at line 147 of file assembler.hpp.

References addr_at().

Referenced by bind(), and bind_to().

Here is the call graph for this function:

void Assembler::byte_at_put ( int  pos,
int  x 
) [inline, protected]

Definition at line 148 of file assembler.hpp.

References addr_at().

Here is the call graph for this function:

void Assembler::call ( Address  adr  ) 

Definition at line 1015 of file assembler.cpp.

References edx, emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::call ( Register  reg  ) 

Definition at line 1009 of file assembler.cpp.

References emit_byte(), and Register::number().

Here is the call graph for this function:

void Assembler::call ( char *  entry,
relocInfo::relocType  rtype 
)

Definition at line 1003 of file assembler.cpp.

References _code_pos, emit_byte(), and emit_data().

Here is the call graph for this function:

void Assembler::call ( Label L  ) 

Definition at line 987 of file assembler.cpp.

References assert, Displacement::call, emit_byte(), emit_disp, emit_long(), L, and offset().

Referenced by MacroAssembler::call_C(), StubRoutines::generate_call_DLL(), StubRoutines::generate_call_inspector(), StubRoutines::generate_compile_block(), StubRoutines::generate_deoptimize_block(), StubRoutines::generate_ic_lookup(), StubRoutines::generate_lookup_DLL(), StubRoutines::generate_megamorphic_ic(), StubRoutines::generate_recompile_stub(), StubRoutines::generate_uncommon_trap(), StubRoutines::generate_verify_context_chain(), StubRoutines::generate_zombie_block_nmethod(), StubRoutines::generate_zombie_nmethod(), and MacroAssembler::inspect().

Here is the call graph for this function:

void Assembler::cmovccl ( Condition  cc,
Register  dst,
Address  src 
)

Definition at line 516 of file assembler.cpp.

References Unimplemented.

void Assembler::cmovccl ( Condition  cc,
Register  dst,
Register  src 
)

Definition at line 511 of file assembler.cpp.

References Unimplemented.

void Assembler::cmovccl ( Condition  cc,
Register  dst,
oop  obj 
)

Definition at line 506 of file assembler.cpp.

References Unimplemented.

void Assembler::cmovccl ( Condition  cc,
Register  dst,
int  imm32 
)

Definition at line 501 of file assembler.cpp.

References Unimplemented.

void Assembler::cmpl ( Register  dst,
Address  src 
)

Definition at line 587 of file assembler.cpp.

References emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::cmpl ( Register  dst,
Register  src 
)

Definition at line 582 of file assembler.cpp.

References emit_arith().

Here is the call graph for this function:

void Assembler::cmpl ( Register  dst,
oop  obj 
)

Definition at line 577 of file assembler.cpp.

References emit_arith().

Here is the call graph for this function:

void Assembler::cmpl ( Register  dst,
int  imm32 
)

Definition at line 572 of file assembler.cpp.

References emit_arith().

Here is the call graph for this function:

void Assembler::cmpl ( Address  dst,
oop  obj 
)

Definition at line 565 of file assembler.cpp.

References edi, emit_byte(), emit_data(), and emit_operand().

Here is the call graph for this function:

void Assembler::cmpl ( Address  dst,
int  imm32 
)

Definition at line 558 of file assembler.cpp.

References edi, emit_byte(), emit_long(), and emit_operand().

Referenced by StubRoutines::generate_call_DLL(), StubRoutines::generate_megamorphic_ic(), StubRoutines::generate_PIC_stub(), InterpreterGenerator::jump_ebx(), and InterpreterGenerator::jump_edi().

Here is the call graph for this function:

CodeBuffer* Assembler::code (  )  const [inline]

Definition at line 205 of file assembler.hpp.

References _code.

Referenced by bind(), bind_to(), emit_byte(), emit_data(), emit_long(), StubRoutines::generate(), Floats::generate(), InterpreterGenerator::info(), and Floats::init().

void Assembler::decb ( Register  dst  ) 

Definition at line 593 of file assembler.cpp.

References emit_byte(), guarantee, Register::hasByteRegister(), and Register::number().

Here is the call graph for this function:

void Assembler::decl ( Register  dst  ) 

Definition at line 600 of file assembler.cpp.

References emit_byte(), and Register::number().

Referenced by StubRoutines::generate_call_DLL().

Here is the call graph for this function:

void Assembler::emit_arith ( int  op1,
int  op2,
Register  dst,
Register  src 
) [protected]

Definition at line 244 of file assembler.cpp.

References assert, emit_byte(), isByte(), and Register::number().

Here is the call graph for this function:

void Assembler::emit_arith ( int  op1,
int  op2,
Register  dst,
oop  obj 
) [protected]

Definition at line 234 of file assembler.cpp.

References assert, emit_byte(), emit_data(), isByte(), and Register::number().

Here is the call graph for this function:

void Assembler::emit_arith ( int  op1,
int  op2,
Register  dst,
int  imm32 
) [protected]

Definition at line 218 of file assembler.cpp.

References assert, emit_byte(), emit_long(), is8bit(), isByte(), and Register::number().

Referenced by adcl(), addl(), andl(), cmpl(), orl(), sbbl(), subl(), testl(), and xorl().

Here is the call graph for this function:

void Assembler::emit_arith_b ( int  op1,
int  op2,
Register  dst,
int  imm8 
) [protected]

Definition at line 207 of file assembler.cpp.

References assert, emit_byte(), guarantee, Register::hasByteRegister(), isByte(), and Register::number().

Referenced by testb().

Here is the call graph for this function:

void Assembler::emit_byte ( int  x  )  [inline, protected]

Definition at line 186 of file assembler.cpp.

References _code_pos, assert, code(), and isByte().

Referenced by addl(), call(), cmpl(), decb(), decl(), emit_arith(), emit_arith_b(), emit_farith(), emit_operand(), fabs(), fchs(), fcompp(), fild_d(), fild_s(), fincstp(), fistp_d(), fistp_s(), fld1(), fld_d(), fld_s(), fldz(), fnstsw_ax(), fprem(), fprem1(), fstp_d(), fstp_s(), ftst(), fwait(), hlt(), ic_info(), idivl(), imull(), incl(), MacroAssembler::inline_oop(), int3(), jcc(), jmp(), leal(), movb(), movl(), movsxb(), movsxw(), movw(), mull(), negl(), nop(), notl(), orl(), popad(), popl(), pushad(), pushl(), rcll(), ret(), sarl(), shldl(), shll(), shrdl(), shrl(), and testl().

Here is the call graph for this function:

void Assembler::emit_data ( int  data,
relocInfo::relocType  rtype 
) [inline, protected]

Definition at line 201 of file assembler.cpp.

References _code_pos, code(), and emit_long().

Referenced by call(), cmpl(), emit_arith(), emit_operand(), MacroAssembler::inline_oop(), jcc(), jmp(), movl(), and pushl().

Here is the call graph for this function:

void Assembler::emit_farith ( int  b1,
int  b2,
int  i 
) [protected]

Definition at line 341 of file assembler.cpp.

References assert, emit_byte(), and isByte().

Referenced by fadd(), faddp(), fdiv(), fdivp(), ffree(), fmul(), fmulp(), fsub(), fsubp(), fsubrp(), and fxch().

Here is the call graph for this function:

void Assembler::emit_long ( int  x  )  [inline, protected]

Definition at line 194 of file assembler.cpp.

References _code_pos, and code().

Referenced by addl(), call(), cmpl(), emit_arith(), emit_data(), ic_info(), imull(), jcc(), jmp(), movl(), pushl(), and testl().

Here is the call graph for this function:

void Assembler::emit_operand ( Register  reg,
Address  adr 
) [protected]

Definition at line 336 of file assembler.cpp.

References Address::_base, Address::_disp, Address::_index, Address::_rtype, Address::_scale, and emit_operand().

Here is the call graph for this function:

void Assembler::emit_operand ( Register  reg,
Register  base,
Register  index,
Address::ScaleFactor  scale,
int  disp,
relocInfo::relocType  rtype 
) [protected]

Definition at line 251 of file assembler.cpp.

References assert, ebp, emit_byte(), emit_data(), esp, is8bit(), Register::isValid(), Address::no_scale, and Register::number().

Referenced by addl(), call(), cmpl(), emit_operand(), fild_d(), fild_s(), fistp_d(), fistp_s(), fld_d(), fld_s(), fstp_d(), fstp_s(), incl(), jmp(), leal(), movb(), movl(), movsxb(), movsxw(), movw(), orl(), popl(), and pushl().

Here is the call graph for this function:

void Assembler::fabs (  ) 

Definition at line 1185 of file assembler.cpp.

References emit_byte().

Referenced by Floats::generate().

Here is the call graph for this function:

void Assembler::fadd ( int  i  ) 

Definition at line 1197 of file assembler.cpp.

References emit_farith().

Here is the call graph for this function:

void Assembler::faddp ( int  i = 1  ) 

Definition at line 1217 of file assembler.cpp.

References emit_farith().

Referenced by Floats::generate().

Here is the call graph for this function:

void Assembler::fchs (  ) 

Definition at line 1191 of file assembler.cpp.

References emit_byte().

Referenced by Floats::generate().

Here is the call graph for this function:

void Assembler::fcompp (  ) 

Definition at line 1277 of file assembler.cpp.

References emit_byte().

Referenced by Floats::generate_cmp().

Here is the call graph for this function:

void Assembler::fdiv ( int  i  ) 

Definition at line 1212 of file assembler.cpp.

References emit_farith().

Here is the call graph for this function:

void Assembler::fdivp ( int  i = 1  ) 

Definition at line 1237 of file assembler.cpp.

References emit_farith().

Referenced by Floats::generate().

Here is the call graph for this function:

void Assembler::ffree ( int  i = 0  ) 

Definition at line 1266 of file assembler.cpp.

References emit_farith().

Referenced by MacroAssembler::fpop().

Here is the call graph for this function:

void Assembler::fild_d ( Address  adr  ) 

Definition at line 1167 of file assembler.cpp.

References ebp, emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::fild_s ( Address  adr  ) 

Definition at line 1161 of file assembler.cpp.

References eax, emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::finalize (  ) 

Definition at line 179 of file assembler.cpp.

References _binding_pos, _unbound_label, bind_to(), and Label::is_unbound().

Referenced by StubRoutines::init().

Here is the call graph for this function:

void Assembler::fincstp (  ) 

Definition at line 1260 of file assembler.cpp.

References emit_byte().

Referenced by MacroAssembler::fpop().

Here is the call graph for this function:

void Assembler::fistp_d ( Address  adr  ) 

Definition at line 1179 of file assembler.cpp.

References edi, emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::fistp_s ( Address  adr  ) 

Definition at line 1173 of file assembler.cpp.

References ebx, emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::fld1 (  ) 

Definition at line 1125 of file assembler.cpp.

References emit_byte().

Referenced by Floats::generate().

Here is the call graph for this function:

void Assembler::fld_d ( Address  adr  ) 

Definition at line 1143 of file assembler.cpp.

References eax, emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::fld_s ( Address  adr  ) 

Definition at line 1137 of file assembler.cpp.

References eax, emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::fldz (  ) 

Definition at line 1131 of file assembler.cpp.

References emit_byte().

Referenced by Floats::generate().

Here is the call graph for this function:

void Assembler::fmul ( int  i  ) 

Definition at line 1207 of file assembler.cpp.

References emit_farith().

Referenced by Floats::generate().

Here is the call graph for this function:

void Assembler::fmulp ( int  i = 1  ) 

Definition at line 1232 of file assembler.cpp.

References emit_farith().

Referenced by Floats::generate().

Here is the call graph for this function:

void Assembler::fnstsw_ax (  ) 

Definition at line 1283 of file assembler.cpp.

References emit_byte().

Referenced by Floats::generate_cmp(), and Floats::generate_tst().

Here is the call graph for this function:

void Assembler::fprem (  ) 

Definition at line 1243 of file assembler.cpp.

References emit_byte().

Referenced by Floats::generate().

Here is the call graph for this function:

void Assembler::fprem1 (  ) 

Definition at line 1249 of file assembler.cpp.

References emit_byte().

Here is the call graph for this function:

void Assembler::fstp_d ( Address  adr  ) 

Definition at line 1155 of file assembler.cpp.

References ebx, emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::fstp_s ( Address  adr  ) 

Definition at line 1149 of file assembler.cpp.

References ebx, emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::fsub ( int  i  ) 

Definition at line 1202 of file assembler.cpp.

References emit_farith().

Here is the call graph for this function:

void Assembler::fsubp ( int  i = 1  ) 

Definition at line 1222 of file assembler.cpp.

References emit_farith().

Referenced by Floats::generate().

Here is the call graph for this function:

void Assembler::fsubrp ( int  i = 1  ) 

Definition at line 1227 of file assembler.cpp.

References emit_farith().

Here is the call graph for this function:

void Assembler::ftst (  ) 

Definition at line 1271 of file assembler.cpp.

References emit_byte().

Referenced by Floats::generate_tst().

Here is the call graph for this function:

void Assembler::fwait (  ) 

Definition at line 1289 of file assembler.cpp.

References emit_byte().

Referenced by Floats::generate_cmp(), and Floats::generate_tst().

Here is the call graph for this function:

void Assembler::fxch ( int  i = 1  ) 

Definition at line 1255 of file assembler.cpp.

References emit_farith().

Referenced by Floats::generate().

Here is the call graph for this function:

void Assembler::hlt (  ) 

Definition at line 817 of file assembler.cpp.

References emit_byte().

Referenced by Floats::generate(), StubRoutines::generate_allocate(), StubRoutines::generate_call_DLL(), StubRoutines::generate_megamorphic_ic(), Floats::init(), and InterpreterGenerator::should_not_reach_here().

Here is the call graph for this function:

void Assembler::ic_info ( Label L,
int  flags 
)

Definition at line 1108 of file assembler.cpp.

References assert, emit_byte(), emit_disp, emit_long(), Displacement::ic_info, L, IC_Info::number_of_flags, and offset().

Referenced by MacroAssembler::call_C().

Here is the call graph for this function:

void Assembler::idivl ( Register  src  ) 

Definition at line 605 of file assembler.cpp.

References emit_byte(), and Register::number().

Here is the call graph for this function:

void Assembler::imull ( Register  dst,
Register  src,
int  value 
)

Definition at line 618 of file assembler.cpp.

References emit_byte(), emit_long(), is8bit(), and Register::number().

Here is the call graph for this function:

void Assembler::imull ( Register  dst,
Register  src 
)

Definition at line 611 of file assembler.cpp.

References emit_byte(), and Register::number().

Here is the call graph for this function:

void Assembler::incl ( Address  dst  ) 

Definition at line 636 of file assembler.cpp.

References eax, emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::incl ( Register  dst  ) 

Definition at line 631 of file assembler.cpp.

References emit_byte(), and Register::number().

Referenced by InterpreterGenerator::jump_ebx(), InterpreterGenerator::jump_edi(), and InterpreterGenerator::next_ebx().

Here is the call graph for this function:

void Assembler::int3 (  ) 

Definition at line 822 of file assembler.cpp.

References emit_byte().

Referenced by Floats::generate(), Floats::generate_tst(), InterpreterGenerator::jump_ebx(), and InterpreterGenerator::jump_edi().

Here is the call graph for this function:

bool Assembler::is8bit ( int  x  )  [inline, protected]

Definition at line 153 of file assembler.hpp.

Referenced by emit_arith(), emit_operand(), and imull().

bool Assembler::isByte ( int  x  )  [inline, protected]

Definition at line 154 of file assembler.hpp.

Referenced by emit_arith(), emit_arith_b(), emit_byte(), emit_farith(), jcc(), and jmp().

bool Assembler::isShiftCount ( int  x  )  [inline, protected]

Definition at line 155 of file assembler.hpp.

Referenced by rcll(), sarl(), shll(), and shrl().

void Assembler::jcc ( Condition  cc,
Label L 
)

Definition at line 1071 of file assembler.cpp.

References assert, Displacement::conditional_jump, emit_byte(), emit_disp, emit_long(), isByte(), L, and offset().

Here is the call graph for this function:

void Assembler::jcc ( Condition  cc,
char *  dst,
relocInfo::relocType  rtype = relocInfo::runtime_call_type 
)

Definition at line 1099 of file assembler.cpp.

References _code_pos, assert, emit_byte(), and emit_data().

Referenced by InterpreterGenerator::check_ebx(), InterpreterGenerator::check_oop(), StubRoutines::generate_call_DLL(), Floats::generate_cmp(), StubRoutines::generate_megamorphic_ic(), StubRoutines::generate_PIC_stub(), Floats::generate_tst(), StubRoutines::generate_verify_context_chain(), InterpreterGenerator::jump_ebx(), and InterpreterGenerator::jump_edi().

Here is the call graph for this function:

void Assembler::jmp ( Label L  ) 

Definition at line 1039 of file assembler.cpp.

References _binding_pos, _unbound_label, Displacement::absolute_jump, assert, emit_byte(), emit_disp, emit_long(), Label::is_unbound(), isByte(), L, link_to(), offset(), print(), outputStream::print(), outputStream::print_cr(), and std.

Here is the call graph for this function:

void Assembler::jmp ( Address  adr  ) 

Definition at line 1033 of file assembler.cpp.

References emit_byte(), emit_operand(), and esp.

Here is the call graph for this function:

void Assembler::jmp ( Register  reg  ) 

Definition at line 1027 of file assembler.cpp.

References emit_byte(), and Register::number().

Here is the call graph for this function:

void Assembler::jmp ( char *  entry,
relocInfo::relocType  rtype 
)

Definition at line 1021 of file assembler.cpp.

References _code_pos, emit_byte(), and emit_data().

Referenced by MacroAssembler::call_C(), StubRoutines::generate_call_DLL(), StubRoutines::generate_compile_block(), StubRoutines::generate_continue_NLR(), StubRoutines::generate_deoptimize_block(), StubRoutines::generate_ic_lookup(), StubRoutines::generate_lookup_DLL(), StubRoutines::generate_megamorphic_ic(), StubRoutines::generate_PIC_stub(), StubRoutines::generate_recompile_stub(), StubRoutines::generate_verify_context_chain(), StubRoutines::generate_zombie_block_nmethod(), StubRoutines::generate_zombie_nmethod(), InterpreterGenerator::jump_ebx(), InterpreterGenerator::jump_edi(), and InterpreterGenerator::return_tos().

Here is the call graph for this function:

void Assembler::leal ( Register  dst,
Address  src 
)

Definition at line 642 of file assembler.cpp.

References emit_byte(), and emit_operand().

Referenced by InterpreterGenerator::push_smi(), and InterpreterGenerator::return_tos().

Here is the call graph for this function:

void Assembler::link_to ( Label L,
Label appendix 
) [protected]

Definition at line 926 of file assembler.cpp.

References disp_at, disp_at_put, Label::is_unbound(), L, Displacement::link_to(), and Label::unuse().

Referenced by bind(), and jmp().

Here is the call graph for this function:

void Assembler::Load ( Register  base,
int  disp,
Register  dst 
) [inline]

Definition at line 407 of file assembler.hpp.

References movl().

Here is the call graph for this function:

int Assembler::long_at ( int  pos  )  [inline, protected]

Definition at line 150 of file assembler.hpp.

References addr_at().

Here is the call graph for this function:

void Assembler::long_at_put ( int  pos,
int  x 
) [inline, protected]

Definition at line 151 of file assembler.hpp.

References addr_at().

Referenced by bind_to().

Here is the call graph for this function:

void Assembler::merge ( Label L,
Label with 
)

Definition at line 982 of file assembler.cpp.

References Unimplemented.

void Assembler::movb ( Address  dst,
Register  src 
)

Definition at line 407 of file assembler.cpp.

References emit_byte(), emit_operand(), guarantee, and Register::hasByteRegister().

Here is the call graph for this function:

void Assembler::movb ( Address  dst,
int  imm8 
)

Definition at line 400 of file assembler.cpp.

References eax, emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::movb ( Register  dst,
Address  src 
)

Definition at line 393 of file assembler.cpp.

References emit_byte(), emit_operand(), guarantee, and Register::hasByteRegister().

Referenced by InterpreterGenerator::load_ebx(), InterpreterGenerator::load_recv(), InterpreterGenerator::next_ebx(), InterpreterGenerator::push_arg_n(), InterpreterGenerator::push_smi(), InterpreterGenerator::push_temp_n(), InterpreterGenerator::return_tos(), MacroAssembler::store_check(), and InterpreterGenerator::store_temp_n().

Here is the call graph for this function:

void Assembler::movl ( Address  dst,
Register  src 
)

Definition at line 466 of file assembler.cpp.

References emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::movl ( Address  dst,
oop  obj 
)

Definition at line 459 of file assembler.cpp.

References eax, emit_byte(), emit_data(), and emit_operand().

Here is the call graph for this function:

void Assembler::movl ( Address  dst,
int  imm32 
)

Definition at line 452 of file assembler.cpp.

References eax, emit_byte(), emit_long(), and emit_operand().

Here is the call graph for this function:

void Assembler::movl ( Register  dst,
Address  src 
)

Definition at line 446 of file assembler.cpp.

References emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::movl ( Register  dst,
Register  src 
)

Definition at line 440 of file assembler.cpp.

References emit_byte(), and Register::number().

Here is the call graph for this function:

void Assembler::movl ( Register  dst,
oop  obj 
)

Definition at line 434 of file assembler.cpp.

References emit_byte(), emit_data(), and Register::number().

Here is the call graph for this function:

void Assembler::movl ( Register  dst,
int  imm32 
)

Definition at line 428 of file assembler.cpp.

References emit_byte(), emit_long(), and Register::number().

Referenced by MacroAssembler::enter(), StubRoutines::generate_call_DLL(), Floats::generate_cmp(), StubRoutines::generate_compile_block(), StubRoutines::generate_continue_NLR(), StubRoutines::generate_ic_lookup(), StubRoutines::generate_lookup_DLL(), StubRoutines::generate_megamorphic_ic(), StubRoutines::generate_PIC_stub(), StubRoutines::generate_recompile_stub(), Floats::generate_tst(), StubRoutines::generate_verify_context_chain(), StubRoutines::generate_zombie_block_nmethod(), StubRoutines::generate_zombie_nmethod(), MacroAssembler::leave(), Load(), InterpreterGenerator::load_edi(), InterpreterGenerator::load_recv(), InterpreterGenerator::push_arg(), InterpreterGenerator::push_arg_n(), InterpreterGenerator::push_const(), InterpreterGenerator::push_instVar(), InterpreterGenerator::push_literal(), InterpreterGenerator::push_self(), InterpreterGenerator::push_temp(), InterpreterGenerator::push_temp_n(), MacroAssembler::reset_last_Delta_frame(), InterpreterGenerator::restore_esi(), InterpreterGenerator::return_instVar(), InterpreterGenerator::save_esi(), MacroAssembler::set_last_Delta_frame_before_call(), Store(), MacroAssembler::store_check(), InterpreterGenerator::store_instVar(), InterpreterGenerator::store_temp(), and InterpreterGenerator::store_temp_n().

Here is the call graph for this function:

void Assembler::movsxb ( Register  dst,
Register  src 
)

Definition at line 479 of file assembler.cpp.

References emit_byte(), guarantee, Register::hasByteRegister(), and Register::number().

Here is the call graph for this function:

void Assembler::movsxb ( Register  dst,
Address  src 
)

Definition at line 472 of file assembler.cpp.

References emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::movsxw ( Register  dst,
Register  src 
)

Definition at line 494 of file assembler.cpp.

References emit_byte(), and Register::number().

Here is the call graph for this function:

void Assembler::movsxw ( Register  dst,
Address  src 
)

Definition at line 487 of file assembler.cpp.

References emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::movw ( Address  dst,
Register  src 
)

Definition at line 421 of file assembler.cpp.

References emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::movw ( Register  dst,
Address  src 
)

Definition at line 414 of file assembler.cpp.

References emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::mull ( Register  src  ) 

Definition at line 648 of file assembler.cpp.

References emit_byte(), and Register::number().

Here is the call graph for this function:

void Assembler::negl ( Register  dst  ) 

Definition at line 654 of file assembler.cpp.

References emit_byte(), and Register::number().

Referenced by InterpreterGenerator::push_smi().

Here is the call graph for this function:

void Assembler::nop (  ) 

Definition at line 827 of file assembler.cpp.

References emit_byte().

Referenced by MacroAssembler::align().

Here is the call graph for this function:

void Assembler::notl ( Register  dst  ) 

Definition at line 660 of file assembler.cpp.

References emit_byte(), and Register::number().

Here is the call graph for this function:

int Assembler::offset (  )  const [inline]

Definition at line 207 of file assembler.hpp.

References _code_begin, and _code_pos.

Referenced by MacroAssembler::align(), bind(), bind_to(), call(), ic_info(), StubRoutines::init(), jcc(), and jmp().

void Assembler::orl ( Register  dst,
Address  src 
)

Definition at line 677 of file assembler.cpp.

References emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::orl ( Register  dst,
Register  src 
)

Definition at line 671 of file assembler.cpp.

References emit_arith().

Here is the call graph for this function:

void Assembler::orl ( Register  dst,
int  imm32 
)

Definition at line 666 of file assembler.cpp.

References emit_arith().

Here is the call graph for this function:

char* Assembler::pc (  )  const [inline]

Definition at line 206 of file assembler.hpp.

References _code_pos.

Referenced by InterpreterGenerator::entry_point(), StubRoutines::generate(), Floats::generate(), StubRoutines::generate_allocate(), StubRoutines::generate_call_DLL(), StubRoutines::generate_call_inspector(), StubRoutines::generate_compile_block(), StubRoutines::generate_continue_NLR(), StubRoutines::generate_deoptimize_block(), StubRoutines::generate_ic_lookup(), StubRoutines::generate_lookup_DLL(), StubRoutines::generate_megamorphic_ic(), StubRoutines::generate_PIC_stub(), StubRoutines::generate_recompile_stub(), StubRoutines::generate_uncommon_trap(), StubRoutines::generate_verify_context_chain(), StubRoutines::generate_zombie_block_nmethod(), StubRoutines::generate_zombie_nmethod(), and Floats::init().

void Assembler::popad (  ) 

Definition at line 354 of file assembler.cpp.

References emit_byte().

Referenced by StubRoutines::generate_call_inspector().

Here is the call graph for this function:

void Assembler::popl ( Address  dst  ) 

Definition at line 387 of file assembler.cpp.

References eax, emit_byte(), and emit_operand().

Here is the call graph for this function:

void Assembler::popl ( Register  dst  ) 

Definition at line 382 of file assembler.cpp.

References emit_byte(), and Register::number().

Referenced by StubRoutines::generate_call_DLL(), StubRoutines::generate_compile_block(), StubRoutines::generate_continue_NLR(), StubRoutines::generate_deoptimize_block(), StubRoutines::generate_ic_lookup(), StubRoutines::generate_lookup_DLL(), StubRoutines::generate_megamorphic_ic(), StubRoutines::generate_PIC_stub(), StubRoutines::generate_recompile_stub(), StubRoutines::generate_verify_context_chain(), StubRoutines::generate_zombie_block_nmethod(), StubRoutines::generate_zombie_nmethod(), InterpreterGenerator::jump_ebx(), InterpreterGenerator::jump_edi(), MacroAssembler::leave(), InterpreterGenerator::only_pop(), InterpreterGenerator::return_tos(), InterpreterGenerator::store_instVar(), InterpreterGenerator::store_temp(), and InterpreterGenerator::store_temp_n().

Here is the call graph for this function:

void Assembler::print ( Label L  )  [protected]

Definition at line 857 of file assembler.cpp.

References outputStream::cr(), disp_at, L, outputStream::print(), outputStream::print_cr(), and std.

Referenced by jmp().

Here is the call graph for this function:

void Assembler::pushad (  ) 

Definition at line 349 of file assembler.cpp.

References emit_byte().

Referenced by StubRoutines::generate_call_inspector().

Here is the call graph for this function:

void Assembler::pushl ( Address  src  ) 

Definition at line 376 of file assembler.cpp.

References emit_byte(), emit_operand(), and esi.

Here is the call graph for this function:

void Assembler::pushl ( Register  src  ) 

Definition at line 371 of file assembler.cpp.

References emit_byte(), and Register::number().

Here is the call graph for this function:

void Assembler::pushl ( oop  obj  ) 

Definition at line 365 of file assembler.cpp.

References emit_byte(), and emit_data().

Here is the call graph for this function:

void Assembler::pushl ( int  imm32  ) 

Definition at line 359 of file assembler.cpp.

References emit_byte(), and emit_long().

Referenced by MacroAssembler::call_C(), MacroAssembler::enter(), StubRoutines::generate_call_DLL(), StubRoutines::generate_compile_block(), StubRoutines::generate_deoptimize_block(), StubRoutines::generate_ic_lookup(), StubRoutines::generate_lookup_DLL(), StubRoutines::generate_megamorphic_ic(), StubRoutines::generate_recompile_stub(), StubRoutines::generate_verify_context_chain(), StubRoutines::generate_zombie_block_nmethod(), StubRoutines::generate_zombie_nmethod(), InterpreterGenerator::jump_ebx(), InterpreterGenerator::jump_edi(), InterpreterGenerator::load_recv(), InterpreterGenerator::push_arg(), InterpreterGenerator::push_arg_n(), InterpreterGenerator::push_const(), InterpreterGenerator::push_instVar(), InterpreterGenerator::push_literal(), InterpreterGenerator::push_self(), InterpreterGenerator::push_smi(), InterpreterGenerator::push_temp(), InterpreterGenerator::push_temp_n(), and InterpreterGenerator::push_tos().

Here is the call graph for this function:

void Assembler::rcll ( Register  dst,
int  imm8 
)

Definition at line 683 of file assembler.cpp.

References assert, emit_byte(), isShiftCount(), and Register::number().

Here is the call graph for this function:

void Assembler::ret ( int  imm16  ) 

Definition at line 832 of file assembler.cpp.

References emit_byte().

Referenced by MacroAssembler::call_C(), Floats::generate(), StubRoutines::generate_call_DLL(), StubRoutines::generate_call_inspector(), StubRoutines::generate_uncommon_trap(), StubRoutines::generate_verify_context_chain(), and InterpreterGenerator::return_tos().

Here is the call graph for this function:

void Assembler::sarl ( Register  dst  ) 

Definition at line 709 of file assembler.cpp.

References emit_byte(), and Register::number().

Here is the call graph for this function:

void Assembler::sarl ( Register  dst,
int  imm8 
)

Definition at line 696 of file assembler.cpp.

References assert, emit_byte(), isShiftCount(), and Register::number().

Referenced by StubRoutines::generate_call_DLL(), and StubRoutines::generate_continue_NLR().

Here is the call graph for this function:

void Assembler::sbbl ( Register  dst,
Register  src 
)

Definition at line 720 of file assembler.cpp.

References emit_arith().

Here is the call graph for this function:

void Assembler::sbbl ( Register  dst,
int  imm32 
)

Definition at line 715 of file assembler.cpp.

References Unimplemented.

void Assembler::shldl ( Register  dst,
Register  src 
)

Definition at line 725 of file assembler.cpp.

References emit_byte(), and Register::number().

Here is the call graph for this function:

void Assembler::shll ( Register  dst  ) 

Definition at line 745 of file assembler.cpp.

References emit_byte(), and Register::number().

Here is the call graph for this function:

void Assembler::shll ( Register  dst,
int  imm8 
)

Definition at line 732 of file assembler.cpp.

References assert, emit_byte(), isShiftCount(), and Register::number().

Here is the call graph for this function:

void Assembler::shrdl ( Register  dst,
Register  src 
)

Definition at line 751 of file assembler.cpp.

References emit_byte(), and Register::number().

Here is the call graph for this function:

void Assembler::shrl ( Register  dst  ) 

Definition at line 766 of file assembler.cpp.

References emit_byte(), and Register::number().

Here is the call graph for this function:

void Assembler::shrl ( Register  dst,
int  imm8 
)

Definition at line 758 of file assembler.cpp.

References assert, emit_byte(), isShiftCount(), and Register::number().

Referenced by MacroAssembler::store_check().

Here is the call graph for this function:

void Assembler::Store ( Register  src,
Register  base,
int  disp 
) [inline]

Definition at line 408 of file assembler.hpp.

References movl().

Here is the call graph for this function:

void Assembler::subl ( Register  dst,
Register  src 
)

Definition at line 777 of file assembler.cpp.

References emit_arith().

Here is the call graph for this function:

void Assembler::subl ( Register  dst,
int  imm32 
)

Definition at line 772 of file assembler.cpp.

References emit_arith().

Referenced by MacroAssembler::set_last_Delta_frame_after_call().

Here is the call graph for this function:

void Assembler::testb ( Register  dst,
int  imm8 
)

Definition at line 782 of file assembler.cpp.

References emit_arith_b(), guarantee, and Register::hasByteRegister().

Referenced by InterpreterGenerator::check_oop(), StubRoutines::generate_call_DLL(), and MacroAssembler::test().

Here is the call graph for this function:

void Assembler::testl ( Register  dst,
Register  src 
)

Definition at line 802 of file assembler.cpp.

References emit_arith().

Here is the call graph for this function:

void Assembler::testl ( Register  dst,
int  imm32 
)

Definition at line 788 of file assembler.cpp.

References emit_byte(), emit_long(), and Register::number().

Referenced by InterpreterGenerator::check_ebx(), StubRoutines::generate_call_DLL(), Floats::generate_cmp(), StubRoutines::generate_megamorphic_ic(), Floats::generate_tst(), StubRoutines::generate_verify_context_chain(), MacroAssembler::inspect(), and MacroAssembler::test().

Here is the call graph for this function:

void Assembler::xorl ( Register  dst,
Register  src 
)

Definition at line 812 of file assembler.cpp.

References emit_arith().

Here is the call graph for this function:

void Assembler::xorl ( Register  dst,
int  imm32 
)

Definition at line 807 of file assembler.cpp.

References emit_arith().

Referenced by StubRoutines::generate_megamorphic_ic(), StubRoutines::generate_PIC_stub(), and InterpreterGenerator::restore_ebx().

Here is the call graph for this function:


Member Data Documentation

int Assembler::_binding_pos [protected]

Definition at line 143 of file assembler.hpp.

Referenced by bind(), finalize(), and jmp().

CodeBuffer* Assembler::_code [protected]

Definition at line 136 of file assembler.hpp.

Referenced by Assembler(), and code().

char* Assembler::_code_begin [protected]

Definition at line 138 of file assembler.hpp.

Referenced by addr_at(), Assembler(), and offset().

char* Assembler::_code_limit [protected]

Definition at line 139 of file assembler.hpp.

Referenced by Assembler().

char* Assembler::_code_pos [protected]

Definition at line 140 of file assembler.hpp.

Referenced by Assembler(), bind(), call(), emit_byte(), emit_data(), emit_long(), jcc(), jmp(), offset(), and pc().

Label Assembler::_unbound_label [protected]

Definition at line 142 of file assembler.hpp.

Referenced by bind(), finalize(), and jmp().


The documentation for this class was generated from the following files:
Generated on Mon Oct 9 13:48:27 2006 for Strongtalk VM by  doxygen 1.4.7