OLD | NEW |
1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 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/api.h" | 5 #include "src/api.h" |
6 | 6 |
7 #include <string.h> // For memcpy, strlen. | 7 #include <string.h> // For memcpy, strlen. |
8 #ifdef V8_USE_ADDRESS_SANITIZER | 8 #ifdef V8_USE_ADDRESS_SANITIZER |
9 #include <sanitizer/asan_interface.h> | 9 #include <sanitizer/asan_interface.h> |
10 #endif // V8_USE_ADDRESS_SANITIZER | 10 #endif // V8_USE_ADDRESS_SANITIZER |
(...skipping 665 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
676 } | 676 } |
677 #endif // VERIFY_HEAP | 677 #endif // VERIFY_HEAP |
678 return result.location(); | 678 return result.location(); |
679 } | 679 } |
680 | 680 |
681 void V8::RegisterExternallyReferencedObject(i::Object** object, | 681 void V8::RegisterExternallyReferencedObject(i::Object** object, |
682 i::Isolate* isolate) { | 682 i::Isolate* isolate) { |
683 isolate->heap()->RegisterExternallyReferencedObject(object); | 683 isolate->heap()->RegisterExternallyReferencedObject(object); |
684 } | 684 } |
685 | 685 |
686 | 686 void V8::MakeWeak(i::Object** location, void* parameter, |
687 void V8::MakeWeak(i::Object** object, void* parameter, | |
688 int internal_field_index1, int internal_field_index2, | 687 int internal_field_index1, int internal_field_index2, |
689 WeakCallbackInfo<void>::Callback weak_callback) { | 688 WeakCallbackInfo<void>::Callback weak_callback) { |
690 WeakCallbackType type = WeakCallbackType::kParameter; | 689 WeakCallbackType type = WeakCallbackType::kParameter; |
691 if (internal_field_index1 == 0) { | 690 if (internal_field_index1 == 0) { |
692 if (internal_field_index2 == 1) { | 691 if (internal_field_index2 == 1) { |
693 type = WeakCallbackType::kInternalFields; | 692 type = WeakCallbackType::kInternalFields; |
694 } else { | 693 } else { |
695 DCHECK_EQ(internal_field_index2, -1); | 694 DCHECK_EQ(internal_field_index2, -1); |
696 type = WeakCallbackType::kInternalFields; | 695 type = WeakCallbackType::kInternalFields; |
697 } | 696 } |
698 } else { | 697 } else { |
699 DCHECK_EQ(internal_field_index1, -1); | 698 DCHECK_EQ(internal_field_index1, -1); |
700 DCHECK_EQ(internal_field_index2, -1); | 699 DCHECK_EQ(internal_field_index2, -1); |
701 } | 700 } |
702 i::GlobalHandles::MakeWeak(object, parameter, weak_callback, type); | 701 i::GlobalHandles::MakeWeak(location, parameter, weak_callback, type); |
| 702 } |
| 703 |
| 704 void V8::MakeWeak(i::Object** location, void* parameter, |
| 705 WeakCallbackInfo<void>::Callback weak_callback, |
| 706 WeakCallbackType type) { |
| 707 i::GlobalHandles::MakeWeak(location, parameter, weak_callback, type); |
| 708 } |
| 709 |
| 710 void V8::MakeWeak(i::Object*** location_addr) { |
| 711 i::GlobalHandles::MakeWeak(location_addr); |
| 712 } |
| 713 |
| 714 void* V8::ClearWeak(i::Object** location) { |
| 715 return i::GlobalHandles::ClearWeakness(location); |
| 716 } |
| 717 |
| 718 void V8::DisposeGlobal(i::Object** location) { |
| 719 i::GlobalHandles::Destroy(location); |
703 } | 720 } |
704 | 721 |
705 | 722 |
706 void V8::MakeWeak(i::Object** object, void* parameter, | |
707 WeakCallbackInfo<void>::Callback weak_callback, | |
708 WeakCallbackType type) { | |
709 i::GlobalHandles::MakeWeak(object, parameter, weak_callback, type); | |
710 } | |
711 | |
712 | |
713 void* V8::ClearWeak(i::Object** obj) { | |
714 return i::GlobalHandles::ClearWeakness(obj); | |
715 } | |
716 | |
717 | |
718 void V8::DisposeGlobal(i::Object** obj) { | |
719 i::GlobalHandles::Destroy(obj); | |
720 } | |
721 | |
722 | |
723 void V8::Eternalize(Isolate* v8_isolate, Value* value, int* index) { | 723 void V8::Eternalize(Isolate* v8_isolate, Value* value, int* index) { |
724 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); | 724 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); |
725 i::Object* object = *Utils::OpenHandle(value); | 725 i::Object* object = *Utils::OpenHandle(value); |
726 isolate->eternal_handles()->Create(isolate, object, index); | 726 isolate->eternal_handles()->Create(isolate, object, index); |
727 } | 727 } |
728 | 728 |
729 | 729 |
730 Local<Value> V8::GetEternal(Isolate* v8_isolate, int index) { | 730 Local<Value> V8::GetEternal(Isolate* v8_isolate, int index) { |
731 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); | 731 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(v8_isolate); |
732 return Utils::ToLocal(isolate->eternal_handles()->Get(index)); | 732 return Utils::ToLocal(isolate->eternal_handles()->Get(index)); |
(...skipping 6743 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7476 regs.sp = state.sp; | 7476 regs.sp = state.sp; |
7477 regs.fp = state.fp; | 7477 regs.fp = state.fp; |
7478 i::SimulatorHelper::FillRegisters(isolate, ®s); | 7478 i::SimulatorHelper::FillRegisters(isolate, ®s); |
7479 #else | 7479 #else |
7480 const RegisterState& regs = state; | 7480 const RegisterState& regs = state; |
7481 #endif | 7481 #endif |
7482 i::TickSample::GetStackSample(isolate, regs, i::TickSample::kSkipCEntryFrame, | 7482 i::TickSample::GetStackSample(isolate, regs, i::TickSample::kSkipCEntryFrame, |
7483 frames, frames_limit, sample_info); | 7483 frames, frames_limit, sample_info); |
7484 } | 7484 } |
7485 | 7485 |
| 7486 size_t Isolate::NumberOfPhantomHandleResetsSinceLastCall() { |
| 7487 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); |
| 7488 size_t result = isolate->global_handles()->NumberOfPhantomHandleResets(); |
| 7489 isolate->global_handles()->ResetNumberOfPhantomHandleResets(); |
| 7490 return result; |
| 7491 } |
7486 | 7492 |
7487 void Isolate::SetEventLogger(LogEventCallback that) { | 7493 void Isolate::SetEventLogger(LogEventCallback that) { |
7488 // Do not overwrite the event logger if we want to log explicitly. | 7494 // Do not overwrite the event logger if we want to log explicitly. |
7489 if (i::FLAG_log_internal_timer_events) return; | 7495 if (i::FLAG_log_internal_timer_events) return; |
7490 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); | 7496 i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this); |
7491 isolate->set_event_logger(that); | 7497 isolate->set_event_logger(that); |
7492 } | 7498 } |
7493 | 7499 |
7494 | 7500 |
7495 void Isolate::AddBeforeCallEnteredCallback(BeforeCallEnteredCallback callback) { | 7501 void Isolate::AddBeforeCallEnteredCallback(BeforeCallEnteredCallback callback) { |
(...skipping 1301 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8797 Address callback_address = | 8803 Address callback_address = |
8798 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 8804 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
8799 VMState<EXTERNAL> state(isolate); | 8805 VMState<EXTERNAL> state(isolate); |
8800 ExternalCallbackScope call_scope(isolate, callback_address); | 8806 ExternalCallbackScope call_scope(isolate, callback_address); |
8801 callback(info); | 8807 callback(info); |
8802 } | 8808 } |
8803 | 8809 |
8804 | 8810 |
8805 } // namespace internal | 8811 } // namespace internal |
8806 } // namespace v8 | 8812 } // namespace v8 |
OLD | NEW |