Remove unused IdempotentPointerToHandleCodeTrampoline
R=mstarzinger@chromium.org Review URL: https://codereview.chromium.org/59973006 git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@17504 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
This commit is contained in:
parent
371265eec4
commit
9f80c8d72e
@ -588,101 +588,6 @@ Handle<Object> Factory::NewNumberFromSize(size_t value,
|
||||
}
|
||||
|
||||
|
||||
// Used to "safely" transition from pointer-based runtime code to Handle-based
|
||||
// runtime code. When a GC happens during the called Handle-based code, a
|
||||
// failure object is returned to the pointer-based code to cause it abort and
|
||||
// re-trigger a gc of it's own. Since this double-gc will cause the Handle-based
|
||||
// code to be called twice, it must be idempotent.
|
||||
class IdempotentPointerToHandleCodeTrampoline {
|
||||
public:
|
||||
explicit IdempotentPointerToHandleCodeTrampoline(Isolate* isolate)
|
||||
: isolate_(isolate) {}
|
||||
|
||||
template<typename R>
|
||||
MUST_USE_RESULT MaybeObject* Call(R (*function)()) {
|
||||
int collections = isolate_->heap()->gc_count();
|
||||
(*function)();
|
||||
return (collections == isolate_->heap()->gc_count())
|
||||
? isolate_->heap()->true_value()
|
||||
: reinterpret_cast<MaybeObject*>(Failure::RetryAfterGC());
|
||||
}
|
||||
|
||||
template<typename R>
|
||||
MUST_USE_RESULT MaybeObject* CallWithReturnValue(R (*function)()) {
|
||||
int collections = isolate_->heap()->gc_count();
|
||||
Object* result = (*function)();
|
||||
return (collections == isolate_->heap()->gc_count())
|
||||
? result
|
||||
: reinterpret_cast<MaybeObject*>(Failure::RetryAfterGC());
|
||||
}
|
||||
|
||||
template<typename R, typename P1>
|
||||
MUST_USE_RESULT MaybeObject* Call(R (*function)(P1), P1 p1) {
|
||||
int collections = isolate_->heap()->gc_count();
|
||||
(*function)(p1);
|
||||
return (collections == isolate_->heap()->gc_count())
|
||||
? isolate_->heap()->true_value()
|
||||
: reinterpret_cast<MaybeObject*>(Failure::RetryAfterGC());
|
||||
}
|
||||
|
||||
template<typename R, typename P1>
|
||||
MUST_USE_RESULT MaybeObject* CallWithReturnValue(
|
||||
R (*function)(P1),
|
||||
P1 p1) {
|
||||
int collections = isolate_->heap()->gc_count();
|
||||
Object* result = (*function)(p1);
|
||||
return (collections == isolate_->heap()->gc_count())
|
||||
? result
|
||||
: reinterpret_cast<MaybeObject*>(Failure::RetryAfterGC());
|
||||
}
|
||||
|
||||
template<typename R, typename P1, typename P2>
|
||||
MUST_USE_RESULT MaybeObject* Call(
|
||||
R (*function)(P1, P2),
|
||||
P1 p1,
|
||||
P2 p2) {
|
||||
int collections = isolate_->heap()->gc_count();
|
||||
(*function)(p1, p2);
|
||||
return (collections == isolate_->heap()->gc_count())
|
||||
? isolate_->heap()->true_value()
|
||||
: reinterpret_cast<MaybeObject*>(Failure::RetryAfterGC());
|
||||
}
|
||||
|
||||
template<typename R, typename P1, typename P2>
|
||||
MUST_USE_RESULT MaybeObject* CallWithReturnValue(
|
||||
R (*function)(P1, P2),
|
||||
P1 p1,
|
||||
P2 p2) {
|
||||
int collections = isolate_->heap()->gc_count();
|
||||
Object* result = (*function)(p1, p2);
|
||||
return (collections == isolate_->heap()->gc_count())
|
||||
? result
|
||||
: reinterpret_cast<MaybeObject*>(Failure::RetryAfterGC());
|
||||
}
|
||||
|
||||
template<typename R, typename P1, typename P2, typename P3, typename P4,
|
||||
typename P5, typename P6, typename P7>
|
||||
MUST_USE_RESULT MaybeObject* CallWithReturnValue(
|
||||
R (*function)(P1, P2, P3, P4, P5, P6, P7),
|
||||
P1 p1,
|
||||
P2 p2,
|
||||
P3 p3,
|
||||
P4 p4,
|
||||
P5 p5,
|
||||
P6 p6,
|
||||
P7 p7) {
|
||||
int collections = isolate_->heap()->gc_count();
|
||||
Handle<Object> result = (*function)(p1, p2, p3, p4, p5, p6, p7);
|
||||
return (collections == isolate_->heap()->gc_count())
|
||||
? *result
|
||||
: reinterpret_cast<MaybeObject*>(Failure::RetryAfterGC());
|
||||
}
|
||||
|
||||
private:
|
||||
Isolate* isolate_;
|
||||
};
|
||||
|
||||
|
||||
} } // namespace v8::internal
|
||||
|
||||
#endif // V8_FACTORY_H_
|
||||
|
Loading…
Reference in New Issue
Block a user