X87: Fix %FunctionGetName and %_ClassOf for bound functions.
port 8e303dd0b3
(r36276)
original commit message:
BUG=
Review-Url: https://codereview.chromium.org/1989153002
Cr-Commit-Position: refs/heads/master@{#36305}
This commit is contained in:
parent
c5a71f029f
commit
dcc283e823
@ -2520,11 +2520,12 @@ void LCodeGen::EmitClassOfTest(Label* is_true,
|
||||
DCHECK(!temp.is(temp2));
|
||||
__ JumpIfSmi(input, is_false);
|
||||
|
||||
__ CmpObjectType(input, JS_FUNCTION_TYPE, temp);
|
||||
__ CmpObjectType(input, FIRST_FUNCTION_TYPE, temp);
|
||||
STATIC_ASSERT(LAST_FUNCTION_TYPE == LAST_TYPE);
|
||||
if (String::Equals(isolate()->factory()->Function_string(), class_name)) {
|
||||
__ j(equal, is_true);
|
||||
__ j(above_equal, is_true);
|
||||
} else {
|
||||
__ j(equal, is_false);
|
||||
__ j(above_equal, is_false);
|
||||
}
|
||||
|
||||
// Now we are in the FIRST-LAST_NONCALLABLE_SPEC_OBJECT_TYPE range.
|
||||
|
@ -2715,9 +2715,10 @@ void FullCodeGenerator::EmitClassOf(CallRuntime* expr) {
|
||||
__ CmpObjectType(eax, FIRST_JS_RECEIVER_TYPE, eax);
|
||||
__ j(below, &null, Label::kNear);
|
||||
|
||||
// Return 'Function' for JSFunction objects.
|
||||
__ CmpInstanceType(eax, JS_FUNCTION_TYPE);
|
||||
__ j(equal, &function, Label::kNear);
|
||||
// Return 'Function' for JSFunction and JSBoundFunction objects.
|
||||
__ CmpInstanceType(eax, FIRST_FUNCTION_TYPE);
|
||||
STATIC_ASSERT(LAST_FUNCTION_TYPE == LAST_TYPE);
|
||||
__ j(above_equal, &function, Label::kNear);
|
||||
|
||||
// Check if the constructor in the map is a JS function.
|
||||
__ GetMapConstructor(eax, eax, ebx);
|
||||
|
Loading…
Reference in New Issue
Block a user