mirror of
https://github.com/openjdk/jdk.git
synced 2025-09-20 19:14:38 +02:00
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:
parent
a3355065be
commit
7fc460bae3
5 changed files with 8 additions and 7 deletions
|
@ -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);
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
//=============================================================================
|
//=============================================================================
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -90,7 +90,7 @@ protected:
|
||||||
NOT_PRODUCT(_name = name);
|
NOT_PRODUCT(_name = name);
|
||||||
_counter = 0;
|
_counter = 0;
|
||||||
}
|
}
|
||||||
virtual ~AbstractGangTask() { }
|
~AbstractGangTask() { }
|
||||||
|
|
||||||
public:
|
public:
|
||||||
};
|
};
|
||||||
|
|
|
@ -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;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue