| OLD | NEW |
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 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 167 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 178 heap_stats.memory_allocator_capacity = &memory_allocator_capacity; | 178 heap_stats.memory_allocator_capacity = &memory_allocator_capacity; |
| 179 int objects_per_type[LAST_TYPE + 1] = {0}; | 179 int objects_per_type[LAST_TYPE + 1] = {0}; |
| 180 heap_stats.objects_per_type = objects_per_type; | 180 heap_stats.objects_per_type = objects_per_type; |
| 181 int size_per_type[LAST_TYPE + 1] = {0}; | 181 int size_per_type[LAST_TYPE + 1] = {0}; |
| 182 heap_stats.size_per_type = size_per_type; | 182 heap_stats.size_per_type = size_per_type; |
| 183 int os_error; | 183 int os_error; |
| 184 heap_stats.os_error = &os_error; | 184 heap_stats.os_error = &os_error; |
| 185 int end_marker; | 185 int end_marker; |
| 186 heap_stats.end_marker = &end_marker; | 186 heap_stats.end_marker = &end_marker; |
| 187 i::Isolate* isolate = i::Isolate::Current(); | 187 i::Isolate* isolate = i::Isolate::Current(); |
| 188 isolate->heap()->RecordStats(&heap_stats, take_snapshot); | 188 // BUG(1718): |
| 189 // Don't use the take_snapshot since we don't support HeapIterator here |
| 190 // without doing a special GC. |
| 191 isolate->heap()->RecordStats(&heap_stats, false); |
| 189 i::V8::SetFatalError(); | 192 i::V8::SetFatalError(); |
| 190 FatalErrorCallback callback = GetFatalErrorHandler(); | 193 FatalErrorCallback callback = GetFatalErrorHandler(); |
| 191 { | 194 { |
| 192 LEAVE_V8(isolate); | 195 LEAVE_V8(isolate); |
| 193 callback(location, "Allocation failed - process out of memory"); | 196 callback(location, "Allocation failed - process out of memory"); |
| 194 } | 197 } |
| 195 // If the callback returns, we stop execution. | 198 // If the callback returns, we stop execution. |
| 196 UNREACHABLE(); | 199 UNREACHABLE(); |
| 197 } | 200 } |
| 198 | 201 |
| (...skipping 295 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 494 | 497 |
| 495 void RegisterExtension(Extension* that) { | 498 void RegisterExtension(Extension* that) { |
| 496 RegisteredExtension* extension = new RegisteredExtension(that); | 499 RegisteredExtension* extension = new RegisteredExtension(that); |
| 497 RegisteredExtension::Register(extension); | 500 RegisteredExtension::Register(extension); |
| 498 } | 501 } |
| 499 | 502 |
| 500 | 503 |
| 501 Extension::Extension(const char* name, | 504 Extension::Extension(const char* name, |
| 502 const char* source, | 505 const char* source, |
| 503 int dep_count, | 506 int dep_count, |
| 504 const char** deps) | 507 const char** deps, |
| 508 int source_length) |
| 505 : name_(name), | 509 : name_(name), |
| 506 source_(source), | 510 source_length_(source_length >= 0 ? |
| 511 source_length : (source ? strlen(source) : 0)), |
| 512 source_(source, source_length_), |
| 507 dep_count_(dep_count), | 513 dep_count_(dep_count), |
| 508 deps_(deps), | 514 deps_(deps), |
| 509 auto_enable_(false) { } | 515 auto_enable_(false) { } |
| 510 | 516 |
| 511 | 517 |
| 512 v8::Handle<Primitive> Undefined() { | 518 v8::Handle<Primitive> Undefined() { |
| 513 i::Isolate* isolate = i::Isolate::Current(); | 519 i::Isolate* isolate = i::Isolate::Current(); |
| 514 if (!EnsureInitializedForIsolate(isolate, "v8::Undefined()")) { | 520 if (!EnsureInitializedForIsolate(isolate, "v8::Undefined()")) { |
| 515 return v8::Handle<v8::Primitive>(); | 521 return v8::Handle<v8::Primitive>(); |
| 516 } | 522 } |
| (...skipping 2680 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3197 } | 3203 } |
| 3198 | 3204 |
| 3199 | 3205 |
| 3200 bool v8::Object::SetHiddenValue(v8::Handle<v8::String> key, | 3206 bool v8::Object::SetHiddenValue(v8::Handle<v8::String> key, |
| 3201 v8::Handle<v8::Value> value) { | 3207 v8::Handle<v8::Value> value) { |
| 3202 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3208 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 3203 ON_BAILOUT(isolate, "v8::Object::SetHiddenValue()", return false); | 3209 ON_BAILOUT(isolate, "v8::Object::SetHiddenValue()", return false); |
| 3204 ENTER_V8(isolate); | 3210 ENTER_V8(isolate); |
| 3205 i::HandleScope scope(isolate); | 3211 i::HandleScope scope(isolate); |
| 3206 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 3212 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 3207 i::Handle<i::Object> hidden_props(i::GetHiddenProperties( | 3213 i::Handle<i::String> key_obj = Utils::OpenHandle(*key); |
| 3208 self, | |
| 3209 i::JSObject::ALLOW_CREATION)); | |
| 3210 i::Handle<i::Object> key_obj = Utils::OpenHandle(*key); | |
| 3211 i::Handle<i::Object> value_obj = Utils::OpenHandle(*value); | 3214 i::Handle<i::Object> value_obj = Utils::OpenHandle(*value); |
| 3212 EXCEPTION_PREAMBLE(isolate); | 3215 i::Handle<i::Object> result = i::SetHiddenProperty(self, key_obj, value_obj); |
| 3213 i::Handle<i::Object> obj = i::SetProperty( | 3216 return *result == *self; |
| 3214 hidden_props, | |
| 3215 key_obj, | |
| 3216 value_obj, | |
| 3217 static_cast<PropertyAttributes>(None), | |
| 3218 i::kNonStrictMode); | |
| 3219 has_pending_exception = obj.is_null(); | |
| 3220 EXCEPTION_BAILOUT_CHECK(isolate, false); | |
| 3221 return true; | |
| 3222 } | 3217 } |
| 3223 | 3218 |
| 3224 | 3219 |
| 3225 v8::Local<v8::Value> v8::Object::GetHiddenValue(v8::Handle<v8::String> key) { | 3220 v8::Local<v8::Value> v8::Object::GetHiddenValue(v8::Handle<v8::String> key) { |
| 3226 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3221 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 3227 ON_BAILOUT(isolate, "v8::Object::GetHiddenValue()", | 3222 ON_BAILOUT(isolate, "v8::Object::GetHiddenValue()", |
| 3228 return Local<v8::Value>()); | 3223 return Local<v8::Value>()); |
| 3229 ENTER_V8(isolate); | 3224 ENTER_V8(isolate); |
| 3230 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 3225 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 3231 i::Handle<i::Object> hidden_props(i::GetHiddenProperties( | |
| 3232 self, | |
| 3233 i::JSObject::OMIT_CREATION)); | |
| 3234 if (hidden_props->IsUndefined()) { | |
| 3235 return v8::Local<v8::Value>(); | |
| 3236 } | |
| 3237 i::Handle<i::String> key_obj = Utils::OpenHandle(*key); | 3226 i::Handle<i::String> key_obj = Utils::OpenHandle(*key); |
| 3238 EXCEPTION_PREAMBLE(isolate); | 3227 i::Handle<i::Object> result(self->GetHiddenProperty(*key_obj)); |
| 3239 i::Handle<i::Object> result = i::GetProperty(hidden_props, key_obj); | 3228 if (result->IsUndefined()) return v8::Local<v8::Value>(); |
| 3240 has_pending_exception = result.is_null(); | |
| 3241 EXCEPTION_BAILOUT_CHECK(isolate, v8::Local<v8::Value>()); | |
| 3242 if (result->IsUndefined()) { | |
| 3243 return v8::Local<v8::Value>(); | |
| 3244 } | |
| 3245 return Utils::ToLocal(result); | 3229 return Utils::ToLocal(result); |
| 3246 } | 3230 } |
| 3247 | 3231 |
| 3248 | 3232 |
| 3249 bool v8::Object::DeleteHiddenValue(v8::Handle<v8::String> key) { | 3233 bool v8::Object::DeleteHiddenValue(v8::Handle<v8::String> key) { |
| 3250 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3234 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 3251 ON_BAILOUT(isolate, "v8::DeleteHiddenValue()", return false); | 3235 ON_BAILOUT(isolate, "v8::DeleteHiddenValue()", return false); |
| 3252 ENTER_V8(isolate); | 3236 ENTER_V8(isolate); |
| 3253 i::HandleScope scope(isolate); | 3237 i::HandleScope scope(isolate); |
| 3254 i::Handle<i::JSObject> self = Utils::OpenHandle(this); | 3238 i::Handle<i::JSObject> self = Utils::OpenHandle(this); |
| 3255 i::Handle<i::Object> hidden_props(i::GetHiddenProperties( | |
| 3256 self, | |
| 3257 i::JSObject::OMIT_CREATION)); | |
| 3258 if (hidden_props->IsUndefined()) { | |
| 3259 return true; | |
| 3260 } | |
| 3261 i::Handle<i::JSObject> js_obj(i::JSObject::cast(*hidden_props)); | |
| 3262 i::Handle<i::String> key_obj = Utils::OpenHandle(*key); | 3239 i::Handle<i::String> key_obj = Utils::OpenHandle(*key); |
| 3263 return i::DeleteProperty(js_obj, key_obj)->IsTrue(); | 3240 self->DeleteHiddenProperty(*key_obj); |
| 3241 return true; |
| 3264 } | 3242 } |
| 3265 | 3243 |
| 3266 | 3244 |
| 3267 namespace { | 3245 namespace { |
| 3268 | 3246 |
| 3269 static i::ElementsKind GetElementsKindFromExternalArrayType( | 3247 static i::ElementsKind GetElementsKindFromExternalArrayType( |
| 3270 ExternalArrayType array_type) { | 3248 ExternalArrayType array_type) { |
| 3271 switch (array_type) { | 3249 switch (array_type) { |
| 3272 case kExternalByteArray: | 3250 case kExternalByteArray: |
| 3273 return i::EXTERNAL_BYTE_ELEMENTS; | 3251 return i::EXTERNAL_BYTE_ELEMENTS; |
| (...skipping 29 matching lines...) Expand all Loading... |
| 3303 | 3281 |
| 3304 | 3282 |
| 3305 void PrepareExternalArrayElements(i::Handle<i::JSObject> object, | 3283 void PrepareExternalArrayElements(i::Handle<i::JSObject> object, |
| 3306 void* data, | 3284 void* data, |
| 3307 ExternalArrayType array_type, | 3285 ExternalArrayType array_type, |
| 3308 int length) { | 3286 int length) { |
| 3309 i::Isolate* isolate = object->GetIsolate(); | 3287 i::Isolate* isolate = object->GetIsolate(); |
| 3310 i::Handle<i::ExternalArray> array = | 3288 i::Handle<i::ExternalArray> array = |
| 3311 isolate->factory()->NewExternalArray(length, array_type, data); | 3289 isolate->factory()->NewExternalArray(length, array_type, data); |
| 3312 | 3290 |
| 3313 // If the object already has external elements, create a new, unique | 3291 i::Handle<i::Map> external_array_map = |
| 3314 // map if the element type is now changing, because assumptions about | 3292 isolate->factory()->GetElementsTransitionMap( |
| 3315 // generated code based on the receiver's map will be invalid. | 3293 object, |
| 3316 i::Handle<i::HeapObject> elements(object->elements()); | 3294 GetElementsKindFromExternalArrayType(array_type)); |
| 3317 bool cant_reuse_map = | 3295 |
| 3318 elements->map()->IsUndefined() || | 3296 object->set_map(*external_array_map); |
| 3319 !elements->map()->has_external_array_elements() || | |
| 3320 elements->map() != isolate->heap()->MapForExternalArrayType(array_type); | |
| 3321 if (cant_reuse_map) { | |
| 3322 i::Handle<i::Map> external_array_map = | |
| 3323 isolate->factory()->GetElementsTransitionMap( | |
| 3324 i::Handle<i::Map>(object->map()), | |
| 3325 GetElementsKindFromExternalArrayType(array_type), | |
| 3326 object->HasFastProperties()); | |
| 3327 object->set_map(*external_array_map); | |
| 3328 } | |
| 3329 object->set_elements(*array); | 3297 object->set_elements(*array); |
| 3330 } | 3298 } |
| 3331 | 3299 |
| 3332 } // namespace | 3300 } // namespace |
| 3333 | 3301 |
| 3334 | 3302 |
| 3335 void v8::Object::SetIndexedPropertiesToPixelData(uint8_t* data, int length) { | 3303 void v8::Object::SetIndexedPropertiesToPixelData(uint8_t* data, int length) { |
| 3336 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); | 3304 i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate(); |
| 3337 ON_BAILOUT(isolate, "v8::SetElementsToPixelData()", return); | 3305 ON_BAILOUT(isolate, "v8::SetElementsToPixelData()", return); |
| 3338 ENTER_V8(isolate); | 3306 ENTER_V8(isolate); |
| (...skipping 453 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3792 if (IsDeadCheck(str->GetIsolate(), "v8::String::IsExternalAscii()")) { | 3760 if (IsDeadCheck(str->GetIsolate(), "v8::String::IsExternalAscii()")) { |
| 3793 return false; | 3761 return false; |
| 3794 } | 3762 } |
| 3795 return i::StringShape(*str).IsExternalAscii(); | 3763 return i::StringShape(*str).IsExternalAscii(); |
| 3796 } | 3764 } |
| 3797 | 3765 |
| 3798 | 3766 |
| 3799 void v8::String::VerifyExternalStringResource( | 3767 void v8::String::VerifyExternalStringResource( |
| 3800 v8::String::ExternalStringResource* value) const { | 3768 v8::String::ExternalStringResource* value) const { |
| 3801 i::Handle<i::String> str = Utils::OpenHandle(this); | 3769 i::Handle<i::String> str = Utils::OpenHandle(this); |
| 3802 v8::String::ExternalStringResource* expected; | 3770 const v8::String::ExternalStringResource* expected; |
| 3803 if (i::StringShape(*str).IsExternalTwoByte()) { | 3771 if (i::StringShape(*str).IsExternalTwoByte()) { |
| 3804 void* resource = i::Handle<i::ExternalTwoByteString>::cast(str)->resource(); | 3772 const void* resource = |
| 3805 expected = reinterpret_cast<ExternalStringResource*>(resource); | 3773 i::Handle<i::ExternalTwoByteString>::cast(str)->resource(); |
| 3774 expected = reinterpret_cast<const ExternalStringResource*>(resource); |
| 3806 } else { | 3775 } else { |
| 3807 expected = NULL; | 3776 expected = NULL; |
| 3808 } | 3777 } |
| 3809 CHECK_EQ(expected, value); | 3778 CHECK_EQ(expected, value); |
| 3810 } | 3779 } |
| 3811 | 3780 |
| 3812 | 3781 |
| 3813 v8::String::ExternalAsciiStringResource* | 3782 const v8::String::ExternalAsciiStringResource* |
| 3814 v8::String::GetExternalAsciiStringResource() const { | 3783 v8::String::GetExternalAsciiStringResource() const { |
| 3815 i::Handle<i::String> str = Utils::OpenHandle(this); | 3784 i::Handle<i::String> str = Utils::OpenHandle(this); |
| 3816 if (IsDeadCheck(str->GetIsolate(), | 3785 if (IsDeadCheck(str->GetIsolate(), |
| 3817 "v8::String::GetExternalAsciiStringResource()")) { | 3786 "v8::String::GetExternalAsciiStringResource()")) { |
| 3818 return NULL; | 3787 return NULL; |
| 3819 } | 3788 } |
| 3820 if (i::StringShape(*str).IsExternalAscii()) { | 3789 if (i::StringShape(*str).IsExternalAscii()) { |
| 3821 void* resource = i::Handle<i::ExternalAsciiString>::cast(str)->resource(); | 3790 const void* resource = |
| 3822 return reinterpret_cast<ExternalAsciiStringResource*>(resource); | 3791 i::Handle<i::ExternalAsciiString>::cast(str)->resource(); |
| 3792 return reinterpret_cast<const ExternalAsciiStringResource*>(resource); |
| 3823 } else { | 3793 } else { |
| 3824 return NULL; | 3794 return NULL; |
| 3825 } | 3795 } |
| 3826 } | 3796 } |
| 3827 | 3797 |
| 3828 | 3798 |
| 3829 double Number::Value() const { | 3799 double Number::Value() const { |
| 3830 if (IsDeadCheck(i::Isolate::Current(), "v8::Number::Value()")) return 0; | 3800 if (IsDeadCheck(i::Isolate::Current(), "v8::Number::Value()")) return 0; |
| 3831 i::Handle<i::Object> obj = Utils::OpenHandle(this); | 3801 i::Handle<i::Object> obj = Utils::OpenHandle(this); |
| 3832 return obj->Number(); | 3802 return obj->Number(); |
| (...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4002 // Returning true tells the caller that it need not | 3972 // Returning true tells the caller that it need not |
| 4003 // continue to call IdleNotification. | 3973 // continue to call IdleNotification. |
| 4004 if (!i::Isolate::Current()->IsInitialized()) return true; | 3974 if (!i::Isolate::Current()->IsInitialized()) return true; |
| 4005 return i::V8::IdleNotification(); | 3975 return i::V8::IdleNotification(); |
| 4006 } | 3976 } |
| 4007 | 3977 |
| 4008 | 3978 |
| 4009 void v8::V8::LowMemoryNotification() { | 3979 void v8::V8::LowMemoryNotification() { |
| 4010 i::Isolate* isolate = i::Isolate::Current(); | 3980 i::Isolate* isolate = i::Isolate::Current(); |
| 4011 if (!isolate->IsInitialized()) return; | 3981 if (!isolate->IsInitialized()) return; |
| 4012 isolate->heap()->CollectAllGarbage(true); | 3982 isolate->heap()->CollectAllAvailableGarbage(); |
| 4013 } | 3983 } |
| 4014 | 3984 |
| 4015 | 3985 |
| 4016 int v8::V8::ContextDisposedNotification() { | 3986 int v8::V8::ContextDisposedNotification() { |
| 4017 i::Isolate* isolate = i::Isolate::Current(); | 3987 i::Isolate* isolate = i::Isolate::Current(); |
| 4018 if (!isolate->IsInitialized()) return 0; | 3988 if (!isolate->IsInitialized()) return 0; |
| 4019 return isolate->heap()->NotifyContextDisposed(); | 3989 return isolate->heap()->NotifyContextDisposed(); |
| 4020 } | 3990 } |
| 4021 | 3991 |
| 4022 | 3992 |
| (...skipping 1450 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5473 EXCEPTION_BAILOUT_CHECK(isolate, Local<Value>()); | 5443 EXCEPTION_BAILOUT_CHECK(isolate, Local<Value>()); |
| 5474 return scope.Close(result); | 5444 return scope.Close(result); |
| 5475 } | 5445 } |
| 5476 | 5446 |
| 5477 | 5447 |
| 5478 bool Debug::EnableAgent(const char* name, int port, bool wait_for_connection) { | 5448 bool Debug::EnableAgent(const char* name, int port, bool wait_for_connection) { |
| 5479 return i::Isolate::Current()->debugger()->StartAgent(name, port, | 5449 return i::Isolate::Current()->debugger()->StartAgent(name, port, |
| 5480 wait_for_connection); | 5450 wait_for_connection); |
| 5481 } | 5451 } |
| 5482 | 5452 |
| 5453 |
| 5454 void Debug::DisableAgent() { |
| 5455 return i::Isolate::Current()->debugger()->StopAgent(); |
| 5456 } |
| 5457 |
| 5458 |
| 5483 void Debug::ProcessDebugMessages() { | 5459 void Debug::ProcessDebugMessages() { |
| 5484 i::Execution::ProcessDebugMesssages(true); | 5460 i::Execution::ProcessDebugMesssages(true); |
| 5485 } | 5461 } |
| 5486 | 5462 |
| 5487 Local<Context> Debug::GetDebugContext() { | 5463 Local<Context> Debug::GetDebugContext() { |
| 5488 i::Isolate* isolate = i::Isolate::Current(); | 5464 i::Isolate* isolate = i::Isolate::Current(); |
| 5489 EnsureInitializedForIsolate(isolate, "v8::Debug::GetDebugContext()"); | 5465 EnsureInitializedForIsolate(isolate, "v8::Debug::GetDebugContext()"); |
| 5490 ENTER_V8(isolate); | 5466 ENTER_V8(isolate); |
| 5491 return Utils::ToLocal(i::Isolate::Current()->debugger()->GetDebugContext()); | 5467 return Utils::ToLocal(i::Isolate::Current()->debugger()->GetDebugContext()); |
| 5492 } | 5468 } |
| (...skipping 304 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 5797 } | 5773 } |
| 5798 | 5774 |
| 5799 | 5775 |
| 5800 const HeapGraphNode* HeapGraphNode::GetDominatorNode() const { | 5776 const HeapGraphNode* HeapGraphNode::GetDominatorNode() const { |
| 5801 i::Isolate* isolate = i::Isolate::Current(); | 5777 i::Isolate* isolate = i::Isolate::Current(); |
| 5802 IsDeadCheck(isolate, "v8::HeapSnapshot::GetDominatorNode"); | 5778 IsDeadCheck(isolate, "v8::HeapSnapshot::GetDominatorNode"); |
| 5803 return reinterpret_cast<const HeapGraphNode*>(ToInternal(this)->dominator()); | 5779 return reinterpret_cast<const HeapGraphNode*>(ToInternal(this)->dominator()); |
| 5804 } | 5780 } |
| 5805 | 5781 |
| 5806 | 5782 |
| 5783 v8::Handle<v8::Value> HeapGraphNode::GetHeapValue() const { |
| 5784 i::Isolate* isolate = i::Isolate::Current(); |
| 5785 IsDeadCheck(isolate, "v8::HeapGraphNode::GetHeapValue"); |
| 5786 i::Handle<i::HeapObject> object = ToInternal(this)->GetHeapObject(); |
| 5787 return v8::Handle<Value>(!object.is_null() ? |
| 5788 ToApi<Value>(object) : ToApi<Value>( |
| 5789 isolate->factory()->undefined_value())); |
| 5790 } |
| 5791 |
| 5792 |
| 5807 static i::HeapSnapshot* ToInternal(const HeapSnapshot* snapshot) { | 5793 static i::HeapSnapshot* ToInternal(const HeapSnapshot* snapshot) { |
| 5808 return const_cast<i::HeapSnapshot*>( | 5794 return const_cast<i::HeapSnapshot*>( |
| 5809 reinterpret_cast<const i::HeapSnapshot*>(snapshot)); | 5795 reinterpret_cast<const i::HeapSnapshot*>(snapshot)); |
| 5810 } | 5796 } |
| 5811 | 5797 |
| 5812 | 5798 |
| 5813 void HeapSnapshot::Delete() { | 5799 void HeapSnapshot::Delete() { |
| 5814 i::Isolate* isolate = i::Isolate::Current(); | 5800 i::Isolate* isolate = i::Isolate::Current(); |
| 5815 IsDeadCheck(isolate, "v8::HeapSnapshot::Delete"); | 5801 IsDeadCheck(isolate, "v8::HeapSnapshot::Delete"); |
| 5816 if (i::HeapProfiler::GetSnapshotsCount() > 1) { | 5802 if (i::HeapProfiler::GetSnapshotsCount() > 1) { |
| (...skipping 259 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 6076 | 6062 |
| 6077 | 6063 |
| 6078 char* HandleScopeImplementer::Iterate(ObjectVisitor* v, char* storage) { | 6064 char* HandleScopeImplementer::Iterate(ObjectVisitor* v, char* storage) { |
| 6079 HandleScopeImplementer* scope_implementer = | 6065 HandleScopeImplementer* scope_implementer = |
| 6080 reinterpret_cast<HandleScopeImplementer*>(storage); | 6066 reinterpret_cast<HandleScopeImplementer*>(storage); |
| 6081 scope_implementer->IterateThis(v); | 6067 scope_implementer->IterateThis(v); |
| 6082 return storage + ArchiveSpacePerThread(); | 6068 return storage + ArchiveSpacePerThread(); |
| 6083 } | 6069 } |
| 6084 | 6070 |
| 6085 } } // namespace v8::internal | 6071 } } // namespace v8::internal |
| OLD | NEW |