Mercurial > hg > truffle
diff src/cpu/x86/vm/vtableStubs_x86_64.cpp @ 113:ba764ed4b6f2
6420645: Create a vm that uses compressed oops for up to 32gb heapsizes
Summary: Compressed oops in instances, arrays, and headers. Code contributors are coleenp, phh, never, swamyv
Reviewed-by: jmasa, kamg, acorn, tbell, kvn, rasbold
author | coleenp |
---|---|
date | Sun, 13 Apr 2008 17:43:42 -0400 |
parents | f8236e79048a |
children | d1605aabd0a1 |
line wrap: on
line diff
--- a/src/cpu/x86/vm/vtableStubs_x86_64.cpp Fri Apr 11 09:56:35 2008 -0400 +++ b/src/cpu/x86/vm/vtableStubs_x86_64.cpp Sun Apr 13 17:43:42 2008 -0400 @@ -56,7 +56,7 @@ // get receiver klass address npe_addr = __ pc(); - __ movq(rax, Address(j_rarg0, oopDesc::klass_offset_in_bytes())); + __ load_klass(rax, j_rarg0); // compute entry offset (in words) int entry_offset = @@ -131,7 +131,7 @@ // get receiver klass (also an implicit null-check) address npe_addr = __ pc(); - __ movq(rbx, Address(j_rarg0, oopDesc::klass_offset_in_bytes())); + __ load_klass(rbx, j_rarg0); // If we take a trap while this arg is on the stack we will not // be able to walk the stack properly. This is not an issue except @@ -181,7 +181,7 @@ // Get methodOop and entrypoint for compiler // Get klass pointer again - __ movq(rax, Address(j_rarg0, oopDesc::klass_offset_in_bytes())); + __ load_klass(rax, j_rarg0); const Register method = rbx; __ movq(method, Address(rax, j_rarg1, Address::times_1, method_offset)); @@ -226,10 +226,12 @@ int VtableStub::pd_code_size_limit(bool is_vtable_stub) { if (is_vtable_stub) { // Vtable stub size - return (DebugVtables ? 512 : 24) + (CountCompiledCalls ? 13 : 0); + return (DebugVtables ? 512 : 24) + (CountCompiledCalls ? 13 : 0) + + (UseCompressedOops ? 16 : 0); // 1 leaq can be 3 bytes + 1 long } else { // Itable stub size - return (DebugVtables ? 636 : 72) + (CountCompiledCalls ? 13 : 0); + return (DebugVtables ? 636 : 72) + (CountCompiledCalls ? 13 : 0) + + (UseCompressedOops ? 32 : 0); // 2 leaqs } }