< prev index next >
src/share/vm/oops/oopsHierarchy.hpp
Print this page
rev 13429 : imported patch cmpxchg_template
rev 13451 : imported patch copyrights
@@ -1,7 +1,7 @@
/*
- * Copyright (c) 1997, 2014, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2017, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
@@ -23,10 +23,12 @@
*/
#ifndef SHARE_VM_OOPS_OOPSHIERARCHY_HPP
#define SHARE_VM_OOPS_OOPSHIERARCHY_HPP
+#include "metaprogramming/integerTypes.hpp"
+#include "metaprogramming/integralConstant.hpp"
#include "runtime/globals.hpp"
#include "utilities/globalDefinitions.hpp"
// OBJECT hierarchy
// This hierarchy is a representation hierarchy, i.e. if A is a superclass
@@ -140,10 +142,19 @@
// from parNewGeneration and other things that want to get to the end of
// an oop for stuff (like ObjArrayKlass.cpp)
operator oop* () const { return (oop *)obj(); }
};
+template<>
+struct IntegerTypes::Translate<oop> : public TrueType {
+ typedef oop Value;
+ typedef oopDesc* Decayed;
+
+ static Decayed decay(Value x) { return x.obj(); }
+ static Value recover(Decayed x) { return oop(x); }
+};
+
#define DEF_OOP(type) \
class type##OopDesc; \
class type##Oop : public oop { \
public: \
type##Oop() : oop() {} \
< prev index next >