OLD | NEW |
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 31 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
42 #include "scopes.h" | 42 #include "scopes.h" |
43 #include "v8memory.h" | 43 #include "v8memory.h" |
44 | 44 |
45 namespace v8 { | 45 namespace v8 { |
46 namespace internal { | 46 namespace internal { |
47 | 47 |
48 | 48 |
49 #ifdef ENABLE_DEBUGGER_SUPPORT | 49 #ifdef ENABLE_DEBUGGER_SUPPORT |
50 | 50 |
51 | 51 |
52 void SetElementNonStrict(Handle<JSObject> object, | 52 void SetElementSloppy(Handle<JSObject> object, |
53 uint32_t index, | 53 uint32_t index, |
54 Handle<Object> value) { | 54 Handle<Object> value) { |
55 // Ignore return value from SetElement. It can only be a failure if there | 55 // Ignore return value from SetElement. It can only be a failure if there |
56 // are element setters causing exceptions and the debugger context has none | 56 // are element setters causing exceptions and the debugger context has none |
57 // of these. | 57 // of these. |
58 Handle<Object> no_failure = | 58 Handle<Object> no_failure = |
59 JSObject::SetElement(object, index, value, NONE, kNonStrictMode); | 59 JSObject::SetElement(object, index, value, NONE, kSloppyMode); |
60 ASSERT(!no_failure.is_null()); | 60 ASSERT(!no_failure.is_null()); |
61 USE(no_failure); | 61 USE(no_failure); |
62 } | 62 } |
63 | 63 |
64 | 64 |
65 // A simple implementation of dynamic programming algorithm. It solves | 65 // A simple implementation of dynamic programming algorithm. It solves |
66 // the problem of finding the difference of 2 arrays. It uses a table of results | 66 // the problem of finding the difference of 2 arrays. It uses a table of results |
67 // of subproblems. Each cell contains a number together with 2-bit flag | 67 // of subproblems. Each cell contains a number together with 2-bit flag |
68 // that helps building the chunk list. | 68 // that helps building the chunk list. |
69 class Differencer { | 69 class Differencer { |
(...skipping 282 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
352 public: | 352 public: |
353 explicit CompareOutputArrayWriter(Isolate* isolate) | 353 explicit CompareOutputArrayWriter(Isolate* isolate) |
354 : array_(isolate->factory()->NewJSArray(10)), current_size_(0) {} | 354 : array_(isolate->factory()->NewJSArray(10)), current_size_(0) {} |
355 | 355 |
356 Handle<JSArray> GetResult() { | 356 Handle<JSArray> GetResult() { |
357 return array_; | 357 return array_; |
358 } | 358 } |
359 | 359 |
360 void WriteChunk(int char_pos1, int char_pos2, int char_len1, int char_len2) { | 360 void WriteChunk(int char_pos1, int char_pos2, int char_len1, int char_len2) { |
361 Isolate* isolate = array_->GetIsolate(); | 361 Isolate* isolate = array_->GetIsolate(); |
362 SetElementNonStrict(array_, | 362 SetElementSloppy(array_, |
363 current_size_, | 363 current_size_, |
364 Handle<Object>(Smi::FromInt(char_pos1), isolate)); | 364 Handle<Object>(Smi::FromInt(char_pos1), isolate)); |
365 SetElementNonStrict(array_, | 365 SetElementSloppy(array_, |
366 current_size_ + 1, | 366 current_size_ + 1, |
367 Handle<Object>(Smi::FromInt(char_pos1 + char_len1), | 367 Handle<Object>(Smi::FromInt(char_pos1 + char_len1), |
368 isolate)); | 368 isolate)); |
369 SetElementNonStrict(array_, | 369 SetElementSloppy(array_, |
370 current_size_ + 2, | 370 current_size_ + 2, |
371 Handle<Object>(Smi::FromInt(char_pos2 + char_len2), | 371 Handle<Object>(Smi::FromInt(char_pos2 + char_len2), |
372 isolate)); | 372 isolate)); |
373 current_size_ += 3; | 373 current_size_ += 3; |
374 } | 374 } |
375 | 375 |
376 private: | 376 private: |
377 Handle<JSArray> array_; | 377 Handle<JSArray> array_; |
378 int current_size_; | 378 int current_size_; |
379 }; | 379 }; |
380 | 380 |
381 | 381 |
382 // Represents 2 strings as 2 arrays of tokens. | 382 // Represents 2 strings as 2 arrays of tokens. |
(...skipping 272 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
655 } | 655 } |
656 Handle<JSArray> GetJSArray() { | 656 Handle<JSArray> GetJSArray() { |
657 return array_; | 657 return array_; |
658 } | 658 } |
659 Isolate* isolate() const { | 659 Isolate* isolate() const { |
660 return array_->GetIsolate(); | 660 return array_->GetIsolate(); |
661 } | 661 } |
662 | 662 |
663 protected: | 663 protected: |
664 void SetField(int field_position, Handle<Object> value) { | 664 void SetField(int field_position, Handle<Object> value) { |
665 SetElementNonStrict(array_, field_position, value); | 665 SetElementSloppy(array_, field_position, value); |
666 } | 666 } |
667 void SetSmiValueField(int field_position, int value) { | 667 void SetSmiValueField(int field_position, int value) { |
668 SetElementNonStrict(array_, | 668 SetElementSloppy(array_, |
669 field_position, | 669 field_position, |
670 Handle<Smi>(Smi::FromInt(value), isolate())); | 670 Handle<Smi>(Smi::FromInt(value), isolate())); |
671 } | 671 } |
672 Object* GetField(int field_position) { | 672 Object* GetField(int field_position) { |
673 return array_->GetElementNoExceptionThrown(isolate(), field_position); | 673 return array_->GetElementNoExceptionThrown(isolate(), field_position); |
674 } | 674 } |
675 int GetSmiValueField(int field_position) { | 675 int GetSmiValueField(int field_position) { |
676 Object* res = GetField(field_position); | 676 Object* res = GetField(field_position); |
677 CHECK(res->IsSmi()); | 677 CHECK(res->IsSmi()); |
678 return Smi::cast(res)->value(); | 678 return Smi::cast(res)->value(); |
679 } | 679 } |
680 | 680 |
(...skipping 130 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
811 } | 811 } |
812 | 812 |
813 void FunctionStarted(FunctionLiteral* fun) { | 813 void FunctionStarted(FunctionLiteral* fun) { |
814 HandleScope scope(isolate()); | 814 HandleScope scope(isolate()); |
815 FunctionInfoWrapper info = FunctionInfoWrapper::Create(isolate()); | 815 FunctionInfoWrapper info = FunctionInfoWrapper::Create(isolate()); |
816 info.SetInitialProperties(fun->name(), fun->start_position(), | 816 info.SetInitialProperties(fun->name(), fun->start_position(), |
817 fun->end_position(), fun->parameter_count(), | 817 fun->end_position(), fun->parameter_count(), |
818 fun->materialized_literal_count(), | 818 fun->materialized_literal_count(), |
819 current_parent_index_); | 819 current_parent_index_); |
820 current_parent_index_ = len_; | 820 current_parent_index_ = len_; |
821 SetElementNonStrict(result_, len_, info.GetJSArray()); | 821 SetElementSloppy(result_, len_, info.GetJSArray()); |
822 len_++; | 822 len_++; |
823 } | 823 } |
824 | 824 |
825 void FunctionDone() { | 825 void FunctionDone() { |
826 HandleScope scope(isolate()); | 826 HandleScope scope(isolate()); |
827 FunctionInfoWrapper info = | 827 FunctionInfoWrapper info = |
828 FunctionInfoWrapper::cast( | 828 FunctionInfoWrapper::cast( |
829 result_->GetElementNoExceptionThrown( | 829 result_->GetElementNoExceptionThrown( |
830 isolate(), current_parent_index_)); | 830 isolate(), current_parent_index_)); |
831 current_parent_index_ = info.GetParentIndex(); | 831 current_parent_index_ = info.GetParentIndex(); |
(...skipping 46 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
878 // scopes of this chain. | 878 // scopes of this chain. |
879 Scope* current_scope = scope; | 879 Scope* current_scope = scope; |
880 while (current_scope != NULL) { | 880 while (current_scope != NULL) { |
881 ZoneList<Variable*> stack_list(current_scope->StackLocalCount(), zone); | 881 ZoneList<Variable*> stack_list(current_scope->StackLocalCount(), zone); |
882 ZoneList<Variable*> context_list( | 882 ZoneList<Variable*> context_list( |
883 current_scope->ContextLocalCount(), zone); | 883 current_scope->ContextLocalCount(), zone); |
884 current_scope->CollectStackAndContextLocals(&stack_list, &context_list); | 884 current_scope->CollectStackAndContextLocals(&stack_list, &context_list); |
885 context_list.Sort(&Variable::CompareIndex); | 885 context_list.Sort(&Variable::CompareIndex); |
886 | 886 |
887 for (int i = 0; i < context_list.length(); i++) { | 887 for (int i = 0; i < context_list.length(); i++) { |
888 SetElementNonStrict(scope_info_list, | 888 SetElementSloppy(scope_info_list, |
889 scope_info_length, | 889 scope_info_length, |
890 context_list[i]->name()); | 890 context_list[i]->name()); |
891 scope_info_length++; | 891 scope_info_length++; |
892 SetElementNonStrict( | 892 SetElementSloppy( |
893 scope_info_list, | 893 scope_info_list, |
894 scope_info_length, | 894 scope_info_length, |
895 Handle<Smi>(Smi::FromInt(context_list[i]->index()), isolate())); | 895 Handle<Smi>(Smi::FromInt(context_list[i]->index()), isolate())); |
896 scope_info_length++; | 896 scope_info_length++; |
897 } | 897 } |
898 SetElementNonStrict(scope_info_list, | 898 SetElementSloppy(scope_info_list, |
899 scope_info_length, | 899 scope_info_length, |
900 Handle<Object>(isolate()->heap()->null_value(), | 900 Handle<Object>(isolate()->heap()->null_value(), |
901 isolate())); | 901 isolate())); |
902 scope_info_length++; | 902 scope_info_length++; |
903 | 903 |
904 current_scope = current_scope->outer_scope(); | 904 current_scope = current_scope->outer_scope(); |
905 } | 905 } |
906 | 906 |
907 return *scope_info_list; | 907 return *scope_info_list; |
908 } | 908 } |
909 | 909 |
910 Handle<JSArray> result_; | 910 Handle<JSArray> result_; |
911 int len_; | 911 int len_; |
(...skipping 40 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
952 STATIC_ASCII_VECTOR("startPosition")); | 952 STATIC_ASCII_VECTOR("startPosition")); |
953 Handle<String> end_pos_key = factory->InternalizeOneByteString( | 953 Handle<String> end_pos_key = factory->InternalizeOneByteString( |
954 STATIC_ASCII_VECTOR("endPosition")); | 954 STATIC_ASCII_VECTOR("endPosition")); |
955 Handle<String> script_obj_key = factory->InternalizeOneByteString( | 955 Handle<String> script_obj_key = factory->InternalizeOneByteString( |
956 STATIC_ASCII_VECTOR("scriptObject")); | 956 STATIC_ASCII_VECTOR("scriptObject")); |
957 Handle<Smi> start_pos( | 957 Handle<Smi> start_pos( |
958 Smi::FromInt(message_location.start_pos()), isolate); | 958 Smi::FromInt(message_location.start_pos()), isolate); |
959 Handle<Smi> end_pos(Smi::FromInt(message_location.end_pos()), isolate); | 959 Handle<Smi> end_pos(Smi::FromInt(message_location.end_pos()), isolate); |
960 Handle<JSValue> script_obj = GetScriptWrapper(message_location.script()); | 960 Handle<JSValue> script_obj = GetScriptWrapper(message_location.script()); |
961 JSReceiver::SetProperty( | 961 JSReceiver::SetProperty( |
962 rethrow_exception, start_pos_key, start_pos, NONE, kNonStrictMode); | 962 rethrow_exception, start_pos_key, start_pos, NONE, kSloppyMode); |
963 JSReceiver::SetProperty( | 963 JSReceiver::SetProperty( |
964 rethrow_exception, end_pos_key, end_pos, NONE, kNonStrictMode); | 964 rethrow_exception, end_pos_key, end_pos, NONE, kSloppyMode); |
965 JSReceiver::SetProperty( | 965 JSReceiver::SetProperty( |
966 rethrow_exception, script_obj_key, script_obj, NONE, kNonStrictMode); | 966 rethrow_exception, script_obj_key, script_obj, NONE, kSloppyMode); |
967 } | 967 } |
968 } | 968 } |
969 | 969 |
970 // A logical 'finally' section. | 970 // A logical 'finally' section. |
971 isolate->set_active_function_info_listener(NULL); | 971 isolate->set_active_function_info_listener(NULL); |
972 script->set_source(*original_source); | 972 script->set_source(*original_source); |
973 | 973 |
974 if (rethrow_exception.is_null()) { | 974 if (rethrow_exception.is_null()) { |
975 return *(listener.GetResult()); | 975 return *(listener.GetResult()); |
976 } else { | 976 } else { |
977 isolate->Throw(*rethrow_exception); | 977 isolate->Throw(*rethrow_exception); |
978 return 0; | 978 return 0; |
979 } | 979 } |
980 } | 980 } |
981 | 981 |
982 | 982 |
983 void LiveEdit::WrapSharedFunctionInfos(Handle<JSArray> array) { | 983 void LiveEdit::WrapSharedFunctionInfos(Handle<JSArray> array) { |
984 Isolate* isolate = array->GetIsolate(); | 984 Isolate* isolate = array->GetIsolate(); |
985 HandleScope scope(isolate); | 985 HandleScope scope(isolate); |
986 int len = GetArrayLength(array); | 986 int len = GetArrayLength(array); |
987 for (int i = 0; i < len; i++) { | 987 for (int i = 0; i < len; i++) { |
988 Handle<SharedFunctionInfo> info( | 988 Handle<SharedFunctionInfo> info( |
989 SharedFunctionInfo::cast( | 989 SharedFunctionInfo::cast( |
990 array->GetElementNoExceptionThrown(isolate, i))); | 990 array->GetElementNoExceptionThrown(isolate, i))); |
991 SharedInfoWrapper info_wrapper = SharedInfoWrapper::Create(isolate); | 991 SharedInfoWrapper info_wrapper = SharedInfoWrapper::Create(isolate); |
992 Handle<String> name_handle(String::cast(info->name())); | 992 Handle<String> name_handle(String::cast(info->name())); |
993 info_wrapper.SetProperties(name_handle, info->start_position(), | 993 info_wrapper.SetProperties(name_handle, info->start_position(), |
994 info->end_position(), info); | 994 info->end_position(), info); |
995 SetElementNonStrict(array, i, info_wrapper.GetJSArray()); | 995 SetElementSloppy(array, i, info_wrapper.GetJSArray()); |
996 } | 996 } |
997 } | 997 } |
998 | 998 |
999 | 999 |
1000 // Visitor that finds all references to a particular code object, | 1000 // Visitor that finds all references to a particular code object, |
1001 // including "CODE_TARGET" references in other code objects and replaces | 1001 // including "CODE_TARGET" references in other code objects and replaces |
1002 // them on the fly. | 1002 // them on the fly. |
1003 class ReplacingVisitor : public ObjectVisitor { | 1003 class ReplacingVisitor : public ObjectVisitor { |
1004 public: | 1004 public: |
1005 explicit ReplacingVisitor(Code* original, Code* substitution) | 1005 explicit ReplacingVisitor(Code* original, Code* substitution) |
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1633 int len = GetArrayLength(shared_info_array); | 1633 int len = GetArrayLength(shared_info_array); |
1634 for (int i = 0; i < len; i++) { | 1634 for (int i = 0; i < len; i++) { |
1635 Object* element = | 1635 Object* element = |
1636 shared_info_array->GetElementNoExceptionThrown(isolate, i); | 1636 shared_info_array->GetElementNoExceptionThrown(isolate, i); |
1637 CHECK(element->IsJSValue()); | 1637 CHECK(element->IsJSValue()); |
1638 Handle<JSValue> jsvalue(JSValue::cast(element)); | 1638 Handle<JSValue> jsvalue(JSValue::cast(element)); |
1639 Handle<SharedFunctionInfo> shared = | 1639 Handle<SharedFunctionInfo> shared = |
1640 UnwrapSharedFunctionInfoFromJSValue(jsvalue); | 1640 UnwrapSharedFunctionInfoFromJSValue(jsvalue); |
1641 | 1641 |
1642 if (function->shared() == *shared || IsInlined(*function, *shared)) { | 1642 if (function->shared() == *shared || IsInlined(*function, *shared)) { |
1643 SetElementNonStrict(result, i, Handle<Smi>(Smi::FromInt(status), | 1643 SetElementSloppy(result, i, Handle<Smi>(Smi::FromInt(status), isolate)); |
1644 isolate)); | |
1645 return true; | 1644 return true; |
1646 } | 1645 } |
1647 } | 1646 } |
1648 return false; | 1647 return false; |
1649 } | 1648 } |
1650 | 1649 |
1651 | 1650 |
1652 // Iterates over handler chain and removes all elements that are inside | 1651 // Iterates over handler chain and removes all elements that are inside |
1653 // frames being dropped. | 1652 // frames being dropped. |
1654 static bool FixTryCatchHandler(StackFrame* top_frame, | 1653 static bool FixTryCatchHandler(StackFrame* top_frame, |
(...skipping 293 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1948 | 1947 |
1949 Isolate* isolate = shared_info_array->GetIsolate(); | 1948 Isolate* isolate = shared_info_array->GetIsolate(); |
1950 int array_len = GetArrayLength(shared_info_array); | 1949 int array_len = GetArrayLength(shared_info_array); |
1951 | 1950 |
1952 // Replace "blocked on active" with "replaced on active" status. | 1951 // Replace "blocked on active" with "replaced on active" status. |
1953 for (int i = 0; i < array_len; i++) { | 1952 for (int i = 0; i < array_len; i++) { |
1954 if (result->GetElement(result->GetIsolate(), i) == | 1953 if (result->GetElement(result->GetIsolate(), i) == |
1955 Smi::FromInt(LiveEdit::FUNCTION_BLOCKED_ON_ACTIVE_STACK)) { | 1954 Smi::FromInt(LiveEdit::FUNCTION_BLOCKED_ON_ACTIVE_STACK)) { |
1956 Handle<Object> replaced( | 1955 Handle<Object> replaced( |
1957 Smi::FromInt(LiveEdit::FUNCTION_REPLACED_ON_ACTIVE_STACK), isolate); | 1956 Smi::FromInt(LiveEdit::FUNCTION_REPLACED_ON_ACTIVE_STACK), isolate); |
1958 SetElementNonStrict(result, i, replaced); | 1957 SetElementSloppy(result, i, replaced); |
1959 } | 1958 } |
1960 } | 1959 } |
1961 return NULL; | 1960 return NULL; |
1962 } | 1961 } |
1963 | 1962 |
1964 | 1963 |
1965 class InactiveThreadActivationsChecker : public ThreadVisitor { | 1964 class InactiveThreadActivationsChecker : public ThreadVisitor { |
1966 public: | 1965 public: |
1967 InactiveThreadActivationsChecker(Handle<JSArray> shared_info_array, | 1966 InactiveThreadActivationsChecker(Handle<JSArray> shared_info_array, |
1968 Handle<JSArray> result) | 1967 Handle<JSArray> result) |
(...skipping 20 matching lines...) Expand all Loading... |
1989 | 1988 |
1990 Handle<JSArray> LiveEdit::CheckAndDropActivations( | 1989 Handle<JSArray> LiveEdit::CheckAndDropActivations( |
1991 Handle<JSArray> shared_info_array, bool do_drop) { | 1990 Handle<JSArray> shared_info_array, bool do_drop) { |
1992 Isolate* isolate = shared_info_array->GetIsolate(); | 1991 Isolate* isolate = shared_info_array->GetIsolate(); |
1993 int len = GetArrayLength(shared_info_array); | 1992 int len = GetArrayLength(shared_info_array); |
1994 | 1993 |
1995 Handle<JSArray> result = isolate->factory()->NewJSArray(len); | 1994 Handle<JSArray> result = isolate->factory()->NewJSArray(len); |
1996 | 1995 |
1997 // Fill the default values. | 1996 // Fill the default values. |
1998 for (int i = 0; i < len; i++) { | 1997 for (int i = 0; i < len; i++) { |
1999 SetElementNonStrict( | 1998 SetElementSloppy( |
2000 result, | 1999 result, |
2001 i, | 2000 i, |
2002 Handle<Smi>(Smi::FromInt(FUNCTION_AVAILABLE_FOR_PATCH), isolate)); | 2001 Handle<Smi>(Smi::FromInt(FUNCTION_AVAILABLE_FOR_PATCH), isolate)); |
2003 } | 2002 } |
2004 | 2003 |
2005 | 2004 |
2006 // First check inactive threads. Fail if some functions are blocked there. | 2005 // First check inactive threads. Fail if some functions are blocked there. |
2007 InactiveThreadActivationsChecker inactive_threads_checker(shared_info_array, | 2006 InactiveThreadActivationsChecker inactive_threads_checker(shared_info_array, |
2008 result); | 2007 result); |
2009 isolate->thread_manager()->IterateArchivedThreads( | 2008 isolate->thread_manager()->IterateArchivedThreads( |
2010 &inactive_threads_checker); | 2009 &inactive_threads_checker); |
2011 if (inactive_threads_checker.HasBlockedFunctions()) { | 2010 if (inactive_threads_checker.HasBlockedFunctions()) { |
2012 return result; | 2011 return result; |
2013 } | 2012 } |
2014 | 2013 |
2015 // Try to drop activations from the current stack. | 2014 // Try to drop activations from the current stack. |
2016 const char* error_message = | 2015 const char* error_message = |
2017 DropActivationsInActiveThread(shared_info_array, result, do_drop); | 2016 DropActivationsInActiveThread(shared_info_array, result, do_drop); |
2018 if (error_message != NULL) { | 2017 if (error_message != NULL) { |
2019 // Add error message as an array extra element. | 2018 // Add error message as an array extra element. |
2020 Vector<const char> vector_message(error_message, StrLength(error_message)); | 2019 Vector<const char> vector_message(error_message, StrLength(error_message)); |
2021 Handle<String> str = isolate->factory()->NewStringFromAscii(vector_message); | 2020 Handle<String> str = isolate->factory()->NewStringFromAscii(vector_message); |
2022 SetElementNonStrict(result, len, str); | 2021 SetElementSloppy(result, len, str); |
2023 } | 2022 } |
2024 return result; | 2023 return result; |
2025 } | 2024 } |
2026 | 2025 |
2027 | 2026 |
2028 // Describes a single callframe a target. Not finding this frame | 2027 // Describes a single callframe a target. Not finding this frame |
2029 // means an error. | 2028 // means an error. |
2030 class SingleFrameTarget { | 2029 class SingleFrameTarget { |
2031 public: | 2030 public: |
2032 explicit SingleFrameTarget(JavaScriptFrame* frame) | 2031 explicit SingleFrameTarget(JavaScriptFrame* frame) |
(...skipping 98 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
2131 | 2130 |
2132 bool LiveEditFunctionTracker::IsActive(Isolate* isolate) { | 2131 bool LiveEditFunctionTracker::IsActive(Isolate* isolate) { |
2133 return false; | 2132 return false; |
2134 } | 2133 } |
2135 | 2134 |
2136 #endif // ENABLE_DEBUGGER_SUPPORT | 2135 #endif // ENABLE_DEBUGGER_SUPPORT |
2137 | 2136 |
2138 | 2137 |
2139 | 2138 |
2140 } } // namespace v8::internal | 2139 } } // namespace v8::internal |
OLD | NEW |