| 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 4461 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 4472 | 4472 |
| 4473 bool v8::Object::IsConstructor() { | 4473 bool v8::Object::IsConstructor() { |
| 4474 auto self = Utils::OpenHandle(this); | 4474 auto self = Utils::OpenHandle(this); |
| 4475 return self->IsConstructor(); | 4475 return self->IsConstructor(); |
| 4476 } | 4476 } |
| 4477 | 4477 |
| 4478 MaybeLocal<Value> Object::CallAsFunction(Local<Context> context, | 4478 MaybeLocal<Value> Object::CallAsFunction(Local<Context> context, |
| 4479 Local<Value> recv, int argc, | 4479 Local<Value> recv, int argc, |
| 4480 Local<Value> argv[]) { | 4480 Local<Value> argv[]) { |
| 4481 PREPARE_FOR_EXECUTION_WITH_CALLBACK(context, Object, CallAsFunction, Value); | 4481 PREPARE_FOR_EXECUTION_WITH_CALLBACK(context, Object, CallAsFunction, Value); |
| 4482 i::HistogramTimerScope execute_timer(isolate->counters()->execute(), true); | |
| 4483 i::TimerEventScope<i::TimerEventExecute> timer_scope(isolate); | 4482 i::TimerEventScope<i::TimerEventExecute> timer_scope(isolate); |
| 4484 TRACE_EVENT0("v8", "V8.Execute"); | 4483 TRACE_EVENT0("v8", "V8.Execute"); |
| 4485 auto self = Utils::OpenHandle(this); | 4484 auto self = Utils::OpenHandle(this); |
| 4486 auto recv_obj = Utils::OpenHandle(*recv); | 4485 auto recv_obj = Utils::OpenHandle(*recv); |
| 4487 STATIC_ASSERT(sizeof(v8::Local<v8::Value>) == sizeof(i::Object**)); | 4486 STATIC_ASSERT(sizeof(v8::Local<v8::Value>) == sizeof(i::Object**)); |
| 4488 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv); | 4487 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv); |
| 4489 Local<Value> result; | 4488 Local<Value> result; |
| 4490 has_pending_exception = !ToLocal<Value>( | 4489 has_pending_exception = !ToLocal<Value>( |
| 4491 i::Execution::Call(isolate, self, recv_obj, argc, args), &result); | 4490 i::Execution::Call(isolate, self, recv_obj, argc, args), &result); |
| 4492 RETURN_ON_FAILED_EXECUTION(Value); | 4491 RETURN_ON_FAILED_EXECUTION(Value); |
| 4493 RETURN_ESCAPED(result); | 4492 RETURN_ESCAPED(result); |
| 4494 } | 4493 } |
| 4495 | 4494 |
| 4496 | 4495 |
| 4497 Local<v8::Value> Object::CallAsFunction(v8::Local<v8::Value> recv, int argc, | 4496 Local<v8::Value> Object::CallAsFunction(v8::Local<v8::Value> recv, int argc, |
| 4498 v8::Local<v8::Value> argv[]) { | 4497 v8::Local<v8::Value> argv[]) { |
| 4499 auto context = ContextFromHeapObject(Utils::OpenHandle(this)); | 4498 auto context = ContextFromHeapObject(Utils::OpenHandle(this)); |
| 4500 Local<Value>* argv_cast = reinterpret_cast<Local<Value>*>(argv); | 4499 Local<Value>* argv_cast = reinterpret_cast<Local<Value>*>(argv); |
| 4501 RETURN_TO_LOCAL_UNCHECKED(CallAsFunction(context, recv, argc, argv_cast), | 4500 RETURN_TO_LOCAL_UNCHECKED(CallAsFunction(context, recv, argc, argv_cast), |
| 4502 Value); | 4501 Value); |
| 4503 } | 4502 } |
| 4504 | 4503 |
| 4505 | 4504 |
| 4506 MaybeLocal<Value> Object::CallAsConstructor(Local<Context> context, int argc, | 4505 MaybeLocal<Value> Object::CallAsConstructor(Local<Context> context, int argc, |
| 4507 Local<Value> argv[]) { | 4506 Local<Value> argv[]) { |
| 4508 PREPARE_FOR_EXECUTION_WITH_CALLBACK(context, Object, CallAsConstructor, | 4507 PREPARE_FOR_EXECUTION_WITH_CALLBACK(context, Object, CallAsConstructor, |
| 4509 Value); | 4508 Value); |
| 4510 i::HistogramTimerScope execute_timer(isolate->counters()->execute(), true); | |
| 4511 i::TimerEventScope<i::TimerEventExecute> timer_scope(isolate); | 4509 i::TimerEventScope<i::TimerEventExecute> timer_scope(isolate); |
| 4512 TRACE_EVENT0("v8", "V8.Execute"); | 4510 TRACE_EVENT0("v8", "V8.Execute"); |
| 4513 auto self = Utils::OpenHandle(this); | 4511 auto self = Utils::OpenHandle(this); |
| 4514 STATIC_ASSERT(sizeof(v8::Local<v8::Value>) == sizeof(i::Object**)); | 4512 STATIC_ASSERT(sizeof(v8::Local<v8::Value>) == sizeof(i::Object**)); |
| 4515 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv); | 4513 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv); |
| 4516 Local<Value> result; | 4514 Local<Value> result; |
| 4517 has_pending_exception = !ToLocal<Value>( | 4515 has_pending_exception = !ToLocal<Value>( |
| 4518 i::Execution::New(isolate, self, self, argc, args), &result); | 4516 i::Execution::New(isolate, self, self, argc, args), &result); |
| 4519 RETURN_ON_FAILED_EXECUTION(Value); | 4517 RETURN_ON_FAILED_EXECUTION(Value); |
| 4520 RETURN_ESCAPED(result); | 4518 RETURN_ESCAPED(result); |
| (...skipping 30 matching lines...) Expand all Loading... |
| 4551 | 4549 |
| 4552 Local<v8::Object> Function::NewInstance() const { | 4550 Local<v8::Object> Function::NewInstance() const { |
| 4553 return NewInstance(Isolate::GetCurrent()->GetCurrentContext(), 0, NULL) | 4551 return NewInstance(Isolate::GetCurrent()->GetCurrentContext(), 0, NULL) |
| 4554 .FromMaybe(Local<Object>()); | 4552 .FromMaybe(Local<Object>()); |
| 4555 } | 4553 } |
| 4556 | 4554 |
| 4557 | 4555 |
| 4558 MaybeLocal<Object> Function::NewInstance(Local<Context> context, int argc, | 4556 MaybeLocal<Object> Function::NewInstance(Local<Context> context, int argc, |
| 4559 v8::Local<v8::Value> argv[]) const { | 4557 v8::Local<v8::Value> argv[]) const { |
| 4560 PREPARE_FOR_EXECUTION_WITH_CALLBACK(context, Function, NewInstance, Object); | 4558 PREPARE_FOR_EXECUTION_WITH_CALLBACK(context, Function, NewInstance, Object); |
| 4561 i::HistogramTimerScope execute_timer(isolate->counters()->execute(), true); | |
| 4562 i::TimerEventScope<i::TimerEventExecute> timer_scope(isolate); | 4559 i::TimerEventScope<i::TimerEventExecute> timer_scope(isolate); |
| 4563 TRACE_EVENT0("v8", "V8.Execute"); | 4560 TRACE_EVENT0("v8", "V8.Execute"); |
| 4564 auto self = Utils::OpenHandle(this); | 4561 auto self = Utils::OpenHandle(this); |
| 4565 STATIC_ASSERT(sizeof(v8::Local<v8::Value>) == sizeof(i::Object**)); | 4562 STATIC_ASSERT(sizeof(v8::Local<v8::Value>) == sizeof(i::Object**)); |
| 4566 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv); | 4563 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv); |
| 4567 Local<Object> result; | 4564 Local<Object> result; |
| 4568 has_pending_exception = !ToLocal<Object>( | 4565 has_pending_exception = !ToLocal<Object>( |
| 4569 i::Execution::New(isolate, self, self, argc, args), &result); | 4566 i::Execution::New(isolate, self, self, argc, args), &result); |
| 4570 RETURN_ON_FAILED_EXECUTION(Object); | 4567 RETURN_ON_FAILED_EXECUTION(Object); |
| 4571 RETURN_ESCAPED(result); | 4568 RETURN_ESCAPED(result); |
| 4572 } | 4569 } |
| 4573 | 4570 |
| 4574 | 4571 |
| 4575 Local<v8::Object> Function::NewInstance(int argc, | 4572 Local<v8::Object> Function::NewInstance(int argc, |
| 4576 v8::Local<v8::Value> argv[]) const { | 4573 v8::Local<v8::Value> argv[]) const { |
| 4577 auto context = ContextFromHeapObject(Utils::OpenHandle(this)); | 4574 auto context = ContextFromHeapObject(Utils::OpenHandle(this)); |
| 4578 RETURN_TO_LOCAL_UNCHECKED(NewInstance(context, argc, argv), Object); | 4575 RETURN_TO_LOCAL_UNCHECKED(NewInstance(context, argc, argv), Object); |
| 4579 } | 4576 } |
| 4580 | 4577 |
| 4581 | 4578 |
| 4582 MaybeLocal<v8::Value> Function::Call(Local<Context> context, | 4579 MaybeLocal<v8::Value> Function::Call(Local<Context> context, |
| 4583 v8::Local<v8::Value> recv, int argc, | 4580 v8::Local<v8::Value> recv, int argc, |
| 4584 v8::Local<v8::Value> argv[]) { | 4581 v8::Local<v8::Value> argv[]) { |
| 4585 PREPARE_FOR_EXECUTION_WITH_CALLBACK(context, Function, Call, Value); | 4582 PREPARE_FOR_EXECUTION_WITH_CALLBACK(context, Function, Call, Value); |
| 4586 i::HistogramTimerScope execute_timer(isolate->counters()->execute(), true); | |
| 4587 i::TimerEventScope<i::TimerEventExecute> timer_scope(isolate); | 4583 i::TimerEventScope<i::TimerEventExecute> timer_scope(isolate); |
| 4588 TRACE_EVENT0("v8", "V8.Execute"); | 4584 TRACE_EVENT0("v8", "V8.Execute"); |
| 4589 auto self = Utils::OpenHandle(this); | 4585 auto self = Utils::OpenHandle(this); |
| 4590 i::Handle<i::Object> recv_obj = Utils::OpenHandle(*recv); | 4586 i::Handle<i::Object> recv_obj = Utils::OpenHandle(*recv); |
| 4591 STATIC_ASSERT(sizeof(v8::Local<v8::Value>) == sizeof(i::Object**)); | 4587 STATIC_ASSERT(sizeof(v8::Local<v8::Value>) == sizeof(i::Object**)); |
| 4592 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv); | 4588 i::Handle<i::Object>* args = reinterpret_cast<i::Handle<i::Object>*>(argv); |
| 4593 Local<Value> result; | 4589 Local<Value> result; |
| 4594 has_pending_exception = !ToLocal<Value>( | 4590 has_pending_exception = !ToLocal<Value>( |
| 4595 i::Execution::Call(isolate, self, recv_obj, argc, args), &result); | 4591 i::Execution::Call(isolate, self, recv_obj, argc, args), &result); |
| 4596 RETURN_ON_FAILED_EXECUTION(Value); | 4592 RETURN_ON_FAILED_EXECUTION(Value); |
| (...skipping 4445 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 9042 Address callback_address = | 9038 Address callback_address = |
| 9043 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); | 9039 reinterpret_cast<Address>(reinterpret_cast<intptr_t>(callback)); |
| 9044 VMState<EXTERNAL> state(isolate); | 9040 VMState<EXTERNAL> state(isolate); |
| 9045 ExternalCallbackScope call_scope(isolate, callback_address); | 9041 ExternalCallbackScope call_scope(isolate, callback_address); |
| 9046 callback(info); | 9042 callback(info); |
| 9047 } | 9043 } |
| 9048 | 9044 |
| 9049 | 9045 |
| 9050 } // namespace internal | 9046 } // namespace internal |
| 9051 } // namespace v8 | 9047 } // namespace v8 |
| OLD | NEW |