Revert of Prevent calls to ReturnValue::Set with pointer-valued types....

Revert of Prevent calls to ReturnValue::Set with pointer-valued types. (https://codereview.chromium.org/240013004/)

Reason for revert:
Looks like this broke the "V8 Linux64 ASAN" build.

Original issue's description:
> Prevent calls to ReturnValue::Set with pointer-valued types.
>
> Currently, this code will compile:
>   SomePointer* p = ...;
>   ReturnValue r = ...;
>   r.Set(p);
>
> What happens is that ReturnValue::Set has no pointer-ish overloads, but
> a bool one, and hence C++ will convert the pointer to a bool and use
> the Set(bool) overload. In other words, the example above is equivalent
> to: r.Set(p ? true : false); Which probably isn't what the author had
> in mind. This change adds a Set(void*) overload whose body forces a
> compile error, to prevent this from happening inadvertently. The only
> use of this indeed turned out to be an error.
>
> (Said error was fixed/removed in crrev.com/267393002.)
>
> BUG=
> R=dcarney@chromium.org
>
> Committed: https://code.google.com/p/v8/source/detail?r=21217

R=ishell@chromium.org

Review URL: https://codereview.chromium.org/271113002

git-svn-id: https://v8.googlecode.com/svn/branches/bleeding_edge@21219 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent 3e08756f
...@@ -2429,9 +2429,6 @@ class ReturnValue { ...@@ -2429,9 +2429,6 @@ class ReturnValue {
// Convenience getter for Isolate // Convenience getter for Isolate
V8_INLINE Isolate* GetIsolate(); V8_INLINE Isolate* GetIsolate();
// Pointer setter: Uncompilable to prevent inadvertent misuse.
void Set(void* whatever);
private: private:
template<class F> friend class ReturnValue; template<class F> friend class ReturnValue;
template<class F> friend class FunctionCallbackInfo; template<class F> friend class FunctionCallbackInfo;
...@@ -5976,12 +5973,6 @@ Isolate* ReturnValue<T>::GetIsolate() { ...@@ -5976,12 +5973,6 @@ Isolate* ReturnValue<T>::GetIsolate() {
return *reinterpret_cast<Isolate**>(&value_[-2]); return *reinterpret_cast<Isolate**>(&value_[-2]);
} }
template<typename T>
void ReturnValue<T>::Set(void* whatever) {
// Uncompilable to prevent inadvertent misuse.
TYPE_CHECK(void*, Primitive);
}
template<typename T> template<typename T>
internal::Object* ReturnValue<T>::GetDefaultValue() { internal::Object* ReturnValue<T>::GetDefaultValue() {
// Default value is always the pointer below value_ on the stack. // Default value is always the pointer below value_ on the stack.
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment