8004845: Catch incorrect usage of new and delete during compile time for value objects and stack objects

Makes the "new" and "delete" operator of _ValueObj and StackObj private

Reviewed-by: dholmes, coleenp
This commit is contained in:
Erik Helin 2012-12-17 15:25:26 +01:00 committed by Bengt Rutisson
parent a3355065be
commit 7fc460bae3
5 changed files with 8 additions and 7 deletions

View file

@ -202,7 +202,7 @@ template <MEMFLAGS F> class CHeapObj ALLOCATION_SUPER_CLASS_SPEC {
// Calling new or delete will result in fatal error. // Calling new or delete will result in fatal error.
class StackObj ALLOCATION_SUPER_CLASS_SPEC { class StackObj ALLOCATION_SUPER_CLASS_SPEC {
public: private:
void* operator new(size_t size); void* operator new(size_t size);
void operator delete(void* p); void operator delete(void* p);
}; };
@ -226,7 +226,7 @@ class StackObj ALLOCATION_SUPER_CLASS_SPEC {
// be defined as a an empty string "". // be defined as a an empty string "".
// //
class _ValueObj { class _ValueObj {
public: private:
void* operator new(size_t size); void* operator new(size_t size);
void operator delete(void* p); void operator delete(void* p);
}; };

View file

@ -1839,15 +1839,16 @@ uint Node::match_edge(uint idx) const {
return idx; // True for other than index 0 (control) return idx; // True for other than index 0 (control)
} }
static RegMask _not_used_at_all;
// Register classes are defined for specific machines // Register classes are defined for specific machines
const RegMask &Node::out_RegMask() const { const RegMask &Node::out_RegMask() const {
ShouldNotCallThis(); ShouldNotCallThis();
return *(new RegMask()); return _not_used_at_all;
} }
const RegMask &Node::in_RegMask(uint) const { const RegMask &Node::in_RegMask(uint) const {
ShouldNotCallThis(); ShouldNotCallThis();
return *(new RegMask()); return _not_used_at_all;
} }
//============================================================================= //=============================================================================

View file

@ -334,7 +334,7 @@ class MemBaseline : public _ValueObj {
// create a memory baseline // create a memory baseline
MemBaseline(); MemBaseline();
virtual ~MemBaseline(); ~MemBaseline();
inline bool baselined() const { inline bool baselined() const {
return _baselined; return _baselined;

View file

@ -90,7 +90,7 @@ protected:
NOT_PRODUCT(_name = name); NOT_PRODUCT(_name = name);
_counter = 0; _counter = 0;
} }
virtual ~AbstractGangTask() { } ~AbstractGangTask() { }
public: public:
}; };

View file

@ -106,7 +106,7 @@ protected:
_status(INACTIVE), _status(INACTIVE),
_gang(NULL) { } _gang(NULL) { }
virtual ~YieldingFlexibleGangTask() { } ~YieldingFlexibleGangTask() { }
friend class YieldingFlexibleWorkGang; friend class YieldingFlexibleWorkGang;
friend class YieldingFlexibleGangWorker; friend class YieldingFlexibleGangWorker;