Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(6)

Side by Side Diff: src/frames.cc

Issue 1174593003: [frames] No GC is allowed while using the unhandlified TranslatedState. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "src/frames.h" 5 #include "src/frames.h"
6 6
7 #include <sstream> 7 #include <sstream>
8 8
9 #include "src/v8.h" 9 #include "src/v8.h"
10 10
(...skipping 868 matching lines...) Expand 10 before | Expand all | Expand 10 after
879 879
880 // Delegate to JS frame in absence of turbofan deoptimization. 880 // Delegate to JS frame in absence of turbofan deoptimization.
881 // TODO(turbofan): Revisit once we support deoptimization across the board. 881 // TODO(turbofan): Revisit once we support deoptimization across the board.
882 if (LookupCode()->is_turbofanned() && function()->shared()->asm_function() && 882 if (LookupCode()->is_turbofanned() && function()->shared()->asm_function() &&
883 !FLAG_turbo_asm_deoptimization) { 883 !FLAG_turbo_asm_deoptimization) {
884 return JavaScriptFrame::Summarize(frames); 884 return JavaScriptFrame::Summarize(frames);
885 } 885 }
886 886
887 // We create the summary in reverse order because the frames 887 // We create the summary in reverse order because the frames
888 // in the deoptimization translation are ordered bottom-to-top. 888 // in the deoptimization translation are ordered bottom-to-top.
889 DisallowHeapAllocation no_gc;
889 TranslatedState state(this); 890 TranslatedState state(this);
890 bool is_constructor = IsConstructor(); 891 bool is_constructor = IsConstructor();
891 for (TranslatedFrame const& frame : state) { 892 for (TranslatedFrame const& frame : state) {
892 switch (frame.kind()) { 893 switch (frame.kind()) {
893 case TranslatedFrame::kFunction: { 894 case TranslatedFrame::kFunction: {
894 BailoutId const ast_id = frame.node_id(); 895 BailoutId const ast_id = frame.node_id();
895 JSFunction* const function = frame.raw_function(); 896 JSFunction* const function = frame.raw_function();
896 897
897 // Get the correct receiver in the optimized frame. 898 // Get the correct receiver in the optimized frame.
898 Object* receiver = frame.front().GetRawValue(); 899 Object* receiver = frame.front().GetRawValue();
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after
980 DCHECK(functions->length() == 0); 981 DCHECK(functions->length() == 0);
981 DCHECK(is_optimized()); 982 DCHECK(is_optimized());
982 983
983 // Delegate to JS frame in absence of turbofan deoptimization. 984 // Delegate to JS frame in absence of turbofan deoptimization.
984 // TODO(turbofan): Revisit once we support deoptimization across the board. 985 // TODO(turbofan): Revisit once we support deoptimization across the board.
985 if (LookupCode()->is_turbofanned() && function()->shared()->asm_function() && 986 if (LookupCode()->is_turbofanned() && function()->shared()->asm_function() &&
986 !FLAG_turbo_asm_deoptimization) { 987 !FLAG_turbo_asm_deoptimization) {
987 return JavaScriptFrame::GetFunctions(functions); 988 return JavaScriptFrame::GetFunctions(functions);
988 } 989 }
989 990
991 DisallowHeapAllocation no_gc;
990 TranslatedState state(this); 992 TranslatedState state(this);
991 for (TranslatedFrame const& frame : state) { 993 for (TranslatedFrame const& frame : state) {
992 if (frame.kind() == TranslatedFrame::kFunction) { 994 if (frame.kind() == TranslatedFrame::kFunction) {
993 functions->Add(frame.raw_function()); 995 functions->Add(frame.raw_function());
994 } 996 }
995 } 997 }
996 } 998 }
997 999
998 1000
999 int ArgumentsAdaptorFrame::GetNumberOfIncomingArguments() const { 1001 int ArgumentsAdaptorFrame::GetNumberOfIncomingArguments() const {
(...skipping 438 matching lines...) Expand 10 before | Expand all | Expand 10 after
1438 for (StackFrameIterator it(isolate); !it.done(); it.Advance()) { 1440 for (StackFrameIterator it(isolate); !it.done(); it.Advance()) {
1439 StackFrame* frame = AllocateFrameCopy(it.frame(), zone); 1441 StackFrame* frame = AllocateFrameCopy(it.frame(), zone);
1440 list.Add(frame, zone); 1442 list.Add(frame, zone);
1441 } 1443 }
1442 return list.ToVector(); 1444 return list.ToVector();
1443 } 1445 }
1444 1446
1445 1447
1446 } // namespace internal 1448 } // namespace internal
1447 } // namespace v8 1449 } // namespace v8
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698