| Index: src/deoptimizer.cc
|
| diff --git a/src/deoptimizer.cc b/src/deoptimizer.cc
|
| index 26410e9de56faedfbd74a05d0e5433613cf54629..8ef937d649f1b049f5dd5eacf6e8d407a67750fd 100644
|
| --- a/src/deoptimizer.cc
|
| +++ b/src/deoptimizer.cc
|
| @@ -285,7 +285,7 @@ void Deoptimizer::VisitAllOptimizedFunctionsForContext(
|
| Context* context, OptimizedFunctionVisitor* visitor) {
|
| Isolate* isolate = context->GetIsolate();
|
| ZoneScope zone_scope(isolate->runtime_zone(), DELETE_ON_EXIT);
|
| - AssertNoAllocation no_allocation;
|
| + DisallowHeapAllocation no_allocation;
|
|
|
| ASSERT(context->IsNativeContext());
|
|
|
| @@ -313,7 +313,7 @@ void Deoptimizer::VisitAllOptimizedFunctionsForContext(
|
| void Deoptimizer::VisitAllOptimizedFunctions(
|
| Isolate* isolate,
|
| OptimizedFunctionVisitor* visitor) {
|
| - AssertNoAllocation no_allocation;
|
| + DisallowHeapAllocation no_allocation;
|
|
|
| // Run through the list of all native contexts and deoptimize.
|
| Object* context = isolate->heap()->native_contexts_list();
|
| @@ -335,7 +335,7 @@ static void PartitionOptimizedFunctions(Context* context,
|
| ZoneList<Code*>* partitions,
|
| Zone* zone,
|
| Object* undefined) {
|
| - AssertNoAllocation no_allocation;
|
| + DisallowHeapAllocation no_allocation;
|
| Object* current = context->get(Context::OPTIMIZED_FUNCTIONS_LIST);
|
| Object* remainder_head = undefined;
|
| Object* remainder_tail = undefined;
|
| @@ -388,7 +388,7 @@ class DeoptimizeWithMatchingCodeFilter : public OptimizedFunctionFilter {
|
|
|
|
|
| void Deoptimizer::DeoptimizeAll(Isolate* isolate) {
|
| - AssertNoAllocation no_allocation;
|
| + DisallowHeapAllocation no_allocation;
|
|
|
| if (FLAG_trace_deopt) {
|
| PrintF("[deoptimize all contexts]\n");
|
| @@ -400,7 +400,7 @@ void Deoptimizer::DeoptimizeAll(Isolate* isolate) {
|
|
|
|
|
| void Deoptimizer::DeoptimizeGlobalObject(JSObject* object) {
|
| - AssertNoAllocation no_allocation;
|
| + DisallowHeapAllocation no_allocation;
|
| DeoptimizeAllFilter filter;
|
| if (object->IsJSGlobalProxy()) {
|
| Object* proto = object->GetPrototype();
|
| @@ -451,7 +451,7 @@ void Deoptimizer::DeoptimizeAllFunctionsForContext(
|
|
|
| void Deoptimizer::DeoptimizeAllFunctionsWith(Isolate* isolate,
|
| OptimizedFunctionFilter* filter) {
|
| - AssertNoAllocation no_allocation;
|
| + DisallowHeapAllocation no_allocation;
|
|
|
| // Run through the list of all native contexts and deoptimize.
|
| Object* context = isolate->heap()->native_contexts_list();
|
| @@ -558,7 +558,10 @@ Deoptimizer::Deoptimizer(Isolate* isolate,
|
| ? StackFrame::STUB
|
| : StackFrame::JAVA_SCRIPT;
|
| trace_ = TraceEnabledFor(type, frame_type);
|
| - ASSERT(HEAP->allow_allocation(false));
|
| +#ifdef DEBUG
|
| + CHECK(AllowHeapAllocation::IsAllowed());
|
| + disallow_heap_allocation_ = new DisallowHeapAllocation();
|
| +#endif // DEBUG
|
| unsigned size = ComputeInputFrameSize();
|
| input_ = new(size) FrameDescription(size, function);
|
| input_->SetFrameType(frame_type);
|
| @@ -608,6 +611,7 @@ void Deoptimizer::PrintFunctionName() {
|
|
|
| Deoptimizer::~Deoptimizer() {
|
| ASSERT(input_ == NULL && output_ == NULL);
|
| + ASSERT(disallow_heap_allocation_ == NULL);
|
| }
|
|
|
|
|
| @@ -619,7 +623,12 @@ void Deoptimizer::DeleteFrameDescriptions() {
|
| delete[] output_;
|
| input_ = NULL;
|
| output_ = NULL;
|
| - ASSERT(!HEAP->allow_allocation(true));
|
| +#ifdef DEBUG
|
| + CHECK(!AllowHeapAllocation::IsAllowed());
|
| + CHECK(disallow_heap_allocation_ != NULL);
|
| + delete disallow_heap_allocation_;
|
| + disallow_heap_allocation_ = NULL;
|
| +#endif // DEBUG
|
| }
|
|
|
|
|
| @@ -2855,7 +2864,7 @@ Vector<SlotRef> SlotRef::ComputeSlotMappingForArguments(
|
| JavaScriptFrame* frame,
|
| int inlined_jsframe_index,
|
| int formal_parameter_count) {
|
| - AssertNoAllocation no_gc;
|
| + DisallowHeapAllocation no_gc;
|
| int deopt_index = Safepoint::kNoDeoptimizationIndex;
|
| DeoptimizationInputData* data =
|
| static_cast<OptimizedFrame*>(frame)->GetDeoptimizationData(&deopt_index);
|
|
|