| Index: src/api.cc
|
| diff --git a/src/api.cc b/src/api.cc
|
| index 2e82e05c99dfbd9a5b6e684b64dc6421f968dd0c..a6843345b71f6a4640c9d4f6434d24a571a208e1 100644
|
| --- a/src/api.cc
|
| +++ b/src/api.cc
|
| @@ -1031,27 +1031,6 @@ void Context::SetAlignedPointerInEmbedderData(int index, void* value) {
|
| }
|
|
|
|
|
| -// --- N e a n d e r ---
|
| -
|
| -
|
| -// A constructor cannot easily return an error value, therefore it is necessary
|
| -// to check for a dead VM with ON_BAILOUT before constructing any Neander
|
| -// objects. To remind you about this there is no HandleScope in the
|
| -// NeanderObject constructor. When you add one to the site calling the
|
| -// constructor you should check that you ensured the VM was not dead first.
|
| -NeanderObject::NeanderObject(v8::internal::Isolate* isolate, int size) {
|
| - ENTER_V8(isolate);
|
| - value_ = isolate->factory()->NewNeanderObject();
|
| - i::Handle<i::FixedArray> elements = isolate->factory()->NewFixedArray(size);
|
| - value_->set_elements(*elements);
|
| -}
|
| -
|
| -
|
| -int NeanderObject::size() {
|
| - return i::FixedArray::cast(value_->elements())->length();
|
| -}
|
| -
|
| -
|
| // --- T e m p l a t e ---
|
|
|
|
|
| @@ -7940,11 +7919,13 @@ bool Isolate::AddMessageListener(MessageCallback that, Local<Value> data) {
|
| ENTER_V8(isolate);
|
| i::HandleScope scope(isolate);
|
| i::Handle<i::TemplateList> list = isolate->factory()->message_listeners();
|
| - NeanderObject obj(isolate, 2);
|
| - obj.set(0, *isolate->factory()->NewForeign(FUNCTION_ADDR(that)));
|
| - obj.set(1, data.IsEmpty() ? isolate->heap()->undefined_value()
|
| - : *Utils::OpenHandle(*data));
|
| - list = i::TemplateList::Add(isolate, list, obj.value());
|
| + i::Handle<i::FixedArray> listener = isolate->factory()->NewFixedArray(2);
|
| + i::Handle<i::Foreign> foreign =
|
| + isolate->factory()->NewForeign(FUNCTION_ADDR(that));
|
| + listener->set(0, *foreign);
|
| + listener->set(1, data.IsEmpty() ? isolate->heap()->undefined_value()
|
| + : *Utils::OpenHandle(*data));
|
| + list = i::TemplateList::Add(isolate, list, listener);
|
| isolate->heap()->SetMessageListeners(*list);
|
| return true;
|
| }
|
| @@ -7958,9 +7939,8 @@ void Isolate::RemoveMessageListeners(MessageCallback that) {
|
| i::TemplateList* listeners = isolate->heap()->message_listeners();
|
| for (int i = 0; i < listeners->length(); i++) {
|
| if (listeners->get(i)->IsUndefined(isolate)) continue; // skip deleted ones
|
| -
|
| - NeanderObject listener(i::JSObject::cast(listeners->get(i)));
|
| - i::Foreign* callback_obj = i::Foreign::cast(listener.get(0));
|
| + i::FixedArray* listener = i::FixedArray::cast(listeners->get(i));
|
| + i::Foreign* callback_obj = i::Foreign::cast(listener->get(0));
|
| if (callback_obj->foreign_address() == FUNCTION_ADDR(that)) {
|
| listeners->set(i, isolate->heap()->undefined_value());
|
| }
|
|
|