Mercurial > hg > truffle
diff src/cpu/x86/vm/stubGenerator_x86_32.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_32.cpp Fri Aug 31 16:39:35 2012 -0700 +++ b/src/cpu/x86/vm/stubGenerator_x86_32.cpp Sat Sep 01 13:25:18 2012 -0400 @@ -1,5 +1,5 @@ /* - * Copyright (c) 1999, 2011, Oracle and/or its affiliates. All rights reserved. + * Copyright (c) 1999, 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" @@ -234,7 +234,7 @@ // call Java function __ BIND(parameters_done); - __ movptr(rbx, method); // get methodOop + __ movptr(rbx, method); // get Method* __ movptr(rax, entry_point); // get entry_point __ mov(rsi, rsp); // set sender sp BLOCK_COMMENT("call Java function"); @@ -682,29 +682,11 @@ __ cmpptr(rdx, oop_bits); __ jcc(Assembler::notZero, error); - // make sure klass is 'reasonable' + // make sure klass is 'reasonable', which is not zero. __ movptr(rax, Address(rax, oopDesc::klass_offset_in_bytes())); // 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 - const int klass_mask = Universe::verify_klass_mask(); - const int klass_bits = Universe::verify_klass_bits(); - __ mov(rdx, rax); - __ andptr(rdx, klass_mask); - __ cmpptr(rdx, klass_bits); - __ jcc(Assembler::notZero, error); - - // make sure klass' klass is 'reasonable' - __ movptr(rax, Address(rax, oopDesc::klass_offset_in_bytes())); // get klass' klass - __ testptr(rax, rax); - __ jcc(Assembler::zero, error); // if klass' klass is NULL it is broken - - __ mov(rdx, rax); - __ andptr(rdx, klass_mask); - __ cmpptr(rdx, klass_bits); - __ jcc(Assembler::notZero, error); // if klass not in right area - // of memory it is broken too. + // TODO: Future assert that klass is lower 4g memory for UseCompressedKlassPointers // return if everything seems ok __ bind(exit);