DOMPoint(Dictionary point) doesn't check for type of point in generated code. This allows basically every value and doesn't throw as it should. JSDOMPointConstructor* castedThis = jsCast<JSDOMPointConstructor*>(exec->callee()); if (exec->argumentCount() < 1) return throwVMError(exec, createNotEnoughArgumentsError(exec)); Dictionary point(exec, exec->argument(0)); DOMPoint(1) would not throw.