| OLD | NEW |
| 1 // Copyright 2006-2009 the V8 project authors. All rights reserved. | 1 // Copyright 2006-2009 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 1103 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1114 __ TailCallExternalReference(ExternalReference(Builtins::c_ArrayPush), | 1114 __ TailCallExternalReference(ExternalReference(Builtins::c_ArrayPush), |
| 1115 argc + 1, | 1115 argc + 1, |
| 1116 1); | 1116 1); |
| 1117 | 1117 |
| 1118 // Handle call cache miss. | 1118 // Handle call cache miss. |
| 1119 __ bind(&miss); | 1119 __ bind(&miss); |
| 1120 Handle<Code> ic = ComputeCallMiss(arguments().immediate()); | 1120 Handle<Code> ic = ComputeCallMiss(arguments().immediate()); |
| 1121 __ Jump(ic, RelocInfo::CODE_TARGET); | 1121 __ Jump(ic, RelocInfo::CODE_TARGET); |
| 1122 | 1122 |
| 1123 // Return the generated code. | 1123 // Return the generated code. |
| 1124 String* function_name = NULL; | 1124 return GetCode(function); |
| 1125 if (function->shared()->name()->IsString()) { | |
| 1126 function_name = String::cast(function->shared()->name()); | |
| 1127 } | |
| 1128 return GetCode(CONSTANT_FUNCTION, function_name); | |
| 1129 } | 1125 } |
| 1130 | 1126 |
| 1131 | 1127 |
| 1132 Object* CallStubCompiler::CompileArrayPopCall(Object* object, | 1128 Object* CallStubCompiler::CompileArrayPopCall(Object* object, |
| 1133 JSObject* holder, | 1129 JSObject* holder, |
| 1134 JSFunction* function, | 1130 JSFunction* function, |
| 1135 String* name, | 1131 String* name, |
| 1136 CheckType check) { | 1132 CheckType check) { |
| 1137 // ----------- S t a t e ------------- | 1133 // ----------- S t a t e ------------- |
| 1138 // -- r2 : name | 1134 // -- r2 : name |
| (...skipping 29 matching lines...) Expand all Loading... |
| 1168 __ TailCallExternalReference(ExternalReference(Builtins::c_ArrayPop), | 1164 __ TailCallExternalReference(ExternalReference(Builtins::c_ArrayPop), |
| 1169 argc + 1, | 1165 argc + 1, |
| 1170 1); | 1166 1); |
| 1171 | 1167 |
| 1172 // Handle call cache miss. | 1168 // Handle call cache miss. |
| 1173 __ bind(&miss); | 1169 __ bind(&miss); |
| 1174 Handle<Code> ic = ComputeCallMiss(arguments().immediate()); | 1170 Handle<Code> ic = ComputeCallMiss(arguments().immediate()); |
| 1175 __ Jump(ic, RelocInfo::CODE_TARGET); | 1171 __ Jump(ic, RelocInfo::CODE_TARGET); |
| 1176 | 1172 |
| 1177 // Return the generated code. | 1173 // Return the generated code. |
| 1178 String* function_name = NULL; | 1174 return GetCode(function); |
| 1179 if (function->shared()->name()->IsString()) { | |
| 1180 function_name = String::cast(function->shared()->name()); | |
| 1181 } | |
| 1182 return GetCode(CONSTANT_FUNCTION, function_name); | |
| 1183 } | 1175 } |
| 1184 | 1176 |
| 1185 | 1177 |
| 1186 Object* CallStubCompiler::CompileCallConstant(Object* object, | 1178 Object* CallStubCompiler::CompileCallConstant(Object* object, |
| 1187 JSObject* holder, | 1179 JSObject* holder, |
| 1188 JSFunction* function, | 1180 JSFunction* function, |
| 1189 String* name, | 1181 String* name, |
| 1190 CheckType check) { | 1182 CheckType check) { |
| 1191 // ----------- S t a t e ------------- | 1183 // ----------- S t a t e ------------- |
| 1192 // -- r2 : name | 1184 // -- r2 : name |
| 1193 // -- lr : return address | 1185 // -- lr : return address |
| 1194 // ----------------------------------- | 1186 // ----------------------------------- |
| 1195 SharedFunctionInfo* function_info = function->shared(); | 1187 SharedFunctionInfo* function_info = function->shared(); |
| 1196 if (function_info->HasCustomCallGenerator()) { | 1188 if (function_info->HasCustomCallGenerator()) { |
| 1197 CustomCallGenerator generator = | 1189 const int id = function_info->custom_call_generator_id(); |
| 1198 ToCData<CustomCallGenerator>(function_info->function_data()); | 1190 Object* result = |
| 1199 Object* result = generator(this, object, holder, function, name, check); | 1191 CompileCustomCall(id, object, holder, function, name, check); |
| 1200 // undefined means bail out to regular compiler. | 1192 // undefined means bail out to regular compiler. |
| 1201 if (!result->IsUndefined()) { | 1193 if (!result->IsUndefined()) { |
| 1202 return result; | 1194 return result; |
| 1203 } | 1195 } |
| 1204 } | 1196 } |
| 1205 | 1197 |
| 1206 Label miss_in_smi_check; | 1198 Label miss_in_smi_check; |
| 1207 | 1199 |
| 1208 // Get the receiver from the stack | 1200 // Get the receiver from the stack |
| 1209 const int argc = arguments().immediate(); | 1201 const int argc = arguments().immediate(); |
| (...skipping 117 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1327 __ bind(&miss); | 1319 __ bind(&miss); |
| 1328 if (depth != kInvalidProtoDepth) { | 1320 if (depth != kInvalidProtoDepth) { |
| 1329 FreeSpaceForFastApiCall(masm()); | 1321 FreeSpaceForFastApiCall(masm()); |
| 1330 } | 1322 } |
| 1331 | 1323 |
| 1332 __ bind(&miss_in_smi_check); | 1324 __ bind(&miss_in_smi_check); |
| 1333 Handle<Code> ic = ComputeCallMiss(arguments().immediate()); | 1325 Handle<Code> ic = ComputeCallMiss(arguments().immediate()); |
| 1334 __ Jump(ic, RelocInfo::CODE_TARGET); | 1326 __ Jump(ic, RelocInfo::CODE_TARGET); |
| 1335 | 1327 |
| 1336 // Return the generated code. | 1328 // Return the generated code. |
| 1337 String* function_name = NULL; | 1329 return GetCode(function); |
| 1338 if (function->shared()->name()->IsString()) { | |
| 1339 function_name = String::cast(function->shared()->name()); | |
| 1340 } | |
| 1341 return GetCode(CONSTANT_FUNCTION, function_name); | |
| 1342 } | 1330 } |
| 1343 | 1331 |
| 1344 | 1332 |
| 1345 Object* CallStubCompiler::CompileCallInterceptor(JSObject* object, | 1333 Object* CallStubCompiler::CompileCallInterceptor(JSObject* object, |
| 1346 JSObject* holder, | 1334 JSObject* holder, |
| 1347 String* name) { | 1335 String* name) { |
| 1348 // ----------- S t a t e ------------- | 1336 // ----------- S t a t e ------------- |
| 1349 // -- r2 : name | 1337 // -- r2 : name |
| 1350 // -- lr : return address | 1338 // -- lr : return address |
| 1351 // ----------------------------------- | 1339 // ----------------------------------- |
| (...skipping 819 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2171 __ Jump(generic_construct_stub, RelocInfo::CODE_TARGET); | 2159 __ Jump(generic_construct_stub, RelocInfo::CODE_TARGET); |
| 2172 | 2160 |
| 2173 // Return the generated code. | 2161 // Return the generated code. |
| 2174 return GetCode(); | 2162 return GetCode(); |
| 2175 } | 2163 } |
| 2176 | 2164 |
| 2177 | 2165 |
| 2178 #undef __ | 2166 #undef __ |
| 2179 | 2167 |
| 2180 } } // namespace v8::internal | 2168 } } // namespace v8::internal |
| OLD | NEW |