OLD | NEW |
1 // Copyright 2015 the V8 project authors. All rights reserved. | 1 // Copyright 2015 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/debug/debug-evaluate.h" | 5 #include "src/debug/debug-evaluate.h" |
6 | 6 |
7 #include "src/accessors.h" | 7 #include "src/accessors.h" |
8 #include "src/contexts.h" | 8 #include "src/contexts.h" |
9 #include "src/debug/debug.h" | 9 #include "src/debug/debug.h" |
10 #include "src/debug/debug-frames.h" | 10 #include "src/debug/debug-frames.h" |
(...skipping 143 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
154 ContextChainElement context_chain_element; | 154 ContextChainElement context_chain_element; |
155 context_chain_element.original_context = it.CurrentContext(); | 155 context_chain_element.original_context = it.CurrentContext(); |
156 context_chain_element.materialized_object = materialized_function; | 156 context_chain_element.materialized_object = materialized_function; |
157 context_chain_element.scope_info = it.CurrentScopeInfo(); | 157 context_chain_element.scope_info = it.CurrentScopeInfo(); |
158 context_chain_.Add(context_chain_element); | 158 context_chain_.Add(context_chain_element); |
159 | 159 |
160 stop = true; | 160 stop = true; |
161 RecordContextsInChain(&inner_context, with_context, with_context); | 161 RecordContextsInChain(&inner_context, with_context, with_context); |
162 } else if (scope_type == ScopeIterator::ScopeTypeCatch || | 162 } else if (scope_type == ScopeIterator::ScopeTypeCatch || |
163 scope_type == ScopeIterator::ScopeTypeWith) { | 163 scope_type == ScopeIterator::ScopeTypeWith) { |
164 Handle<Context> cloned_context = | 164 Handle<Context> cloned_context = Handle<Context>::cast( |
165 Handle<Context>::cast(FixedArray::CopySize( | 165 isolate->factory()->CopyFixedArray(it.CurrentContext())); |
166 it.CurrentContext(), it.CurrentContext()->length())); | |
167 | 166 |
168 ContextChainElement context_chain_element; | 167 ContextChainElement context_chain_element; |
169 context_chain_element.original_context = it.CurrentContext(); | 168 context_chain_element.original_context = it.CurrentContext(); |
170 context_chain_element.cloned_context = cloned_context; | 169 context_chain_element.cloned_context = cloned_context; |
171 context_chain_.Add(context_chain_element); | 170 context_chain_.Add(context_chain_element); |
172 | 171 |
173 RecordContextsInChain(&inner_context, cloned_context, cloned_context); | 172 RecordContextsInChain(&inner_context, cloned_context, cloned_context); |
174 } else if (scope_type == ScopeIterator::ScopeTypeBlock) { | 173 } else if (scope_type == ScopeIterator::ScopeTypeBlock) { |
175 Handle<JSObject> materialized_object = NewJSObjectWithNullProto(); | 174 Handle<JSObject> materialized_object = NewJSObjectWithNullProto(); |
176 frame_inspector.MaterializeStackLocals(materialized_object, | 175 frame_inspector.MaterializeStackLocals(materialized_object, |
177 it.CurrentScopeInfo()); | 176 it.CurrentScopeInfo()); |
178 if (it.HasContext()) { | 177 if (it.HasContext()) { |
179 Handle<Context> cloned_context = | 178 Handle<Context> cloned_context = Handle<Context>::cast( |
180 Handle<Context>::cast(FixedArray::CopySize( | 179 isolate->factory()->CopyFixedArray(it.CurrentContext())); |
181 it.CurrentContext(), it.CurrentContext()->length())); | |
182 Handle<Context> with_context = isolate->factory()->NewWithContext( | 180 Handle<Context> with_context = isolate->factory()->NewWithContext( |
183 function, cloned_context, materialized_object); | 181 function, cloned_context, materialized_object); |
184 | 182 |
185 ContextChainElement context_chain_element; | 183 ContextChainElement context_chain_element; |
186 context_chain_element.original_context = it.CurrentContext(); | 184 context_chain_element.original_context = it.CurrentContext(); |
187 context_chain_element.cloned_context = cloned_context; | 185 context_chain_element.cloned_context = cloned_context; |
188 context_chain_element.materialized_object = materialized_object; | 186 context_chain_element.materialized_object = materialized_object; |
189 context_chain_element.scope_info = it.CurrentScopeInfo(); | 187 context_chain_element.scope_info = it.CurrentScopeInfo(); |
190 context_chain_.Add(context_chain_element); | 188 context_chain_.Add(context_chain_element); |
191 | 189 |
(...skipping 118 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
310 // to materialize. | 308 // to materialize. |
311 return target; | 309 return target; |
312 } | 310 } |
313 | 311 |
314 return isolate_->factory()->NewCatchContext( | 312 return isolate_->factory()->NewCatchContext( |
315 function, target, isolate_->factory()->this_string(), receiver); | 313 function, target, isolate_->factory()->this_string(), receiver); |
316 } | 314 } |
317 | 315 |
318 } // namespace internal | 316 } // namespace internal |
319 } // namespace v8 | 317 } // namespace v8 |
OLD | NEW |