static void toScriptCallFramesVector(v8::Handle<v8::StackTrace> stackTrace, Vector<ScriptCallFrame>& scriptCallFrames, size_t maxStackSize, bool emptyStackIsAllowed, v8::Isolate* isolate) { ASSERT(isolate->InContext()); int frameCount = stackTrace->GetFrameCount(); if (frameCount > static_cast<int>(maxStackSize)) frameCount = maxStackSize; for (int i = 0; i < frameCount; i++) { v8::Local<v8::StackFrame> stackFrame = stackTrace->GetFrame(i); scriptCallFrames.append(toScriptCallFrame(stackFrame)); } if (!frameCount && !emptyStackIsAllowed) { // Successfully grabbed stack trace, but there are no frames. It may happen in case // when a bound function is called from native code for example. // Fallback to setting lineNumber to 0, and source and function name to "undefined". scriptCallFrames.append(ScriptCallFrame()); } }