| 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 4479 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4490 } | 4490 } |
| 4491 | 4491 |
| 4492 | 4492 |
| 4493 Local<v8::Value> Object::CallAsConstructor(int argc, | 4493 Local<v8::Value> Object::CallAsConstructor(int argc, |
| 4494 v8::Local<v8::Value> argv[]) { | 4494 v8::Local<v8::Value> argv[]) { |
| 4495 auto context = ContextFromHeapObject(Utils::OpenHandle(this)); | 4495 auto context = ContextFromHeapObject(Utils::OpenHandle(this)); |
| 4496 Local<Value>* argv_cast = reinterpret_cast<Local<Value>*>(argv); | 4496 Local<Value>* argv_cast = reinterpret_cast<Local<Value>*>(argv); |
| 4497 RETURN_TO_LOCAL_UNCHECKED(CallAsConstructor(context, argc, argv_cast), Value); | 4497 RETURN_TO_LOCAL_UNCHECKED(CallAsConstructor(context, argc, argv_cast), Value); |
| 4498 } | 4498 } |
| 4499 | 4499 |
| 4500 | |
| 4501 MaybeLocal<Function> Function::New(Local<Context> context, | 4500 MaybeLocal<Function> Function::New(Local<Context> context, |
| 4502 FunctionCallback callback, Local<Value> data, | 4501 FunctionCallback callback, Local<Value> data, |
| 4503 int length) { | 4502 int length, bool remove_prototype) { |
| 4504 i::Isolate* isolate = Utils::OpenHandle(*context)->GetIsolate(); | 4503 i::Isolate* isolate = Utils::OpenHandle(*context)->GetIsolate(); |
| 4505 LOG_API(isolate, Function, New); | 4504 LOG_API(isolate, Function, New); |
| 4506 ENTER_V8(isolate); | 4505 ENTER_V8(isolate); |
| 4507 return FunctionTemplateNew(isolate, callback, nullptr, data, | 4506 auto templ = FunctionTemplateNew(isolate, callback, nullptr, data, |
| 4508 Local<Signature>(), length, true) | 4507 Local<Signature>(), length, true); |
| 4509 ->GetFunction(context); | 4508 if (remove_prototype) templ->RemovePrototype(); |
| 4509 return templ->GetFunction(context); |
| 4510 } | 4510 } |
| 4511 | 4511 |
| 4512 | 4512 |
| 4513 Local<Function> Function::New(Isolate* v8_isolate, FunctionCallback callback, | 4513 Local<Function> Function::New(Isolate* v8_isolate, FunctionCallback callback, |
| 4514 Local<Value> data, int length) { | 4514 Local<Value> data, int length) { |
| 4515 return Function::New(v8_isolate->GetCurrentContext(), callback, data, length) | 4515 return Function::New(v8_isolate->GetCurrentContext(), callback, data, length, |
| 4516 false) |
| 4516 .FromMaybe(Local<Function>()); | 4517 .FromMaybe(Local<Function>()); |
| 4517 } | 4518 } |
| 4518 | 4519 |
| 4519 | 4520 |
| 4520 Local<v8::Object> Function::NewInstance() const { | 4521 Local<v8::Object> Function::NewInstance() const { |
| 4521 return NewInstance(Isolate::GetCurrent()->GetCurrentContext(), 0, NULL) | 4522 return NewInstance(Isolate::GetCurrent()->GetCurrentContext(), 0, NULL) |
| 4522 .FromMaybe(Local<Object>()); | 4523 .FromMaybe(Local<Object>()); |
| 4523 } | 4524 } |
| 4524 | 4525 |
| 4525 | 4526 |
| (...skipping 4413 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 8939 Address callback_address = | 8940 Address callback_address = |
| 8940 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 8941 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
| 8941 VMState<EXTERNAL> state(isolate); | 8942 VMState<EXTERNAL> state(isolate); |
| 8942 ExternalCallbackScope call_scope(isolate, callback_address); | 8943 ExternalCallbackScope call_scope(isolate, callback_address); |
| 8943 callback(info); | 8944 callback(info); |
| 8944 } | 8945 } |
| 8945 | 8946 |
| 8946 | 8947 |
| 8947 } // namespace internal | 8948 } // namespace internal |
| 8948 } // namespace v8 | 8949 } // namespace v8 |
| OLD | NEW |