Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(1219)

Unified Diff: src/runtime.js

Issue 1316933002: [es6] Initial steps towards a correct implementation of IsCallable. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Rebase again. Created 5 years, 3 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View side-by-side diff with in-line comments
Download patch
« no previous file with comments | « src/proxy.js ('k') | src/runtime/runtime.h » ('j') | no next file with comments »
Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
Index: src/runtime.js
diff --git a/src/runtime.js b/src/runtime.js
index 8063a790e131f9c169b15bab728dfa7462c29a71..880b7dea1d84e0fc985f6b51a93f578b776cb474 100644
--- a/src/runtime.js
+++ b/src/runtime.js
@@ -441,22 +441,12 @@ function IN(x) {
function CALL_NON_FUNCTION() {
var delegate = %GetFunctionDelegate(this);
- if (!IS_FUNCTION(delegate)) {
- var callsite = %RenderCallSite();
- if (callsite == "") callsite = typeof this;
- throw %make_type_error(kCalledNonCallable, callsite);
- }
return %Apply(delegate, this, arguments, 0, %_ArgumentsLength());
}
function CALL_NON_FUNCTION_AS_CONSTRUCTOR() {
var delegate = %GetConstructorDelegate(this);
- if (!IS_FUNCTION(delegate)) {
- var callsite = %RenderCallSite();
- if (callsite == "") callsite = typeof this;
- throw %make_type_error(kCalledNonCallable, callsite);
- }
return %Apply(delegate, this, arguments, 0, %_ArgumentsLength());
}
@@ -484,7 +474,7 @@ function APPLY_PREPARE(args) {
if (IS_ARRAY(args)) {
length = args.length;
if (%_IsSmi(length) && length >= 0 && length < kSafeArgumentsLength &&
- IS_SPEC_FUNCTION(this)) {
+ IS_CALLABLE(this)) {
return length;
}
}
@@ -496,8 +486,9 @@ function APPLY_PREPARE(args) {
// multiplying with pointer size.
if (length > kSafeArgumentsLength) throw %make_range_error(kStackOverflow);
- if (!IS_SPEC_FUNCTION(this)) {
- throw %make_type_error(kApplyNonFunction, %to_string_fun(this), typeof this);
+ if (!IS_CALLABLE(this)) {
+ throw %make_type_error(kApplyNonFunction, %to_string_fun(this),
+ typeof this);
}
// Make sure the arguments list has the right type.
@@ -519,12 +510,12 @@ function REFLECT_APPLY_PREPARE(args) {
if (IS_ARRAY(args)) {
length = args.length;
if (%_IsSmi(length) && length >= 0 && length < kSafeArgumentsLength &&
- IS_SPEC_FUNCTION(this)) {
+ IS_CALLABLE(this)) {
return length;
}
}
- if (!IS_SPEC_FUNCTION(this)) {
+ if (!IS_CALLABLE(this)) {
throw %make_type_error(kCalledNonCallable, %to_string_fun(this));
}
@@ -548,8 +539,8 @@ function REFLECT_APPLY_PREPARE(args) {
function REFLECT_CONSTRUCT_PREPARE(
args, newTarget) {
var length;
- var ctorOk = IS_SPEC_FUNCTION(this) && %IsConstructor(this);
- var newTargetOk = IS_SPEC_FUNCTION(newTarget) && %IsConstructor(newTarget);
+ var ctorOk = IS_CALLABLE(this) && %IsConstructor(this);
+ var newTargetOk = IS_CALLABLE(newTarget) && %IsConstructor(newTarget);
// First check whether length is a positive Smi and args is an
// array. This is the fast case. If this fails, we do the slow case
@@ -563,7 +554,7 @@ function REFLECT_CONSTRUCT_PREPARE(
}
if (!ctorOk) {
- if (!IS_SPEC_FUNCTION(this)) {
+ if (!IS_CALLABLE(this)) {
throw %make_type_error(kCalledNonCallable, %to_string_fun(this));
} else {
throw %make_type_error(kNotConstructor, %to_string_fun(this));
@@ -571,7 +562,7 @@ function REFLECT_CONSTRUCT_PREPARE(
}
if (!newTargetOk) {
- if (!IS_SPEC_FUNCTION(newTarget)) {
+ if (!IS_CALLABLE(newTarget)) {
throw %make_type_error(kCalledNonCallable, %to_string_fun(newTarget));
} else {
throw %make_type_error(kNotConstructor, %to_string_fun(newTarget));
@@ -751,14 +742,14 @@ function IsConcatSpreadable(O) {
// ECMA-262, section 8.6.2.6, page 28.
function DefaultNumber(x) {
var valueOf = x.valueOf;
- if (IS_SPEC_FUNCTION(valueOf)) {
+ if (IS_CALLABLE(valueOf)) {
var v = %_CallFunction(x, valueOf);
if (IS_SYMBOL(v)) throw MakeTypeError(kSymbolToNumber);
if (IS_SIMD_VALUE(x)) throw MakeTypeError(kSimdToNumber);
if (IsPrimitive(v)) return v;
}
var toString = x.toString;
- if (IS_SPEC_FUNCTION(toString)) {
+ if (IS_CALLABLE(toString)) {
var s = %_CallFunction(x, toString);
if (IsPrimitive(s)) return s;
}
@@ -770,13 +761,13 @@ function DefaultString(x) {
if (!IS_SYMBOL_WRAPPER(x)) {
if (IS_SYMBOL(x)) throw MakeTypeError(kSymbolToString);
var toString = x.toString;
- if (IS_SPEC_FUNCTION(toString)) {
+ if (IS_CALLABLE(toString)) {
var s = %_CallFunction(x, toString);
if (IsPrimitive(s)) return s;
}
var valueOf = x.valueOf;
- if (IS_SPEC_FUNCTION(valueOf)) {
+ if (IS_CALLABLE(valueOf)) {
var v = %_CallFunction(x, valueOf);
if (IsPrimitive(v)) return v;
}
« no previous file with comments | « src/proxy.js ('k') | src/runtime/runtime.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698