| OLD | NEW |
| 1 // Copyright 2012 the V8 project authors. All rights reserved. | 1 // Copyright 2012 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 1974 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1985 | 1985 |
| 1986 StubRuntimeCallHelper call_helper; | 1986 StubRuntimeCallHelper call_helper; |
| 1987 generator.GenerateSlow(masm(), call_helper); | 1987 generator.GenerateSlow(masm(), call_helper); |
| 1988 | 1988 |
| 1989 // Tail call the full function. We do not have to patch the receiver | 1989 // Tail call the full function. We do not have to patch the receiver |
| 1990 // because the function makes no use of it. | 1990 // because the function makes no use of it. |
| 1991 __ bind(&slow); | 1991 __ bind(&slow); |
| 1992 CallKind call_kind = CallICBase::Contextual::decode(extra_state_) | 1992 CallKind call_kind = CallICBase::Contextual::decode(extra_state_) |
| 1993 ? CALL_AS_FUNCTION | 1993 ? CALL_AS_FUNCTION |
| 1994 : CALL_AS_METHOD; | 1994 : CALL_AS_METHOD; |
| 1995 __ InvokeFunction(function, ParameterCount(function), arguments(), | 1995 ParameterCount expected(function); |
| 1996 __ InvokeFunction(function, expected, arguments(), |
| 1996 JUMP_FUNCTION, NullCallWrapper(), call_kind); | 1997 JUMP_FUNCTION, NullCallWrapper(), call_kind); |
| 1997 | 1998 |
| 1998 __ bind(&miss); | 1999 __ bind(&miss); |
| 1999 // rcx: function name. | 2000 // rcx: function name. |
| 2000 GenerateMissBranch(); | 2001 GenerateMissBranch(); |
| 2001 | 2002 |
| 2002 // Return the generated code. | 2003 // Return the generated code. |
| 2003 return cell.is_null() ? GetCode(function) : GetCode(Code::NORMAL, name); | 2004 return cell.is_null() ? GetCode(function) : GetCode(Code::NORMAL, name); |
| 2004 } | 2005 } |
| 2005 | 2006 |
| (...skipping 94 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2100 __ AllocateHeapNumber(rax, rdx, &slow); | 2101 __ AllocateHeapNumber(rax, rdx, &slow); |
| 2101 __ movq(FieldOperand(rax, HeapNumber::kValueOffset), rbx); | 2102 __ movq(FieldOperand(rax, HeapNumber::kValueOffset), rbx); |
| 2102 __ ret(2 * kPointerSize); | 2103 __ ret(2 * kPointerSize); |
| 2103 | 2104 |
| 2104 // Tail call the full function. We do not have to patch the receiver | 2105 // Tail call the full function. We do not have to patch the receiver |
| 2105 // because the function makes no use of it. | 2106 // because the function makes no use of it. |
| 2106 __ bind(&slow); | 2107 __ bind(&slow); |
| 2107 CallKind call_kind = CallICBase::Contextual::decode(extra_state_) | 2108 CallKind call_kind = CallICBase::Contextual::decode(extra_state_) |
| 2108 ? CALL_AS_FUNCTION | 2109 ? CALL_AS_FUNCTION |
| 2109 : CALL_AS_METHOD; | 2110 : CALL_AS_METHOD; |
| 2110 __ InvokeFunction(function, ParameterCount(function), arguments(), | 2111 ParameterCount expected(function); |
| 2112 __ InvokeFunction(function, expected, arguments(), |
| 2111 JUMP_FUNCTION, NullCallWrapper(), call_kind); | 2113 JUMP_FUNCTION, NullCallWrapper(), call_kind); |
| 2112 | 2114 |
| 2113 __ bind(&miss); | 2115 __ bind(&miss); |
| 2114 // rcx: function name. | 2116 // rcx: function name. |
| 2115 GenerateMissBranch(); | 2117 GenerateMissBranch(); |
| 2116 | 2118 |
| 2117 // Return the generated code. | 2119 // Return the generated code. |
| 2118 return cell.is_null() ? GetCode(function) : GetCode(Code::NORMAL, name); | 2120 return cell.is_null() ? GetCode(function) : GetCode(Code::NORMAL, name); |
| 2119 } | 2121 } |
| 2120 | 2122 |
| (...skipping 163 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2284 // Handle call cache miss. | 2286 // Handle call cache miss. |
| 2285 __ bind(&miss); | 2287 __ bind(&miss); |
| 2286 GenerateMissBranch(); | 2288 GenerateMissBranch(); |
| 2287 } | 2289 } |
| 2288 | 2290 |
| 2289 | 2291 |
| 2290 void CallStubCompiler::CompileHandlerBackend(Handle<JSFunction> function) { | 2292 void CallStubCompiler::CompileHandlerBackend(Handle<JSFunction> function) { |
| 2291 CallKind call_kind = CallICBase::Contextual::decode(extra_state_) | 2293 CallKind call_kind = CallICBase::Contextual::decode(extra_state_) |
| 2292 ? CALL_AS_FUNCTION | 2294 ? CALL_AS_FUNCTION |
| 2293 : CALL_AS_METHOD; | 2295 : CALL_AS_METHOD; |
| 2294 __ InvokeFunction(function, ParameterCount(function), arguments(), | 2296 ParameterCount expected(function); |
| 2297 __ InvokeFunction(function, expected, arguments(), |
| 2295 JUMP_FUNCTION, NullCallWrapper(), call_kind); | 2298 JUMP_FUNCTION, NullCallWrapper(), call_kind); |
| 2296 } | 2299 } |
| 2297 | 2300 |
| 2298 | 2301 |
| 2299 Handle<Code> CallStubCompiler::CompileCallConstant( | 2302 Handle<Code> CallStubCompiler::CompileCallConstant( |
| 2300 Handle<Object> object, | 2303 Handle<Object> object, |
| 2301 Handle<JSObject> holder, | 2304 Handle<JSObject> holder, |
| 2302 Handle<Name> name, | 2305 Handle<Name> name, |
| 2303 CheckType check, | 2306 CheckType check, |
| 2304 Handle<JSFunction> function) { | 2307 Handle<JSFunction> function) { |
| (...skipping 1168 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 3473 TailCallBuiltin(masm, Builtins::kKeyedStoreIC_Slow); | 3476 TailCallBuiltin(masm, Builtins::kKeyedStoreIC_Slow); |
| 3474 } | 3477 } |
| 3475 } | 3478 } |
| 3476 | 3479 |
| 3477 | 3480 |
| 3478 #undef __ | 3481 #undef __ |
| 3479 | 3482 |
| 3480 } } // namespace v8::internal | 3483 } } // namespace v8::internal |
| 3481 | 3484 |
| 3482 #endif // V8_TARGET_ARCH_X64 | 3485 #endif // V8_TARGET_ARCH_X64 |
| OLD | NEW |