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

Side by Side Diff: src/runtime.cc

Issue 10536142: Revert r11782, r11783 and r11790 due to Webkit failures. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 8 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 | Annotate | Revision Log
« no previous file with comments | « src/parser.cc ('k') | src/scopes.h » ('j') | 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 // 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 2165 matching lines...) Expand 10 before | Expand all | Expand 10 after
2176 2176
2177 CONVERT_ARG_HANDLE_CHECKED(JSFunction, target, 0); 2177 CONVERT_ARG_HANDLE_CHECKED(JSFunction, target, 0);
2178 Handle<Object> code = args.at<Object>(1); 2178 Handle<Object> code = args.at<Object>(1);
2179 2179
2180 if (code->IsNull()) return *target; 2180 if (code->IsNull()) return *target;
2181 RUNTIME_ASSERT(code->IsJSFunction()); 2181 RUNTIME_ASSERT(code->IsJSFunction());
2182 Handle<JSFunction> source = Handle<JSFunction>::cast(code); 2182 Handle<JSFunction> source = Handle<JSFunction>::cast(code);
2183 Handle<SharedFunctionInfo> target_shared(target->shared()); 2183 Handle<SharedFunctionInfo> target_shared(target->shared());
2184 Handle<SharedFunctionInfo> source_shared(source->shared()); 2184 Handle<SharedFunctionInfo> source_shared(source->shared());
2185 2185
2186 if (!JSFunction::EnsureCompiled(source, KEEP_EXCEPTION)) { 2186 if (!source->is_compiled() &&
2187 !JSFunction::CompileLazy(source, KEEP_EXCEPTION)) {
2187 return Failure::Exception(); 2188 return Failure::Exception();
2188 } 2189 }
2189 2190
2190 // Set the code, scope info, formal parameter count, and the length 2191 // Set the code, scope info, formal parameter count, and the length
2191 // of the target shared function info. Set the source code of the 2192 // of the target shared function info. Set the source code of the
2192 // target function to undefined. SetCode is only used for built-in 2193 // target function to undefined. SetCode is only used for built-in
2193 // constructors like String, Array, and Object, and some web code 2194 // constructors like String, Array, and Object, and some web code
2194 // doesn't like seeing source code for constructors. 2195 // doesn't like seeing source code for constructors.
2195 target_shared->set_code(source_shared->code()); 2196 target_shared->set_code(source_shared->code());
2196 target_shared->set_scope_info(source_shared->scope_info()); 2197 target_shared->set_scope_info(source_shared->scope_info());
(...skipping 2650 matching lines...) Expand 10 before | Expand all | Expand 10 after
4847 } 4848 }
4848 return isolate->heap()->true_value(); 4849 return isolate->heap()->true_value();
4849 } 4850 }
4850 4851
4851 4852
4852 // Set one shot breakpoints for the callback function that is passed to a 4853 // Set one shot breakpoints for the callback function that is passed to a
4853 // built-in function such as Array.forEach to enable stepping into the callback. 4854 // built-in function such as Array.forEach to enable stepping into the callback.
4854 RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugPrepareStepInIfStepping) { 4855 RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugPrepareStepInIfStepping) {
4855 Debug* debug = isolate->debug(); 4856 Debug* debug = isolate->debug();
4856 if (!debug->IsStepping()) return NULL; 4857 if (!debug->IsStepping()) return NULL;
4857 CONVERT_ARG_HANDLE_CHECKED(JSFunction, callback, 0); 4858 CONVERT_ARG_CHECKED(Object, callback, 0);
4858 HandleScope scope(isolate); 4859 HandleScope scope(isolate);
4860 Handle<SharedFunctionInfo> shared_info(JSFunction::cast(callback)->shared());
4859 // When leaving the callback, step out has been activated, but not performed 4861 // When leaving the callback, step out has been activated, but not performed
4860 // if we do not leave the builtin. To be able to step into the callback 4862 // if we do not leave the builtin. To be able to step into the callback
4861 // again, we need to clear the step out at this point. 4863 // again, we need to clear the step out at this point.
4862 debug->ClearStepOut(); 4864 debug->ClearStepOut();
4863 debug->FloodWithOneShot(callback); 4865 debug->FloodWithOneShot(shared_info);
4864 return NULL; 4866 return NULL;
4865 } 4867 }
4866 4868
4867 4869
4868 // Set a local property, even if it is READ_ONLY. If the property does not 4870 // Set a local property, even if it is READ_ONLY. If the property does not
4869 // exist, it will be added with attributes NONE. 4871 // exist, it will be added with attributes NONE.
4870 RUNTIME_FUNCTION(MaybeObject*, Runtime_IgnoreAttributesAndSetProperty) { 4872 RUNTIME_FUNCTION(MaybeObject*, Runtime_IgnoreAttributesAndSetProperty) {
4871 NoHandleAllocation ha; 4873 NoHandleAllocation ha;
4872 RUNTIME_ASSERT(args.length() == 3 || args.length() == 4); 4874 RUNTIME_ASSERT(args.length() == 3 || args.length() == 4);
4873 CONVERT_ARG_CHECKED(JSObject, object, 0); 4875 CONVERT_ARG_CHECKED(JSObject, object, 0);
(...skipping 3257 matching lines...) Expand 10 before | Expand all | Expand 10 after
8131 // the shared part of the function. Since the receiver is 8133 // the shared part of the function. Since the receiver is
8132 // ignored anyway, we use the global object as the receiver 8134 // ignored anyway, we use the global object as the receiver
8133 // instead of a new JSFunction object. This way, errors are 8135 // instead of a new JSFunction object. This way, errors are
8134 // reported the same way whether or not 'Function' is called 8136 // reported the same way whether or not 'Function' is called
8135 // using 'new'. 8137 // using 'new'.
8136 return isolate->context()->global(); 8138 return isolate->context()->global();
8137 } 8139 }
8138 } 8140 }
8139 8141
8140 // The function should be compiled for the optimization hints to be 8142 // The function should be compiled for the optimization hints to be
8141 // available. 8143 // available. We cannot use EnsureCompiled because that forces a
8142 JSFunction::EnsureCompiled(function, CLEAR_EXCEPTION); 8144 // compilation through the shared function info which makes it
8145 // impossible for us to optimize.
8146 if (!function->is_compiled()) {
8147 JSFunction::CompileLazy(function, CLEAR_EXCEPTION);
8148 }
8143 8149
8144 Handle<SharedFunctionInfo> shared(function->shared(), isolate); 8150 Handle<SharedFunctionInfo> shared(function->shared(), isolate);
8145 if (!function->has_initial_map() && 8151 if (!function->has_initial_map() &&
8146 shared->IsInobjectSlackTrackingInProgress()) { 8152 shared->IsInobjectSlackTrackingInProgress()) {
8147 // The tracking is already in progress for another function. We can only 8153 // The tracking is already in progress for another function. We can only
8148 // track one initial_map at a time, so we force the completion before the 8154 // track one initial_map at a time, so we force the completion before the
8149 // function is called as a constructor for the first time. 8155 // function is called as a constructor for the first time.
8150 shared->CompleteInobjectSlackTracking(); 8156 shared->CompleteInobjectSlackTracking();
8151 } 8157 }
8152 8158
(...skipping 2989 matching lines...) Expand 10 before | Expand all | Expand 10 after
11142 Handle<SharedFunctionInfo> shared_info(function_->shared()); 11148 Handle<SharedFunctionInfo> shared_info(function_->shared());
11143 Handle<ScopeInfo> scope_info(shared_info->scope_info()); 11149 Handle<ScopeInfo> scope_info(shared_info->scope_info());
11144 if (shared_info->script() == isolate->heap()->undefined_value()) { 11150 if (shared_info->script() == isolate->heap()->undefined_value()) {
11145 while (context_->closure() == *function_) { 11151 while (context_->closure() == *function_) {
11146 context_ = Handle<Context>(context_->previous(), isolate_); 11152 context_ = Handle<Context>(context_->previous(), isolate_);
11147 } 11153 }
11148 return; 11154 return;
11149 } 11155 }
11150 11156
11151 // Get the debug info (create it if it does not exist). 11157 // Get the debug info (create it if it does not exist).
11152 if (!isolate->debug()->EnsureDebugInfo(shared_info, function_)) { 11158 if (!isolate->debug()->EnsureDebugInfo(shared_info)) {
11153 // Return if ensuring debug info failed. 11159 // Return if ensuring debug info failed.
11154 return; 11160 return;
11155 } 11161 }
11156 Handle<DebugInfo> debug_info = Debug::GetDebugInfo(shared_info); 11162 Handle<DebugInfo> debug_info = Debug::GetDebugInfo(shared_info);
11157 11163
11158 // Find the break point where execution has stopped. 11164 // Find the break point where execution has stopped.
11159 BreakLocationIterator break_location_iterator(debug_info, 11165 BreakLocationIterator break_location_iterator(debug_info,
11160 ALL_BREAK_LOCATIONS); 11166 ALL_BREAK_LOCATIONS);
11161 break_location_iterator.FindBreakLocationFromAddress(frame->pc()); 11167 break_location_iterator.FindBreakLocationFromAddress(frame->pc());
11162 if (break_location_iterator.IsExit()) { 11168 if (break_location_iterator.IsExit()) {
(...skipping 502 matching lines...) Expand 10 before | Expand all | Expand 10 after
11665 Handle<SharedFunctionInfo> shared(fun->shared()); 11671 Handle<SharedFunctionInfo> shared(fun->shared());
11666 // Find the number of break points 11672 // Find the number of break points
11667 Handle<Object> break_locations = Debug::GetSourceBreakLocations(shared); 11673 Handle<Object> break_locations = Debug::GetSourceBreakLocations(shared);
11668 if (break_locations->IsUndefined()) return isolate->heap()->undefined_value(); 11674 if (break_locations->IsUndefined()) return isolate->heap()->undefined_value();
11669 // Return array as JS array 11675 // Return array as JS array
11670 return *isolate->factory()->NewJSArrayWithElements( 11676 return *isolate->factory()->NewJSArrayWithElements(
11671 Handle<FixedArray>::cast(break_locations)); 11677 Handle<FixedArray>::cast(break_locations));
11672 } 11678 }
11673 11679
11674 11680
11681 // Set a break point in a function
11682 // args[0]: function
11683 // args[1]: number: break source position (within the function source)
11684 // args[2]: number: break point object
11685 RUNTIME_FUNCTION(MaybeObject*, Runtime_SetFunctionBreakPoint) {
11686 HandleScope scope(isolate);
11687 ASSERT(args.length() == 3);
11688 CONVERT_ARG_HANDLE_CHECKED(JSFunction, fun, 0);
11689 Handle<SharedFunctionInfo> shared(fun->shared());
11690 CONVERT_NUMBER_CHECKED(int32_t, source_position, Int32, args[1]);
11691 RUNTIME_ASSERT(source_position >= 0);
11692 Handle<Object> break_point_object_arg = args.at<Object>(2);
11693
11694 // Set break point.
11695 isolate->debug()->SetBreakPoint(shared, break_point_object_arg,
11696 &source_position);
11697
11698 return Smi::FromInt(source_position);
11699 }
11700
11701
11675 Object* Runtime::FindSharedFunctionInfoInScript(Isolate* isolate, 11702 Object* Runtime::FindSharedFunctionInfoInScript(Isolate* isolate,
11676 Handle<Script> script, 11703 Handle<Script> script,
11677 int position) { 11704 int position) {
11678 // The below fix-point iteration depends on all functions that cannot be
11679 // compiled lazily without a context to not be compiled at all. Compilation
11680 // will be triggered at points where we do not need a context.
11681 isolate->debug()->PrepareForBreakPoints();
11682
11683 // Iterate the heap looking for SharedFunctionInfo generated from the 11705 // Iterate the heap looking for SharedFunctionInfo generated from the
11684 // script. The inner most SharedFunctionInfo containing the source position 11706 // script. The inner most SharedFunctionInfo containing the source position
11685 // for the requested break point is found. 11707 // for the requested break point is found.
11686 // NOTE: This might require several heap iterations. If the SharedFunctionInfo 11708 // NOTE: This might require several heap iterations. If the SharedFunctionInfo
11687 // which is found is not compiled it is compiled and the heap is iterated 11709 // which is found is not compiled it is compiled and the heap is iterated
11688 // again as the compilation might create inner functions from the newly 11710 // again as the compilation might create inner functions from the newly
11689 // compiled function and the actual requested break point might be in one of 11711 // compiled function and the actual requested break point might be in one of
11690 // these functions. 11712 // these functions.
11691 bool done = false; 11713 bool done = false;
11692 // The current candidate for the source position: 11714 // The current candidate for the source position:
11693 int target_start_position = RelocInfo::kNoPosition; 11715 int target_start_position = RelocInfo::kNoPosition;
11694 Handle<SharedFunctionInfo> target; 11716 Handle<SharedFunctionInfo> target;
11695 while (!done) { 11717 while (!done) {
11696 { // Extra scope for iterator and no-allocation. 11718 { // Extra scope for iterator and no-allocation.
11697 isolate->heap()->EnsureHeapIsIterable(); 11719 isolate->heap()->EnsureHeapIsIterable();
11698 AssertNoAllocation no_alloc_during_heap_iteration; 11720 AssertNoAllocation no_alloc_during_heap_iteration;
11699 HeapIterator iterator; 11721 HeapIterator iterator;
11700 for (HeapObject* obj = iterator.next(); 11722 for (HeapObject* obj = iterator.next();
11701 obj != NULL; obj = iterator.next()) { 11723 obj != NULL; obj = iterator.next()) {
11702 if (obj->IsSharedFunctionInfo()) { 11724 if (obj->IsSharedFunctionInfo()) {
11703 Handle<SharedFunctionInfo> shared(SharedFunctionInfo::cast(obj)); 11725 Handle<SharedFunctionInfo> shared(SharedFunctionInfo::cast(obj));
11704 if (!shared->allows_lazy_compilation_without_context() &&
11705 !shared->is_compiled()) {
11706 // Skip functions that we cannot compile lazily without a context,
11707 // which is not available here.
11708 continue;
11709 }
11710 if (shared->script() == *script) { 11726 if (shared->script() == *script) {
11711 // If the SharedFunctionInfo found has the requested script data and 11727 // If the SharedFunctionInfo found has the requested script data and
11712 // contains the source position it is a candidate. 11728 // contains the source position it is a candidate.
11713 int start_position = shared->function_token_position(); 11729 int start_position = shared->function_token_position();
11714 if (start_position == RelocInfo::kNoPosition) { 11730 if (start_position == RelocInfo::kNoPosition) {
11715 start_position = shared->start_position(); 11731 start_position = shared->start_position();
11716 } 11732 }
11717 if (start_position <= position && 11733 if (start_position <= position &&
11718 position <= shared->end_position()) { 11734 position <= shared->end_position()) {
11719 // If there is no candidate or this function is within the current 11735 // If there is no candidate or this function is within the current
(...skipping 24 matching lines...) Expand all
11744 } 11760 }
11745 } 11761 }
11746 } 11762 }
11747 } // End for loop. 11763 } // End for loop.
11748 } // End No allocation scope. 11764 } // End No allocation scope.
11749 11765
11750 if (target.is_null()) { 11766 if (target.is_null()) {
11751 return isolate->heap()->undefined_value(); 11767 return isolate->heap()->undefined_value();
11752 } 11768 }
11753 11769
11754 // If the candidate found is compiled we are done. 11770 // If the candidate found is compiled we are done. NOTE: when lazy
11771 // compilation of inner functions is introduced some additional checking
11772 // needs to be done here to compile inner functions.
11755 done = target->is_compiled(); 11773 done = target->is_compiled();
11756 if (!done) { 11774 if (!done) {
11757 // If the candidate is not compiled, compile it to reveal any inner 11775 // If the candidate is not compiled compile it to reveal any inner
11758 // functions which might contain the requested source position. This 11776 // functions which might contain the requested source position.
11759 // will compile all inner functions that cannot be compiled without a
11760 // context, because Compiler::BuildFunctionInfo checks whether the
11761 // debugger is active.
11762 SharedFunctionInfo::CompileLazy(target, KEEP_EXCEPTION); 11777 SharedFunctionInfo::CompileLazy(target, KEEP_EXCEPTION);
11763 } 11778 }
11764 } // End while loop. 11779 } // End while loop.
11765 11780
11766 return *target; 11781 return *target;
11767 } 11782 }
11768 11783
11769 11784
11770 // Set a break point in a function.
11771 // args[0]: function
11772 // args[1]: number: break source position (within the function source)
11773 // args[2]: number: break point object
11774 RUNTIME_FUNCTION(MaybeObject*, Runtime_SetFunctionBreakPoint) {
11775 HandleScope scope(isolate);
11776 ASSERT(args.length() == 3);
11777 CONVERT_ARG_HANDLE_CHECKED(JSFunction, function, 0);
11778 CONVERT_NUMBER_CHECKED(int32_t, source_position, Int32, args[1]);
11779 RUNTIME_ASSERT(source_position >= 0);
11780 Handle<Object> break_point_object_arg = args.at<Object>(2);
11781
11782 // Set break point.
11783 isolate->debug()->SetBreakPoint(function, break_point_object_arg,
11784 &source_position);
11785
11786 return Smi::FromInt(source_position);
11787 }
11788
11789
11790 // Changes the state of a break point in a script and returns source position 11785 // Changes the state of a break point in a script and returns source position
11791 // where break point was set. NOTE: Regarding performance see the NOTE for 11786 // where break point was set. NOTE: Regarding performance see the NOTE for
11792 // GetScriptFromScriptData. 11787 // GetScriptFromScriptData.
11793 // args[0]: script to set break point in 11788 // args[0]: script to set break point in
11794 // args[1]: number: break source position (within the script source) 11789 // args[1]: number: break source position (within the script source)
11795 // args[2]: number: break point object 11790 // args[2]: number: break point object
11796 RUNTIME_FUNCTION(MaybeObject*, Runtime_SetScriptBreakPoint) { 11791 RUNTIME_FUNCTION(MaybeObject*, Runtime_SetScriptBreakPoint) {
11797 HandleScope scope(isolate); 11792 HandleScope scope(isolate);
11798 ASSERT(args.length() == 3); 11793 ASSERT(args.length() == 3);
11799 CONVERT_ARG_HANDLE_CHECKED(JSValue, wrapper, 0); 11794 CONVERT_ARG_HANDLE_CHECKED(JSValue, wrapper, 0);
11800 CONVERT_NUMBER_CHECKED(int32_t, source_position, Int32, args[1]); 11795 CONVERT_NUMBER_CHECKED(int32_t, source_position, Int32, args[1]);
11801 RUNTIME_ASSERT(source_position >= 0); 11796 RUNTIME_ASSERT(source_position >= 0);
11802 Handle<Object> break_point_object_arg = args.at<Object>(2); 11797 Handle<Object> break_point_object_arg = args.at<Object>(2);
11803 11798
11804 // Get the script from the script wrapper. 11799 // Get the script from the script wrapper.
11805 RUNTIME_ASSERT(wrapper->value()->IsScript()); 11800 RUNTIME_ASSERT(wrapper->value()->IsScript());
11806 Handle<Script> script(Script::cast(wrapper->value())); 11801 Handle<Script> script(Script::cast(wrapper->value()));
11807 11802
11808 // Set break point. 11803 Object* result = Runtime::FindSharedFunctionInfoInScript(
11809 if (!isolate->debug()->SetBreakPointForScript(script, break_point_object_arg, 11804 isolate, script, source_position);
11810 &source_position)) { 11805 if (!result->IsUndefined()) {
11811 return isolate->heap()->undefined_value(); 11806 Handle<SharedFunctionInfo> shared(SharedFunctionInfo::cast(result));
11807 // Find position within function. The script position might be before the
11808 // source position of the first function.
11809 int position;
11810 if (shared->start_position() > source_position) {
11811 position = 0;
11812 } else {
11813 position = source_position - shared->start_position();
11814 }
11815 isolate->debug()->SetBreakPoint(shared, break_point_object_arg, &position);
11816 position += shared->start_position();
11817 return Smi::FromInt(position);
11812 } 11818 }
11813 11819 return isolate->heap()->undefined_value();
11814 return Smi::FromInt(source_position);
11815 } 11820 }
11816 11821
11817 11822
11818 // Clear a break point 11823 // Clear a break point
11819 // args[0]: number: break point object 11824 // args[0]: number: break point object
11820 RUNTIME_FUNCTION(MaybeObject*, Runtime_ClearBreakPoint) { 11825 RUNTIME_FUNCTION(MaybeObject*, Runtime_ClearBreakPoint) {
11821 HandleScope scope(isolate); 11826 HandleScope scope(isolate);
11822 ASSERT(args.length() == 1); 11827 ASSERT(args.length() == 1);
11823 Handle<Object> break_point_object_arg = args.at<Object>(0); 11828 Handle<Object> break_point_object_arg = args.at<Object>(0);
11824 11829
(...skipping 703 matching lines...) Expand 10 before | Expand all | Expand 10 after
12528 return isolate->heap()->undefined_value(); 12533 return isolate->heap()->undefined_value();
12529 } 12534 }
12530 12535
12531 12536
12532 RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugDisassembleFunction) { 12537 RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugDisassembleFunction) {
12533 #ifdef DEBUG 12538 #ifdef DEBUG
12534 HandleScope scope(isolate); 12539 HandleScope scope(isolate);
12535 ASSERT(args.length() == 1); 12540 ASSERT(args.length() == 1);
12536 // Get the function and make sure it is compiled. 12541 // Get the function and make sure it is compiled.
12537 CONVERT_ARG_HANDLE_CHECKED(JSFunction, func, 0); 12542 CONVERT_ARG_HANDLE_CHECKED(JSFunction, func, 0);
12538 if (!JSFunction::EnsureCompiled(func, KEEP_EXCEPTION)) { 12543 if (!JSFunction::CompileLazy(func, KEEP_EXCEPTION)) {
12539 return Failure::Exception(); 12544 return Failure::Exception();
12540 } 12545 }
12541 func->code()->PrintLn(); 12546 func->code()->PrintLn();
12542 #endif // DEBUG 12547 #endif // DEBUG
12543 return isolate->heap()->undefined_value(); 12548 return isolate->heap()->undefined_value();
12544 } 12549 }
12545 12550
12546 12551
12547 RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugDisassembleConstructor) { 12552 RUNTIME_FUNCTION(MaybeObject*, Runtime_DebugDisassembleConstructor) {
12548 #ifdef DEBUG 12553 #ifdef DEBUG
12549 HandleScope scope(isolate); 12554 HandleScope scope(isolate);
12550 ASSERT(args.length() == 1); 12555 ASSERT(args.length() == 1);
12551 // Get the function and make sure it is compiled. 12556 // Get the function and make sure it is compiled.
12552 CONVERT_ARG_HANDLE_CHECKED(JSFunction, func, 0); 12557 CONVERT_ARG_HANDLE_CHECKED(JSFunction, func, 0);
12553 if (!JSFunction::EnsureCompiled(func, KEEP_EXCEPTION)) { 12558 if (!JSFunction::CompileLazy(func, KEEP_EXCEPTION)) {
12554 return Failure::Exception(); 12559 return Failure::Exception();
12555 } 12560 }
12556 func->shared()->construct_stub()->PrintLn(); 12561 func->shared()->construct_stub()->PrintLn();
12557 #endif // DEBUG 12562 #endif // DEBUG
12558 return isolate->heap()->undefined_value(); 12563 return isolate->heap()->undefined_value();
12559 } 12564 }
12560 12565
12561 12566
12562 RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionGetInferredName) { 12567 RUNTIME_FUNCTION(MaybeObject*, Runtime_FunctionGetInferredName) {
12563 NoHandleAllocation ha; 12568 NoHandleAllocation ha;
(...skipping 1026 matching lines...) Expand 10 before | Expand all | Expand 10 after
13590 // Handle last resort GC and make sure to allow future allocations 13595 // Handle last resort GC and make sure to allow future allocations
13591 // to grow the heap without causing GCs (if possible). 13596 // to grow the heap without causing GCs (if possible).
13592 isolate->counters()->gc_last_resort_from_js()->Increment(); 13597 isolate->counters()->gc_last_resort_from_js()->Increment();
13593 isolate->heap()->CollectAllGarbage(Heap::kNoGCFlags, 13598 isolate->heap()->CollectAllGarbage(Heap::kNoGCFlags,
13594 "Runtime::PerformGC"); 13599 "Runtime::PerformGC");
13595 } 13600 }
13596 } 13601 }
13597 13602
13598 13603
13599 } } // namespace v8::internal 13604 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/parser.cc ('k') | src/scopes.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698