#0 v8::internal::Logger::TimerEvent (this=<optimized out>, se=<optimized out>, name=<optimized out>) at ../../v8/src/log.cc:866
#1 0x00007f0cfcb23b39 in TimerEventScope (this=<optimized out>, isolate=<optimized out>) at ../../v8/src/log.h:354
#2 v8::Function::Call (this=<optimized out>, context=..., recv=..., argc=<optimized out>, argv=<optimized out>) at ../../v8/src/api.cc:5094
#3 0x00007f0cf18daa0b in blink::V8ScriptRunner::callFunction (function=..., context=0x201b099829d0, receiver=..., argc=1, args=0x7fffe9e1cea0,
isolate=0x2def318c6020) at ../../third_party/WebKit/Source/bindings/core/v8/V8ScriptRunner.cpp:658
#4 0x00007f0cf18a1c26 in blink::V8EventListener::callListenerFunction (this=0xe9381bfbea0, scriptState=0x37fa7244c710, jsEvent=..., event=
0x36f97e2ba60) at ../../third_party/WebKit/Source/bindings/core/v8/V8EventListener.cpp:112
#5 0x00007f0cf1887b16 in blink::V8AbstractEventListener::invokeEventHandler (this=0xe9381bfbea0, scriptState=0x37fa7244c710,
event=0x36f97e2ba60, jsEvent=...) at ../../third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.cpp:142
#6 0x00007f0cf188787f in blink::V8AbstractEventListener::handleEvent (this=0xe9381bfbea0, scriptState=0x37fa7244c710, event=0x36f97e2ba60)
at ../../third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.cpp:101
#7 0x00007f0cf1887689 in blink::V8AbstractEventListener::handleEvent (this=0xe9381bfbea0, executionContext=0x201b099829d0, event=0x36f97e2ba60)
at ../../third_party/WebKit/Source/bindings/core/v8/V8AbstractEventListener.cpp:89
#8 0x00007f0cf211c596 in blink::EventTarget::fireEventListeners (this=0x201b09982858, event=0x36f97e2ba60, d=0xe9381be9500, entry=...)
at ../../third_party/WebKit/Source/core/events/EventTarget.cpp:700
#9 0x00007f0cf211b7cb in blink::EventTarget::fireEventListeners (this=0x201b09982858, event=0x36f97e2ba60)
at ../../third_party/WebKit/Source/core/events/EventTarget.cpp:56
--
--
v8-users mailing list
v8-u...@googlegroups.com
http://groups.google.com/group/v8-users
---
You received this message because you are subscribed to the Google Groups "v8-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscribe@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+u...@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscribe@googlegroups.com.
To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscribe@googlegroups.com.
typedef Object* (*JSEntryFunction)(Object* new_target, Object* target,
Object* receiver, int argc,
Object*** args);
Handle<Code> code = is_construct
? isolate->factory()->js_construct_entry_code()
: isolate->factory()->js_entry_code();
{
// Save and restore context around invocation and block the
// allocation of handles without explicit handle scopes.
SaveContext save(isolate);
SealHandleScope shs(isolate);
JSEntryFunction stub_entry = FUNCTION_CAST<JSEntryFunction>(code->entry());
if (FLAG_clear_exceptions_on_js_entry) isolate->clear_pending_exception();
// Call the function through the right JS entry stub.
Object* orig_func = *new_target;
Object* func = *target;
Object* recv = *receiver;
Object*** argv = reinterpret_cast<Object***>(args);
if (FLAG_profile_deserialization && target->IsJSFunction()) {
PrintDeserializedCodeInfo(Handle<JSFunction>::cast(target));
}
RuntimeCallTimerScope timer(isolate, &RuntimeCallStats::JS_Execution);
value = CALL_GENERATED_CODE(isolate, stub_entry, orig_func, func, recv,
argc, argv);
}
For the functionality of the above code, here is my understanding (guess).The first part of the code defines a special type of object named JSEntryFunction.
The next part of the code tries to obtain the executable code by calling isolate->factory()->js_entry_code(); , which might be the part that triggers the (re-)compilation or finds the existing compiled code.
a v8::internal::JSFunction has a code() property. That's either the existing compiled code, or a stub that will trigger (re-)compilation based on the script() in the JSFunction's shared_function_info(). It will be retrieved and called by the JSEntryStub.
To unsubscribe from this group and stop receiving emails from it, send an email to v8-users+unsubscribe@googlegroups.com.