Index: src/js/messages.js |
diff --git a/src/js/messages.js b/src/js/messages.js |
index d0305412b74896a7971e4e435032b5f9a8ee3a05..e0d6a07daeec5fa3adbc7b97e107833810f4958b 100644 |
--- a/src/js/messages.js |
+++ b/src/js/messages.js |
@@ -566,10 +566,18 @@ function GetStackTraceLine(recv, fun, pos, isGlobal) { |
// Error implementation |
function CallSite(receiver, fun, pos, strict_mode) { |
+ if (!IS_FUNCTION(fun)) { |
+ throw MakeTypeError(kCallSiteExpectsFunction, typeof fun); |
+ } |
+ |
+ if (IS_UNDEFINED(new.target)) { |
+ return new CallSite(receiver, fun, pos, strict_mode); |
+ } |
+ |
SET_PRIVATE(this, callSiteReceiverSymbol, receiver); |
SET_PRIVATE(this, callSiteFunctionSymbol, fun); |
- SET_PRIVATE(this, callSitePositionSymbol, pos); |
- SET_PRIVATE(this, callSiteStrictSymbol, strict_mode); |
+ SET_PRIVATE(this, callSitePositionSymbol, TO_INT32(pos)); |
+ SET_PRIVATE(this, callSiteStrictSymbol, TO_BOOLEAN(strict_mode)); |
} |
function CallSiteGetThis() { |