| OLD | NEW |
| 1 // Copyright 2014 the V8 project authors. All rights reserved. | 1 // Copyright 2014 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/factory.h" | 5 #include "src/factory.h" |
| 6 | 6 |
| 7 #include "src/allocation-site-scopes.h" | 7 #include "src/allocation-site-scopes.h" |
| 8 #include "src/base/bits.h" | 8 #include "src/base/bits.h" |
| 9 #include "src/bootstrapper.h" | 9 #include "src/bootstrapper.h" |
| 10 #include "src/conversions.h" | 10 #include "src/conversions.h" |
| (...skipping 2251 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2262 | 2262 |
| 2263 // We tenure the allocated string since it is referenced from the | 2263 // We tenure the allocated string since it is referenced from the |
| 2264 // number-string cache which lives in the old space. | 2264 // number-string cache which lives in the old space. |
| 2265 Handle<String> js_string = NewStringFromAsciiChecked(str, TENURED); | 2265 Handle<String> js_string = NewStringFromAsciiChecked(str, TENURED); |
| 2266 SetNumberStringCache(number, js_string); | 2266 SetNumberStringCache(number, js_string); |
| 2267 return js_string; | 2267 return js_string; |
| 2268 } | 2268 } |
| 2269 | 2269 |
| 2270 | 2270 |
| 2271 Handle<DebugInfo> Factory::NewDebugInfo(Handle<SharedFunctionInfo> shared) { | 2271 Handle<DebugInfo> Factory::NewDebugInfo(Handle<SharedFunctionInfo> shared) { |
| 2272 // Get the original code of the function. | |
| 2273 Handle<Code> code(shared->code()); | |
| 2274 | |
| 2275 // Create a copy of the code before allocating the debug info object to avoid | |
| 2276 // allocation while setting up the debug info object. | |
| 2277 Handle<Code> original_code(*Factory::CopyCode(code)); | |
| 2278 | |
| 2279 // Allocate initial fixed array for active break points before allocating the | 2272 // Allocate initial fixed array for active break points before allocating the |
| 2280 // debug info object to avoid allocation while setting up the debug info | 2273 // debug info object to avoid allocation while setting up the debug info |
| 2281 // object. | 2274 // object. |
| 2282 Handle<FixedArray> break_points( | 2275 Handle<FixedArray> break_points( |
| 2283 NewFixedArray(DebugInfo::kEstimatedNofBreakPointsInFunction)); | 2276 NewFixedArray(DebugInfo::kEstimatedNofBreakPointsInFunction)); |
| 2284 | 2277 |
| 2285 // Create and set up the debug info object. Debug info contains function, a | 2278 // Create and set up the debug info object. Debug info contains function, a |
| 2286 // copy of the original code, the executing code and initial fixed array for | 2279 // copy of the original code, the executing code and initial fixed array for |
| 2287 // active break points. | 2280 // active break points. |
| 2288 Handle<DebugInfo> debug_info = | 2281 Handle<DebugInfo> debug_info = |
| 2289 Handle<DebugInfo>::cast(NewStruct(DEBUG_INFO_TYPE)); | 2282 Handle<DebugInfo>::cast(NewStruct(DEBUG_INFO_TYPE)); |
| 2290 debug_info->set_shared(*shared); | 2283 debug_info->set_shared(*shared); |
| 2291 debug_info->set_original_code(*original_code); | 2284 debug_info->set_code(shared->code()); |
| 2292 debug_info->set_code(*code); | |
| 2293 debug_info->set_break_points(*break_points); | 2285 debug_info->set_break_points(*break_points); |
| 2294 | 2286 |
| 2295 // Link debug info to function. | 2287 // Link debug info to function. |
| 2296 shared->set_debug_info(*debug_info); | 2288 shared->set_debug_info(*debug_info); |
| 2297 | 2289 |
| 2298 return debug_info; | 2290 return debug_info; |
| 2299 } | 2291 } |
| 2300 | 2292 |
| 2301 | 2293 |
| 2302 Handle<JSObject> Factory::NewArgumentsObject(Handle<JSFunction> callee, | 2294 Handle<JSObject> Factory::NewArgumentsObject(Handle<JSFunction> callee, |
| (...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2427 } | 2419 } |
| 2428 | 2420 |
| 2429 | 2421 |
| 2430 Handle<Object> Factory::ToBoolean(bool value) { | 2422 Handle<Object> Factory::ToBoolean(bool value) { |
| 2431 return value ? true_value() : false_value(); | 2423 return value ? true_value() : false_value(); |
| 2432 } | 2424 } |
| 2433 | 2425 |
| 2434 | 2426 |
| 2435 } // namespace internal | 2427 } // namespace internal |
| 2436 } // namespace v8 | 2428 } // namespace v8 |
| OLD | NEW |