static v8::Handle<v8::Value> matrixTransformCallback(const v8::Arguments& args) { INC_STATS("DOM.SVGPoint.matrixTransform"); V8SVGPODTypeWrapper<FloatPoint>* impWrapper = V8SVGPODTypeWrapper<FloatPoint>::toNative(args.Holder()); FloatPoint impInstance = *impWrapper; FloatPoint* imp = &impInstance; ExceptionCode ec = 0; { bool matrixOk; AffineTransform matrix = V8SVGPODTypeUtil::toSVGPODType<AffineTransform>(&V8SVGMatrix::info, args[0], matrixOk); if (UNLIKELY(!matrixOk)) { ec = TYPE_MISMATCH_ERR; goto fail; } FloatPoint result = imp->matrixTransform(matrix); RefPtr<V8SVGPODTypeWrapper<FloatPoint> > wrapper = V8SVGStaticPODTypeWrapper<FloatPoint>::create(result); SVGElement* context = V8Proxy::svgContext(impWrapper); V8Proxy::setSVGContext(wrapper.get(), context); impWrapper->commitChange(impInstance, context); return toV8(wrapper.release()); } fail: V8Proxy::setDOMException(ec); return v8::Handle<v8::Value>(); }