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

Side by Side Diff: src/liveedit.cc

Issue 12254007: Make the Isolate parameter mandatory for internal HandleScopes. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Rebased Created 7 years, 10 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/isolate.cc ('k') | src/log.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 524 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 line_pos1 += subrange_offset1_; 535 line_pos1 += subrange_offset1_;
536 line_pos2 += subrange_offset2_; 536 line_pos2 += subrange_offset2_;
537 537
538 int char_pos1 = line_ends1_.GetLineStart(line_pos1); 538 int char_pos1 = line_ends1_.GetLineStart(line_pos1);
539 int char_pos2 = line_ends2_.GetLineStart(line_pos2); 539 int char_pos2 = line_ends2_.GetLineStart(line_pos2);
540 int char_len1 = line_ends1_.GetLineStart(line_pos1 + line_len1) - char_pos1; 540 int char_len1 = line_ends1_.GetLineStart(line_pos1 + line_len1) - char_pos1;
541 int char_len2 = line_ends2_.GetLineStart(line_pos2 + line_len2) - char_pos2; 541 int char_len2 = line_ends2_.GetLineStart(line_pos2 + line_len2) - char_pos2;
542 542
543 if (char_len1 < CHUNK_LEN_LIMIT && char_len2 < CHUNK_LEN_LIMIT) { 543 if (char_len1 < CHUNK_LEN_LIMIT && char_len2 < CHUNK_LEN_LIMIT) {
544 // Chunk is small enough to conduct a nested token-level diff. 544 // Chunk is small enough to conduct a nested token-level diff.
545 HandleScope subTaskScope; 545 HandleScope subTaskScope(s1_->GetIsolate());
546 546
547 TokensCompareInput tokens_input(s1_, char_pos1, char_len1, 547 TokensCompareInput tokens_input(s1_, char_pos1, char_len1,
548 s2_, char_pos2, char_len2); 548 s2_, char_pos2, char_len2);
549 TokensCompareOutput tokens_output(&array_writer_, char_pos1, 549 TokensCompareOutput tokens_output(&array_writer_, char_pos1,
550 char_pos2); 550 char_pos2);
551 551
552 Comparator::CalculateDifference(&tokens_input, &tokens_output); 552 Comparator::CalculateDifference(&tokens_input, &tokens_output);
553 } else { 553 } else {
554 array_writer_.WriteChunk(char_pos1, char_pos2, char_len1, char_len2); 554 array_writer_.WriteChunk(char_pos1, char_pos2, char_len1, char_len2);
555 } 555 }
(...skipping 108 matching lines...) Expand 10 before | Expand all | Expand 10 after
664 static S cast(Object* object) { 664 static S cast(Object* object) {
665 JSArray* array = JSArray::cast(object); 665 JSArray* array = JSArray::cast(object);
666 Handle<JSArray> array_handle(array); 666 Handle<JSArray> array_handle(array);
667 return S(array_handle); 667 return S(array_handle);
668 } 668 }
669 explicit JSArrayBasedStruct(Handle<JSArray> array) : array_(array) { 669 explicit JSArrayBasedStruct(Handle<JSArray> array) : array_(array) {
670 } 670 }
671 Handle<JSArray> GetJSArray() { 671 Handle<JSArray> GetJSArray() {
672 return array_; 672 return array_;
673 } 673 }
674 Isolate* isolate() const {
675 return array_->GetIsolate();
676 }
674 677
675 protected: 678 protected:
676 void SetField(int field_position, Handle<Object> value) { 679 void SetField(int field_position, Handle<Object> value) {
677 SetElementNonStrict(array_, field_position, value); 680 SetElementNonStrict(array_, field_position, value);
678 } 681 }
679 void SetSmiValueField(int field_position, int value) { 682 void SetSmiValueField(int field_position, int value) {
680 SetElementNonStrict(array_, 683 SetElementNonStrict(array_,
681 field_position, 684 field_position,
682 Handle<Smi>(Smi::FromInt(value))); 685 Handle<Smi>(Smi::FromInt(value)));
683 } 686 }
(...skipping 15 matching lines...) Expand all
699 // from JavaScript. It contains Code object, which is kept wrapped 702 // from JavaScript. It contains Code object, which is kept wrapped
700 // into a BlindReference for sanitizing reasons. 703 // into a BlindReference for sanitizing reasons.
701 class FunctionInfoWrapper : public JSArrayBasedStruct<FunctionInfoWrapper> { 704 class FunctionInfoWrapper : public JSArrayBasedStruct<FunctionInfoWrapper> {
702 public: 705 public:
703 explicit FunctionInfoWrapper(Handle<JSArray> array) 706 explicit FunctionInfoWrapper(Handle<JSArray> array)
704 : JSArrayBasedStruct<FunctionInfoWrapper>(array) { 707 : JSArrayBasedStruct<FunctionInfoWrapper>(array) {
705 } 708 }
706 void SetInitialProperties(Handle<String> name, int start_position, 709 void SetInitialProperties(Handle<String> name, int start_position,
707 int end_position, int param_num, 710 int end_position, int param_num,
708 int literal_count, int parent_index) { 711 int literal_count, int parent_index) {
709 HandleScope scope; 712 HandleScope scope(isolate());
710 this->SetField(kFunctionNameOffset_, name); 713 this->SetField(kFunctionNameOffset_, name);
711 this->SetSmiValueField(kStartPositionOffset_, start_position); 714 this->SetSmiValueField(kStartPositionOffset_, start_position);
712 this->SetSmiValueField(kEndPositionOffset_, end_position); 715 this->SetSmiValueField(kEndPositionOffset_, end_position);
713 this->SetSmiValueField(kParamNumOffset_, param_num); 716 this->SetSmiValueField(kParamNumOffset_, param_num);
714 this->SetSmiValueField(kLiteralNumOffset_, literal_count); 717 this->SetSmiValueField(kLiteralNumOffset_, literal_count);
715 this->SetSmiValueField(kParentIndexOffset_, parent_index); 718 this->SetSmiValueField(kParentIndexOffset_, parent_index);
716 } 719 }
717 void SetFunctionCode(Handle<Code> function_code, 720 void SetFunctionCode(Handle<Code> function_code,
718 Handle<Object> code_scope_info) { 721 Handle<Object> code_scope_info) {
719 Handle<JSValue> code_wrapper = WrapInJSValue(function_code); 722 Handle<JSValue> code_wrapper = WrapInJSValue(function_code);
(...skipping 61 matching lines...) Expand 10 before | Expand all | Expand 10 after
781 return array->length() == Smi::FromInt(kSize_) && 784 return array->length() == Smi::FromInt(kSize_) &&
782 array->GetElementNoExceptionThrown(kSharedInfoOffset_)->IsJSValue(); 785 array->GetElementNoExceptionThrown(kSharedInfoOffset_)->IsJSValue();
783 } 786 }
784 787
785 explicit SharedInfoWrapper(Handle<JSArray> array) 788 explicit SharedInfoWrapper(Handle<JSArray> array)
786 : JSArrayBasedStruct<SharedInfoWrapper>(array) { 789 : JSArrayBasedStruct<SharedInfoWrapper>(array) {
787 } 790 }
788 791
789 void SetProperties(Handle<String> name, int start_position, int end_position, 792 void SetProperties(Handle<String> name, int start_position, int end_position,
790 Handle<SharedFunctionInfo> info) { 793 Handle<SharedFunctionInfo> info) {
791 HandleScope scope; 794 HandleScope scope(isolate());
792 this->SetField(kFunctionNameOffset_, name); 795 this->SetField(kFunctionNameOffset_, name);
793 Handle<JSValue> info_holder = WrapInJSValue(info); 796 Handle<JSValue> info_holder = WrapInJSValue(info);
794 this->SetField(kSharedInfoOffset_, info_holder); 797 this->SetField(kSharedInfoOffset_, info_holder);
795 this->SetSmiValueField(kStartPositionOffset_, start_position); 798 this->SetSmiValueField(kStartPositionOffset_, start_position);
796 this->SetSmiValueField(kEndPositionOffset_, end_position); 799 this->SetSmiValueField(kEndPositionOffset_, end_position);
797 } 800 }
798 Handle<SharedFunctionInfo> GetInfo() { 801 Handle<SharedFunctionInfo> GetInfo() {
799 Object* element = this->GetField(kSharedInfoOffset_); 802 Object* element = this->GetField(kSharedInfoOffset_);
800 CHECK(element->IsJSValue()); 803 CHECK(element->IsJSValue());
801 Handle<JSValue> value_wrapper(JSValue::cast(element)); 804 Handle<JSValue> value_wrapper(JSValue::cast(element));
(...skipping 13 matching lines...) Expand all
815 818
816 class FunctionInfoListener { 819 class FunctionInfoListener {
817 public: 820 public:
818 FunctionInfoListener() { 821 FunctionInfoListener() {
819 current_parent_index_ = -1; 822 current_parent_index_ = -1;
820 len_ = 0; 823 len_ = 0;
821 result_ = FACTORY->NewJSArray(10); 824 result_ = FACTORY->NewJSArray(10);
822 } 825 }
823 826
824 void FunctionStarted(FunctionLiteral* fun) { 827 void FunctionStarted(FunctionLiteral* fun) {
825 HandleScope scope; 828 HandleScope scope(result_->GetIsolate());
826 FunctionInfoWrapper info = FunctionInfoWrapper::Create(); 829 FunctionInfoWrapper info = FunctionInfoWrapper::Create();
827 info.SetInitialProperties(fun->name(), fun->start_position(), 830 info.SetInitialProperties(fun->name(), fun->start_position(),
828 fun->end_position(), fun->parameter_count(), 831 fun->end_position(), fun->parameter_count(),
829 fun->materialized_literal_count(), 832 fun->materialized_literal_count(),
830 current_parent_index_); 833 current_parent_index_);
831 current_parent_index_ = len_; 834 current_parent_index_ = len_;
832 SetElementNonStrict(result_, len_, info.GetJSArray()); 835 SetElementNonStrict(result_, len_, info.GetJSArray());
833 len_++; 836 len_++;
834 } 837 }
835 838
836 void FunctionDone() { 839 void FunctionDone() {
837 HandleScope scope; 840 HandleScope scope(result_->GetIsolate());
838 FunctionInfoWrapper info = 841 FunctionInfoWrapper info =
839 FunctionInfoWrapper::cast( 842 FunctionInfoWrapper::cast(
840 result_->GetElementNoExceptionThrown(current_parent_index_)); 843 result_->GetElementNoExceptionThrown(current_parent_index_));
841 current_parent_index_ = info.GetParentIndex(); 844 current_parent_index_ = info.GetParentIndex();
842 } 845 }
843 846
844 // Saves only function code, because for a script function we 847 // Saves only function code, because for a script function we
845 // may never create a SharedFunctionInfo object. 848 // may never create a SharedFunctionInfo object.
846 void FunctionCode(Handle<Code> function_code) { 849 void FunctionCode(Handle<Code> function_code) {
847 FunctionInfoWrapper info = 850 FunctionInfoWrapper info =
848 FunctionInfoWrapper::cast( 851 FunctionInfoWrapper::cast(
849 result_->GetElementNoExceptionThrown(current_parent_index_)); 852 result_->GetElementNoExceptionThrown(current_parent_index_));
850 info.SetFunctionCode(function_code, Handle<Object>(HEAP->null_value())); 853 info.SetFunctionCode(function_code, Handle<Object>(HEAP->null_value()));
851 } 854 }
852 855
853 // Saves full information about a function: its code, its scope info 856 // Saves full information about a function: its code, its scope info
854 // and a SharedFunctionInfo object. 857 // and a SharedFunctionInfo object.
855 void FunctionInfo(Handle<SharedFunctionInfo> shared, Scope* scope, 858 void FunctionInfo(Handle<SharedFunctionInfo> shared, Scope* scope,
856 Zone* zone) { 859 Zone* zone) {
857 if (!shared->IsSharedFunctionInfo()) { 860 if (!shared->IsSharedFunctionInfo()) {
858 return; 861 return;
859 } 862 }
860 FunctionInfoWrapper info = 863 FunctionInfoWrapper info =
861 FunctionInfoWrapper::cast( 864 FunctionInfoWrapper::cast(
862 result_->GetElementNoExceptionThrown(current_parent_index_)); 865 result_->GetElementNoExceptionThrown(current_parent_index_));
863 info.SetFunctionCode(Handle<Code>(shared->code()), 866 info.SetFunctionCode(Handle<Code>(shared->code()),
864 Handle<Object>(shared->scope_info())); 867 Handle<Object>(shared->scope_info()));
865 info.SetSharedFunctionInfo(shared); 868 info.SetSharedFunctionInfo(shared);
866 869
867 Handle<Object> scope_info_list(SerializeFunctionScope(scope, zone)); 870 Handle<Object> scope_info_list(
871 SerializeFunctionScope(shared->GetIsolate(), scope, zone));
868 info.SetOuterScopeInfo(scope_info_list); 872 info.SetOuterScopeInfo(scope_info_list);
869 } 873 }
870 874
871 Handle<JSArray> GetResult() { return result_; } 875 Handle<JSArray> GetResult() { return result_; }
872 876
873 private: 877 private:
874 Object* SerializeFunctionScope(Scope* scope, Zone* zone) { 878 Object* SerializeFunctionScope(Isolate* isolate, Scope* scope, Zone* zone) {
875 HandleScope handle_scope; 879 HandleScope handle_scope(isolate);
876 880
877 Handle<JSArray> scope_info_list = FACTORY->NewJSArray(10); 881 Handle<JSArray> scope_info_list = isolate->factory()->NewJSArray(10);
878 int scope_info_length = 0; 882 int scope_info_length = 0;
879 883
880 // Saves some description of scope. It stores name and indexes of 884 // Saves some description of scope. It stores name and indexes of
881 // variables in the whole scope chain. Null-named slots delimit 885 // variables in the whole scope chain. Null-named slots delimit
882 // scopes of this chain. 886 // scopes of this chain.
883 Scope* outer_scope = scope->outer_scope(); 887 Scope* outer_scope = scope->outer_scope();
884 if (outer_scope == NULL) { 888 if (outer_scope == NULL) {
885 return HEAP->undefined_value(); 889 return isolate->heap()->undefined_value();
886 } 890 }
887 do { 891 do {
888 ZoneList<Variable*> stack_list(outer_scope->StackLocalCount(), zone); 892 ZoneList<Variable*> stack_list(outer_scope->StackLocalCount(), zone);
889 ZoneList<Variable*> context_list(outer_scope->ContextLocalCount(), zone); 893 ZoneList<Variable*> context_list(outer_scope->ContextLocalCount(), zone);
890 outer_scope->CollectStackAndContextLocals(&stack_list, &context_list); 894 outer_scope->CollectStackAndContextLocals(&stack_list, &context_list);
891 context_list.Sort(&Variable::CompareIndex); 895 context_list.Sort(&Variable::CompareIndex);
892 896
893 for (int i = 0; i < context_list.length(); i++) { 897 for (int i = 0; i < context_list.length(); i++) {
894 SetElementNonStrict(scope_info_list, 898 SetElementNonStrict(scope_info_list,
895 scope_info_length, 899 scope_info_length,
896 context_list[i]->name()); 900 context_list[i]->name());
897 scope_info_length++; 901 scope_info_length++;
898 SetElementNonStrict( 902 SetElementNonStrict(
899 scope_info_list, 903 scope_info_list,
900 scope_info_length, 904 scope_info_length,
901 Handle<Smi>(Smi::FromInt(context_list[i]->index()))); 905 Handle<Smi>(Smi::FromInt(context_list[i]->index())));
902 scope_info_length++; 906 scope_info_length++;
903 } 907 }
904 SetElementNonStrict(scope_info_list, 908 SetElementNonStrict(scope_info_list,
905 scope_info_length, 909 scope_info_length,
906 Handle<Object>(HEAP->null_value())); 910 Handle<Object>(isolate->heap()->null_value()));
907 scope_info_length++; 911 scope_info_length++;
908 912
909 outer_scope = outer_scope->outer_scope(); 913 outer_scope = outer_scope->outer_scope();
910 } while (outer_scope != NULL); 914 } while (outer_scope != NULL);
911 915
912 return *scope_info_list; 916 return *scope_info_list;
913 } 917 }
914 918
915 Handle<JSArray> result_; 919 Handle<JSArray> result_;
916 int len_; 920 int len_;
(...skipping 59 matching lines...) Expand 10 before | Expand all | Expand 10 after
976 if (rethrow_exception.is_null()) { 980 if (rethrow_exception.is_null()) {
977 return *(listener.GetResult()); 981 return *(listener.GetResult());
978 } else { 982 } else {
979 isolate->Throw(*rethrow_exception); 983 isolate->Throw(*rethrow_exception);
980 return 0; 984 return 0;
981 } 985 }
982 } 986 }
983 987
984 988
985 void LiveEdit::WrapSharedFunctionInfos(Handle<JSArray> array) { 989 void LiveEdit::WrapSharedFunctionInfos(Handle<JSArray> array) {
986 HandleScope scope; 990 HandleScope scope(array->GetIsolate());
987 int len = GetArrayLength(array); 991 int len = GetArrayLength(array);
988 for (int i = 0; i < len; i++) { 992 for (int i = 0; i < len; i++) {
989 Handle<SharedFunctionInfo> info( 993 Handle<SharedFunctionInfo> info(
990 SharedFunctionInfo::cast(array->GetElementNoExceptionThrown(i))); 994 SharedFunctionInfo::cast(array->GetElementNoExceptionThrown(i)));
991 SharedInfoWrapper info_wrapper = SharedInfoWrapper::Create(); 995 SharedInfoWrapper info_wrapper = SharedInfoWrapper::Create();
992 Handle<String> name_handle(String::cast(info->name())); 996 Handle<String> name_handle(String::cast(info->name()));
993 info_wrapper.SetProperties(name_handle, info->start_position(), 997 info_wrapper.SetProperties(name_handle, info->start_position(),
994 info->end_position(), info); 998 info->end_position(), info);
995 SetElementNonStrict(array, i, info_wrapper.GetJSArray()); 999 SetElementNonStrict(array, i, info_wrapper.GetJSArray());
996 } 1000 }
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after
1244 AssertNoAllocation no_allocation; 1248 AssertNoAllocation no_allocation;
1245 1249
1246 DependentFunctionFilter filter(function_info); 1250 DependentFunctionFilter filter(function_info);
1247 Deoptimizer::DeoptimizeAllFunctionsWith(&filter); 1251 Deoptimizer::DeoptimizeAllFunctionsWith(&filter);
1248 } 1252 }
1249 1253
1250 1254
1251 MaybeObject* LiveEdit::ReplaceFunctionCode( 1255 MaybeObject* LiveEdit::ReplaceFunctionCode(
1252 Handle<JSArray> new_compile_info_array, 1256 Handle<JSArray> new_compile_info_array,
1253 Handle<JSArray> shared_info_array) { 1257 Handle<JSArray> shared_info_array) {
1254 HandleScope scope;
1255 Isolate* isolate = Isolate::Current(); 1258 Isolate* isolate = Isolate::Current();
1259 HandleScope scope(isolate);
1256 1260
1257 if (!SharedInfoWrapper::IsInstance(shared_info_array)) { 1261 if (!SharedInfoWrapper::IsInstance(shared_info_array)) {
1258 return isolate->ThrowIllegalOperation(); 1262 return isolate->ThrowIllegalOperation();
1259 } 1263 }
1260 1264
1261 FunctionInfoWrapper compile_info_wrapper(new_compile_info_array); 1265 FunctionInfoWrapper compile_info_wrapper(new_compile_info_array);
1262 SharedInfoWrapper shared_info_wrapper(shared_info_array); 1266 SharedInfoWrapper shared_info_wrapper(shared_info_array);
1263 1267
1264 Handle<SharedFunctionInfo> shared_info = shared_info_wrapper.GetInfo(); 1268 Handle<SharedFunctionInfo> shared_info = shared_info_wrapper.GetInfo();
1265 1269
1266 HEAP->EnsureHeapIsIterable(); 1270 isolate->heap()->EnsureHeapIsIterable();
1267 1271
1268 if (IsJSFunctionCode(shared_info->code())) { 1272 if (IsJSFunctionCode(shared_info->code())) {
1269 Handle<Code> code = compile_info_wrapper.GetFunctionCode(); 1273 Handle<Code> code = compile_info_wrapper.GetFunctionCode();
1270 ReplaceCodeObject(Handle<Code>(shared_info->code()), code); 1274 ReplaceCodeObject(Handle<Code>(shared_info->code()), code);
1271 Handle<Object> code_scope_info = compile_info_wrapper.GetCodeScopeInfo(); 1275 Handle<Object> code_scope_info = compile_info_wrapper.GetCodeScopeInfo();
1272 if (code_scope_info->IsFixedArray()) { 1276 if (code_scope_info->IsFixedArray()) {
1273 shared_info->set_scope_info(ScopeInfo::cast(*code_scope_info)); 1277 shared_info->set_scope_info(ScopeInfo::cast(*code_scope_info));
1274 } 1278 }
1275 } 1279 }
1276 1280
1277 if (shared_info->debug_info()->IsDebugInfo()) { 1281 if (shared_info->debug_info()->IsDebugInfo()) {
1278 Handle<DebugInfo> debug_info(DebugInfo::cast(shared_info->debug_info())); 1282 Handle<DebugInfo> debug_info(DebugInfo::cast(shared_info->debug_info()));
1279 Handle<Code> new_original_code = 1283 Handle<Code> new_original_code =
1280 FACTORY->CopyCode(compile_info_wrapper.GetFunctionCode()); 1284 FACTORY->CopyCode(compile_info_wrapper.GetFunctionCode());
1281 debug_info->set_original_code(*new_original_code); 1285 debug_info->set_original_code(*new_original_code);
1282 } 1286 }
1283 1287
1284 int start_position = compile_info_wrapper.GetStartPosition(); 1288 int start_position = compile_info_wrapper.GetStartPosition();
1285 int end_position = compile_info_wrapper.GetEndPosition(); 1289 int end_position = compile_info_wrapper.GetEndPosition();
1286 shared_info->set_start_position(start_position); 1290 shared_info->set_start_position(start_position);
1287 shared_info->set_end_position(end_position); 1291 shared_info->set_end_position(end_position);
1288 1292
1289 LiteralFixer::PatchLiterals(&compile_info_wrapper, shared_info, isolate); 1293 LiteralFixer::PatchLiterals(&compile_info_wrapper, shared_info, isolate);
1290 1294
1291 shared_info->set_construct_stub( 1295 shared_info->set_construct_stub(
1292 Isolate::Current()->builtins()->builtin( 1296 isolate->builtins()->builtin(Builtins::kJSConstructStubGeneric));
1293 Builtins::kJSConstructStubGeneric));
1294 1297
1295 DeoptimizeDependentFunctions(*shared_info); 1298 DeoptimizeDependentFunctions(*shared_info);
1296 Isolate::Current()->compilation_cache()->Remove(shared_info); 1299 isolate->compilation_cache()->Remove(shared_info);
1297 1300
1298 return HEAP->undefined_value(); 1301 return isolate->heap()->undefined_value();
1299 } 1302 }
1300 1303
1301 1304
1302 MaybeObject* LiveEdit::FunctionSourceUpdated( 1305 MaybeObject* LiveEdit::FunctionSourceUpdated(
1303 Handle<JSArray> shared_info_array) { 1306 Handle<JSArray> shared_info_array) {
1304 HandleScope scope; 1307 Isolate* isolate = shared_info_array->GetIsolate();
1308 HandleScope scope(isolate);
1305 1309
1306 if (!SharedInfoWrapper::IsInstance(shared_info_array)) { 1310 if (!SharedInfoWrapper::IsInstance(shared_info_array)) {
1307 return Isolate::Current()->ThrowIllegalOperation(); 1311 return isolate->ThrowIllegalOperation();
1308 } 1312 }
1309 1313
1310 SharedInfoWrapper shared_info_wrapper(shared_info_array); 1314 SharedInfoWrapper shared_info_wrapper(shared_info_array);
1311 Handle<SharedFunctionInfo> shared_info = shared_info_wrapper.GetInfo(); 1315 Handle<SharedFunctionInfo> shared_info = shared_info_wrapper.GetInfo();
1312 1316
1313 DeoptimizeDependentFunctions(*shared_info); 1317 DeoptimizeDependentFunctions(*shared_info);
1314 Isolate::Current()->compilation_cache()->Remove(shared_info); 1318 isolate->compilation_cache()->Remove(shared_info);
1315 1319
1316 return HEAP->undefined_value(); 1320 return isolate->heap()->undefined_value();
1317 } 1321 }
1318 1322
1319 1323
1320 void LiveEdit::SetFunctionScript(Handle<JSValue> function_wrapper, 1324 void LiveEdit::SetFunctionScript(Handle<JSValue> function_wrapper,
1321 Handle<Object> script_handle) { 1325 Handle<Object> script_handle) {
1322 Handle<SharedFunctionInfo> shared_info = 1326 Handle<SharedFunctionInfo> shared_info =
1323 UnwrapSharedFunctionInfoFromJSValue(function_wrapper); 1327 UnwrapSharedFunctionInfoFromJSValue(function_wrapper);
1324 CHECK(script_handle->IsScript() || script_handle->IsUndefined()); 1328 CHECK(script_handle->IsScript() || script_handle->IsUndefined());
1325 shared_info->set_script(*script_handle); 1329 shared_info->set_script(*script_handle);
1326 1330
(...skipping 480 matching lines...) Expand 10 before | Expand all | Expand 10 after
1807 Handle<JSArray> m_result; 1811 Handle<JSArray> m_result;
1808 }; 1812 };
1809 1813
1810 // Drops all call frame matched by target and all frames above them. 1814 // Drops all call frame matched by target and all frames above them.
1811 template<typename TARGET> 1815 template<typename TARGET>
1812 static const char* DropActivationsInActiveThreadImpl( 1816 static const char* DropActivationsInActiveThreadImpl(
1813 TARGET& target, bool do_drop, Zone* zone) { 1817 TARGET& target, bool do_drop, Zone* zone) {
1814 Isolate* isolate = Isolate::Current(); 1818 Isolate* isolate = Isolate::Current();
1815 Debug* debug = isolate->debug(); 1819 Debug* debug = isolate->debug();
1816 ZoneScope scope(zone, DELETE_ON_EXIT); 1820 ZoneScope scope(zone, DELETE_ON_EXIT);
1817 Vector<StackFrame*> frames = CreateStackMap(zone); 1821 Vector<StackFrame*> frames = CreateStackMap(isolate, zone);
1818 1822
1819 1823
1820 int top_frame_index = -1; 1824 int top_frame_index = -1;
1821 int frame_index = 0; 1825 int frame_index = 0;
1822 for (; frame_index < frames.length(); frame_index++) { 1826 for (; frame_index < frames.length(); frame_index++) {
1823 StackFrame* frame = frames[frame_index]; 1827 StackFrame* frame = frames[frame_index];
1824 if (frame->id() == debug->break_frame_id()) { 1828 if (frame->id() == debug->break_frame_id()) {
1825 top_frame_index = frame_index; 1829 top_frame_index = frame_index;
1826 break; 1830 break;
1827 } 1831 }
(...skipping 270 matching lines...) Expand 10 before | Expand all | Expand 10 after
2098 2102
2099 bool LiveEditFunctionTracker::IsActive(Isolate* isolate) { 2103 bool LiveEditFunctionTracker::IsActive(Isolate* isolate) {
2100 return false; 2104 return false;
2101 } 2105 }
2102 2106
2103 #endif // ENABLE_DEBUGGER_SUPPORT 2107 #endif // ENABLE_DEBUGGER_SUPPORT
2104 2108
2105 2109
2106 2110
2107 } } // namespace v8::internal 2111 } } // namespace v8::internal
OLDNEW
« no previous file with comments | « src/isolate.cc ('k') | src/log.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698