Index: src/runtime.js |
diff --git a/src/runtime.js b/src/runtime.js |
index aaaa4fecba110c4e5e3edc0a88ea9f6a3e946e89..a4677da316d1cb28a3c96ce730e0fb1cc5926573 100644 |
--- a/src/runtime.js |
+++ b/src/runtime.js |
@@ -199,6 +199,15 @@ function SUB(y) { |
} |
+// ECMA-262, section 11.6.2, page 50. |
+function SUB_STRONG(y) { |
+ if (IS_NUMBER(this) && IS_NUMBER(y)) { |
+ return %NumberSub(this, y); |
+ } |
+ throw %MakeTypeError('strong_implicit_cast'); |
+} |
+ |
+ |
// ECMA-262, section 11.5.1, page 48. |
function MUL(y) { |
var x = IS_NUMBER(this) ? this : %NonNumberToNumber(this); |
@@ -207,6 +216,15 @@ function MUL(y) { |
} |
+// ECMA-262, section 11.5.1, page 48. |
+function MUL_STRONG(y) { |
+ if (IS_NUMBER(this) && IS_NUMBER(y)) { |
+ return %NumberMul(this, y); |
+ } |
+ throw %MakeTypeError('strong_implicit_cast'); |
+} |
+ |
+ |
// ECMA-262, section 11.5.2, page 49. |
function DIV(y) { |
var x = IS_NUMBER(this) ? this : %NonNumberToNumber(this); |
@@ -215,6 +233,15 @@ function DIV(y) { |
} |
+// ECMA-262, section 11.5.2, page 49. |
+function DIV_STRONG(y) { |
+ if (IS_NUMBER(this) && IS_NUMBER(y)) { |
+ return %NumberDiv(this, y); |
+ } |
+ throw %MakeTypeError('strong_implicit_cast'); |
+} |
+ |
+ |
// ECMA-262, section 11.5.3, page 49. |
function MOD(y) { |
var x = IS_NUMBER(this) ? this : %NonNumberToNumber(this); |
@@ -223,6 +250,14 @@ function MOD(y) { |
} |
+// ECMA-262, section 11.5.3, page 49. |
+function MOD_STRONG(y) { |
+ if (IS_NUMBER(this) && IS_NUMBER(y)) { |
+ return %NumberMod(this, y); |
+ } |
+ throw %MakeTypeError('strong_implicit_cast'); |
+} |
+ |
/* ------------------------------------------- |
- - - B i t o p e r a t i o n s - - - |