Mercurial > hg > truffle
diff src/cpu/x86/vm/stubGenerator_x86_64.cpp @ 6725:da91efe96a93
6964458: Reimplement class meta-data storage to use native memory
Summary: Remove PermGen, allocate meta-data in metaspace linked to class loaders, rewrite GC walking, rewrite and rename metadata to be C++ classes
Reviewed-by: jmasa, stefank, never, coleenp, kvn, brutisso, mgerdin, dholmes, jrose, twisti, roland
Contributed-by: jmasa <jon.masamitsu@oracle.com>, stefank <stefan.karlsson@oracle.com>, mgerdin <mikael.gerdin@oracle.com>, never <tom.rodriguez@oracle.com>
author | coleenp |
---|---|
date | Sat, 01 Sep 2012 13:25:18 -0400 |
parents | 1d7922586cf6 |
children | d8ce2825b193 |
line wrap: on
line diff
--- a/src/cpu/x86/vm/stubGenerator_x86_64.cpp Fri Aug 31 16:39:35 2012 -0700 +++ b/src/cpu/x86/vm/stubGenerator_x86_64.cpp Sat Sep 01 13:25:18 2012 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 2003, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 2003, 2012, Oracle and/or its affiliates. All rights reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. * * This code is free software; you can redistribute it and/or modify it @@ -28,7 +28,7 @@ #include "interpreter/interpreter.hpp" #include "nativeInst_x86.hpp" #include "oops/instanceOop.hpp" -#include "oops/methodOop.hpp" +#include "oops/method.hpp" #include "oops/objArrayKlass.hpp" #include "oops/oop.inline.hpp" #include "prims/methodHandles.hpp" @@ -109,7 +109,7 @@ // c_rarg0: call wrapper address address // c_rarg1: result address // c_rarg2: result type BasicType - // c_rarg3: method methodOop + // c_rarg3: method Method* // c_rarg4: (interpreter) entry point address // c_rarg5: parameters intptr_t* // 16(rbp): parameter size (in words) int @@ -139,7 +139,7 @@ // c_rarg0: call wrapper address address // c_rarg1: result address // c_rarg2: result type BasicType - // c_rarg3: method methodOop + // c_rarg3: method Method* // 48(rbp): (interpreter) entry point address // 56(rbp): parameters intptr_t* // 64(rbp): parameter size (in words) int @@ -332,7 +332,7 @@ // call Java function __ BIND(parameters_done); - __ movptr(rbx, method); // get methodOop + __ movptr(rbx, method); // get Method* __ movptr(c_rarg1, entry_point); // get entry_point __ mov(r13, rsp); // set sender sp BLOCK_COMMENT("call Java function"); @@ -1027,28 +1027,11 @@ // set r12 to heapbase for load_klass() __ reinit_heapbase(); - // make sure klass is 'reasonable' + // make sure klass is 'reasonable', which is not zero. __ load_klass(rax, rax); // get klass __ testptr(rax, rax); __ jcc(Assembler::zero, error); // if klass is NULL it is broken - // Check if the klass is in the right area of memory - __ mov(c_rarg2, rax); - __ movptr(c_rarg3, (intptr_t) Universe::verify_klass_mask()); - __ andptr(c_rarg2, c_rarg3); - __ movptr(c_rarg3, (intptr_t) Universe::verify_klass_bits()); - __ cmpptr(c_rarg2, c_rarg3); - __ jcc(Assembler::notZero, error); - - // make sure klass' klass is 'reasonable' - __ load_klass(rax, rax); - __ testptr(rax, rax); - __ jcc(Assembler::zero, error); // if klass' klass is NULL it is broken - // Check if the klass' klass is in the right area of memory - __ movptr(c_rarg3, (intptr_t) Universe::verify_klass_mask()); - __ andptr(rax, c_rarg3); - __ movptr(c_rarg3, (intptr_t) Universe::verify_klass_bits()); - __ cmpptr(rax, c_rarg3); - __ jcc(Assembler::notZero, error); + // TODO: Future assert that klass is lower 4g memory for UseCompressedKlassPointers // return if everything seems ok __ bind(exit);