| OLD | NEW |
| 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2008 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 667 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 678 } | 678 } |
| 679 | 679 |
| 680 // Find source and name for the requested script. | 680 // Find source and name for the requested script. |
| 681 Handle<String> source_code = Bootstrapper::NativesSourceLookup(index); | 681 Handle<String> source_code = Bootstrapper::NativesSourceLookup(index); |
| 682 Vector<const char> name = Natives::GetScriptName(index); | 682 Vector<const char> name = Natives::GetScriptName(index); |
| 683 Handle<String> script_name = Factory::NewStringFromAscii(name); | 683 Handle<String> script_name = Factory::NewStringFromAscii(name); |
| 684 | 684 |
| 685 // Compile the script. | 685 // Compile the script. |
| 686 bool allow_natives_syntax = FLAG_allow_natives_syntax; | 686 bool allow_natives_syntax = FLAG_allow_natives_syntax; |
| 687 FLAG_allow_natives_syntax = true; | 687 FLAG_allow_natives_syntax = true; |
| 688 Handle<JSFunction> boilerplate; | 688 Handle<SharedFunctionInfo> function_info; |
| 689 boilerplate = Compiler::Compile(source_code, | 689 function_info = Compiler::Compile(source_code, |
| 690 script_name, | 690 script_name, |
| 691 0, | 691 0, 0, NULL, NULL, |
| 692 0, | 692 Handle<String>::null(), |
| 693 NULL, | 693 NATIVES_CODE); |
| 694 NULL, | |
| 695 Handle<String>::null(), | |
| 696 NATIVES_CODE); | |
| 697 FLAG_allow_natives_syntax = allow_natives_syntax; | 694 FLAG_allow_natives_syntax = allow_natives_syntax; |
| 698 | 695 |
| 699 // Silently ignore stack overflows during compilation. | 696 // Silently ignore stack overflows during compilation. |
| 700 if (boilerplate.is_null()) { | 697 if (function_info.is_null()) { |
| 701 ASSERT(Top::has_pending_exception()); | 698 ASSERT(Top::has_pending_exception()); |
| 702 Top::clear_pending_exception(); | 699 Top::clear_pending_exception(); |
| 703 return false; | 700 return false; |
| 704 } | 701 } |
| 705 | 702 |
| 706 // Execute the boilerplate function in the debugger context. | 703 // Execute the shared function in the debugger context. |
| 707 Handle<Context> context = Top::global_context(); | 704 Handle<Context> context = Top::global_context(); |
| 708 bool caught_exception = false; | 705 bool caught_exception = false; |
| 709 Handle<JSFunction> function = | 706 Handle<JSFunction> function = |
| 710 Factory::NewFunctionFromBoilerplate(boilerplate, context); | 707 Factory::NewFunctionFromSharedFunctionInfo(function_info, context); |
| 711 Handle<Object> result = | 708 Handle<Object> result = |
| 712 Execution::TryCall(function, Handle<Object>(context->global()), | 709 Execution::TryCall(function, Handle<Object>(context->global()), |
| 713 0, NULL, &caught_exception); | 710 0, NULL, &caught_exception); |
| 714 | 711 |
| 715 // Check for caught exceptions. | 712 // Check for caught exceptions. |
| 716 if (caught_exception) { | 713 if (caught_exception) { |
| 717 Handle<Object> message = MessageHandler::MakeMessageObject( | 714 Handle<Object> message = MessageHandler::MakeMessageObject( |
| 718 "error_loading_debugger", NULL, Vector<Handle<Object> >::empty(), | 715 "error_loading_debugger", NULL, Vector<Handle<Object> >::empty(), |
| 719 Handle<String>()); | 716 Handle<String>()); |
| 720 MessageHandler::ReportMessage(NULL, message); | 717 MessageHandler::ReportMessage(NULL, message); |
| (...skipping 1314 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2035 if (caught_exception) { | 2032 if (caught_exception) { |
| 2036 return; | 2033 return; |
| 2037 } | 2034 } |
| 2038 // Process debug event. | 2035 // Process debug event. |
| 2039 ProcessDebugEvent(v8::AfterCompile, | 2036 ProcessDebugEvent(v8::AfterCompile, |
| 2040 Handle<JSObject>::cast(event_data), | 2037 Handle<JSObject>::cast(event_data), |
| 2041 true); | 2038 true); |
| 2042 } | 2039 } |
| 2043 | 2040 |
| 2044 | 2041 |
| 2045 void Debugger::OnNewFunction(Handle<JSFunction> function) { | |
| 2046 return; | |
| 2047 HandleScope scope; | |
| 2048 | |
| 2049 // Bail out based on state or if there is no listener for this event | |
| 2050 if (Debug::InDebugger()) return; | |
| 2051 if (compiling_natives()) return; | |
| 2052 if (!Debugger::EventActive(v8::NewFunction)) return; | |
| 2053 | |
| 2054 // Enter the debugger. | |
| 2055 EnterDebugger debugger; | |
| 2056 if (debugger.FailedToEnter()) return; | |
| 2057 | |
| 2058 // Create the event object. | |
| 2059 bool caught_exception = false; | |
| 2060 Handle<Object> event_data = MakeNewFunctionEvent(function, &caught_exception); | |
| 2061 // Bail out and don't call debugger if exception. | |
| 2062 if (caught_exception) { | |
| 2063 return; | |
| 2064 } | |
| 2065 // Process debug event. | |
| 2066 ProcessDebugEvent(v8::NewFunction, Handle<JSObject>::cast(event_data), true); | |
| 2067 } | |
| 2068 | |
| 2069 | |
| 2070 void Debugger::OnScriptCollected(int id) { | 2042 void Debugger::OnScriptCollected(int id) { |
| 2071 HandleScope scope; | 2043 HandleScope scope; |
| 2072 | 2044 |
| 2073 // No more to do if not debugging. | 2045 // No more to do if not debugging. |
| 2074 if (!IsDebuggerActive()) return; | 2046 if (!IsDebuggerActive()) return; |
| 2075 if (!Debugger::EventActive(v8::ScriptCollected)) return; | 2047 if (!Debugger::EventActive(v8::ScriptCollected)) return; |
| 2076 | 2048 |
| 2077 // Enter the debugger. | 2049 // Enter the debugger. |
| 2078 EnterDebugger debugger; | 2050 EnterDebugger debugger; |
| 2079 if (debugger.FailedToEnter()) return; | 2051 if (debugger.FailedToEnter()) return; |
| (...skipping 726 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2806 { | 2778 { |
| 2807 Locker locker; | 2779 Locker locker; |
| 2808 Debugger::CallMessageDispatchHandler(); | 2780 Debugger::CallMessageDispatchHandler(); |
| 2809 } | 2781 } |
| 2810 } | 2782 } |
| 2811 } | 2783 } |
| 2812 | 2784 |
| 2813 #endif // ENABLE_DEBUGGER_SUPPORT | 2785 #endif // ENABLE_DEBUGGER_SUPPORT |
| 2814 | 2786 |
| 2815 } } // namespace v8::internal | 2787 } } // namespace v8::internal |
| OLD | NEW |