| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index 5b41f926d9e75763829ddf3d77463f205358d184..415bd41bb19496036f3bda9a6c78ac55ec033ecd 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -624,7 +624,8 @@ bool SetResourceConstraints(ResourceConstraints* constraints) {
|
| uintptr_t limit = reinterpret_cast<uintptr_t>(constraints->stack_limit());
|
| isolate->stack_guard()->SetStackLimit(limit);
|
| }
|
| - if (constraints->is_memory_constrained().has_value) {
|
| + if (constraints->is_memory_constrained().has_value &&
|
| + !i::FLAG_force_memory_constrained.has_value) {
|
| isolate->set_is_memory_constrained(
|
| constraints->is_memory_constrained().value);
|
| }
|
| @@ -2056,7 +2057,7 @@ v8::Local<Value> v8::TryCatch::StackTrace() const {
|
| i::HandleScope scope(isolate_);
|
| i::Handle<i::JSObject> obj(i::JSObject::cast(raw_obj), isolate_);
|
| i::Handle<i::String> name = isolate_->factory()->stack_string();
|
| - if (!obj->HasProperty(*name)) return v8::Local<Value>();
|
| + if (!i::JSReceiver::HasProperty(obj, name)) return v8::Local<Value>();
|
| i::Handle<i::Object> value = i::GetProperty(isolate_, obj, name);
|
| if (value.is_null()) return v8::Local<Value>();
|
| return v8::Utils::ToLocal(scope.CloseAndEscape(value));
|
| @@ -3625,7 +3626,7 @@ bool v8::Object::Has(uint32_t index) {
|
| i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
|
| ON_BAILOUT(isolate, "v8::Object::HasProperty()", return false);
|
| i::Handle<i::JSObject> self = Utils::OpenHandle(this);
|
| - return self->HasElement(index);
|
| + return i::JSReceiver::HasElement(self, index);
|
| }
|
|
|
|
|
| @@ -3679,8 +3680,8 @@ bool v8::Object::HasOwnProperty(Handle<String> key) {
|
| i::Isolate* isolate = Utils::OpenHandle(this)->GetIsolate();
|
| ON_BAILOUT(isolate, "v8::Object::HasOwnProperty()",
|
| return false);
|
| - return Utils::OpenHandle(this)->HasLocalProperty(
|
| - *Utils::OpenHandle(*key));
|
| + return i::JSReceiver::HasLocalProperty(
|
| + Utils::OpenHandle(this), Utils::OpenHandle(*key));
|
| }
|
|
|
|
|
| @@ -5423,7 +5424,6 @@ Local<Context> v8::Context::New(
|
| v8::ExtensionConfiguration* extensions,
|
| v8::Handle<ObjectTemplate> global_template,
|
| v8::Handle<Value> global_object) {
|
| - i::Isolate::EnsureDefaultIsolate();
|
| i::Isolate* isolate = reinterpret_cast<i::Isolate*>(external_isolate);
|
| EnsureInitializedForIsolate(isolate, "v8::Context::New()");
|
| LOG_API(isolate, "Context::New");
|
| @@ -6685,45 +6685,65 @@ void Isolate::SetReference(const Persistent<Object>& parent,
|
| }
|
|
|
|
|
| -void V8::SetGlobalGCPrologueCallback(GCCallback callback) {
|
| - i::Isolate* isolate = i::Isolate::Current();
|
| - if (IsDeadCheck(isolate, "v8::V8::SetGlobalGCPrologueCallback()")) return;
|
| - isolate->heap()->SetGlobalGCPrologueCallback(callback);
|
| +void Isolate::AddGCPrologueCallback(GCPrologueCallback callback,
|
| + GCType gc_type) {
|
| + i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this);
|
| + isolate->heap()->AddGCPrologueCallback(callback, gc_type);
|
| }
|
|
|
|
|
| -void V8::SetGlobalGCEpilogueCallback(GCCallback callback) {
|
| - i::Isolate* isolate = i::Isolate::Current();
|
| - if (IsDeadCheck(isolate, "v8::V8::SetGlobalGCEpilogueCallback()")) return;
|
| - isolate->heap()->SetGlobalGCEpilogueCallback(callback);
|
| +void Isolate::RemoveGCPrologueCallback(GCPrologueCallback callback) {
|
| + i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this);
|
| + isolate->heap()->RemoveGCPrologueCallback(callback);
|
| +}
|
| +
|
| +
|
| +void Isolate::AddGCEpilogueCallback(GCEpilogueCallback callback,
|
| + GCType gc_type) {
|
| + i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this);
|
| + isolate->heap()->AddGCEpilogueCallback(callback, gc_type);
|
| +}
|
| +
|
| +
|
| +void Isolate::RemoveGCEpilogueCallback(GCEpilogueCallback callback) {
|
| + i::Isolate* isolate = reinterpret_cast<i::Isolate*>(this);
|
| + isolate->heap()->RemoveGCEpilogueCallback(callback);
|
| }
|
|
|
|
|
| void V8::AddGCPrologueCallback(GCPrologueCallback callback, GCType gc_type) {
|
| i::Isolate* isolate = i::Isolate::Current();
|
| if (IsDeadCheck(isolate, "v8::V8::AddGCPrologueCallback()")) return;
|
| - isolate->heap()->AddGCPrologueCallback(callback, gc_type);
|
| + isolate->heap()->AddGCPrologueCallback(
|
| + reinterpret_cast<v8::Isolate::GCPrologueCallback>(callback),
|
| + gc_type,
|
| + false);
|
| }
|
|
|
|
|
| void V8::RemoveGCPrologueCallback(GCPrologueCallback callback) {
|
| i::Isolate* isolate = i::Isolate::Current();
|
| if (IsDeadCheck(isolate, "v8::V8::RemoveGCPrologueCallback()")) return;
|
| - isolate->heap()->RemoveGCPrologueCallback(callback);
|
| + isolate->heap()->RemoveGCPrologueCallback(
|
| + reinterpret_cast<v8::Isolate::GCPrologueCallback>(callback));
|
| }
|
|
|
|
|
| void V8::AddGCEpilogueCallback(GCEpilogueCallback callback, GCType gc_type) {
|
| i::Isolate* isolate = i::Isolate::Current();
|
| if (IsDeadCheck(isolate, "v8::V8::AddGCEpilogueCallback()")) return;
|
| - isolate->heap()->AddGCEpilogueCallback(callback, gc_type);
|
| + isolate->heap()->AddGCEpilogueCallback(
|
| + reinterpret_cast<v8::Isolate::GCEpilogueCallback>(callback),
|
| + gc_type,
|
| + false);
|
| }
|
|
|
|
|
| void V8::RemoveGCEpilogueCallback(GCEpilogueCallback callback) {
|
| i::Isolate* isolate = i::Isolate::Current();
|
| if (IsDeadCheck(isolate, "v8::V8::RemoveGCEpilogueCallback()")) return;
|
| - isolate->heap()->RemoveGCEpilogueCallback(callback);
|
| + isolate->heap()->RemoveGCEpilogueCallback(
|
| + reinterpret_cast<v8::Isolate::GCEpilogueCallback>(callback));
|
| }
|
|
|
|
|
| @@ -6747,7 +6767,6 @@ void V8::RemoveMemoryAllocationCallback(MemoryAllocationCallback callback) {
|
|
|
| void V8::AddCallCompletedCallback(CallCompletedCallback callback) {
|
| if (callback == NULL) return;
|
| - i::Isolate::EnsureDefaultIsolate();
|
| i::Isolate* isolate = i::Isolate::Current();
|
| if (IsDeadCheck(isolate, "v8::V8::AddLeaveScriptCallback()")) return;
|
| i::V8::AddCallCompletedCallback(callback);
|
| @@ -6755,7 +6774,6 @@ void V8::AddCallCompletedCallback(CallCompletedCallback callback) {
|
|
|
|
|
| void V8::RemoveCallCompletedCallback(CallCompletedCallback callback) {
|
| - i::Isolate::EnsureDefaultIsolate();
|
| i::Isolate* isolate = i::Isolate::Current();
|
| if (IsDeadCheck(isolate, "v8::V8::RemoveLeaveScriptCallback()")) return;
|
| i::V8::RemoveCallCompletedCallback(callback);
|
| @@ -7062,6 +7080,16 @@ void Debug::SetMessageHandler2(v8::Debug::MessageHandler2 handler) {
|
| }
|
|
|
|
|
| +void Debug::SendCommand(Isolate* isolate,
|
| + const uint16_t* command,
|
| + int length,
|
| + ClientData* client_data) {
|
| + i::Isolate* internal_isolate = reinterpret_cast<i::Isolate*>(isolate);
|
| + internal_isolate->debugger()->ProcessCommand(
|
| + i::Vector<const uint16_t>(command, length), client_data);
|
| +}
|
| +
|
| +
|
| void Debug::SendCommand(const uint16_t* command, int length,
|
| ClientData* client_data,
|
| Isolate* isolate) {
|
|
|