| 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 1194 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 1205 PushInterceptorArguments(masm(), receiver, holder_reg, | 1205 PushInterceptorArguments(masm(), receiver, holder_reg, |
| 1206 name_reg, interceptor_holder); | 1206 name_reg, interceptor_holder); |
| 1207 | 1207 |
| 1208 ExternalReference ref = ExternalReference( | 1208 ExternalReference ref = ExternalReference( |
| 1209 IC_Utility(IC::kLoadPropertyWithInterceptorForLoad)); | 1209 IC_Utility(IC::kLoadPropertyWithInterceptorForLoad)); |
| 1210 __ TailCallExternalReference(ref, 5, 1); | 1210 __ TailCallExternalReference(ref, 5, 1); |
| 1211 } | 1211 } |
| 1212 } | 1212 } |
| 1213 | 1213 |
| 1214 | 1214 |
| 1215 Object* StubCompiler::CompileLazyCompile(Code::Flags flags) { | |
| 1216 // ----------- S t a t e ------------- | |
| 1217 // -- r1: function | |
| 1218 // -- lr: return address | |
| 1219 // ----------------------------------- | |
| 1220 | |
| 1221 // Enter an internal frame. | |
| 1222 __ EnterInternalFrame(); | |
| 1223 | |
| 1224 // Preserve the function. | |
| 1225 __ push(r1); | |
| 1226 | |
| 1227 // Push the function on the stack as the argument to the runtime function. | |
| 1228 __ push(r1); | |
| 1229 __ CallRuntime(Runtime::kLazyCompile, 1); | |
| 1230 | |
| 1231 // Calculate the entry point. | |
| 1232 __ add(r2, r0, Operand(Code::kHeaderSize - kHeapObjectTag)); | |
| 1233 | |
| 1234 // Restore saved function. | |
| 1235 __ pop(r1); | |
| 1236 | |
| 1237 // Tear down temporary frame. | |
| 1238 __ LeaveInternalFrame(); | |
| 1239 | |
| 1240 // Do a tail-call of the compiled function. | |
| 1241 __ Jump(r2); | |
| 1242 | |
| 1243 return GetCodeWithFlags(flags, "LazyCompileStub"); | |
| 1244 } | |
| 1245 | |
| 1246 | |
| 1247 void CallStubCompiler::GenerateNameCheck(String* name, Label* miss) { | 1215 void CallStubCompiler::GenerateNameCheck(String* name, Label* miss) { |
| 1248 if (kind_ == Code::KEYED_CALL_IC) { | 1216 if (kind_ == Code::KEYED_CALL_IC) { |
| 1249 __ cmp(r2, Operand(Handle<String>(name))); | 1217 __ cmp(r2, Operand(Handle<String>(name))); |
| 1250 __ b(ne, miss); | 1218 __ b(ne, miss); |
| 1251 } | 1219 } |
| 1252 } | 1220 } |
| 1253 | 1221 |
| 1254 | 1222 |
| 1255 Object* CallStubCompiler::GenerateMissBranch() { | 1223 Object* CallStubCompiler::GenerateMissBranch() { |
| 1256 Object* obj = StubCache::ComputeCallMiss(arguments().immediate(), kind_); | 1224 Object* obj = StubCache::ComputeCallMiss(arguments().immediate(), kind_); |
| (...skipping 1129 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 2386 // Return the generated code. | 2354 // Return the generated code. |
| 2387 return GetCode(); | 2355 return GetCode(); |
| 2388 } | 2356 } |
| 2389 | 2357 |
| 2390 | 2358 |
| 2391 #undef __ | 2359 #undef __ |
| 2392 | 2360 |
| 2393 } } // namespace v8::internal | 2361 } } // namespace v8::internal |
| 2394 | 2362 |
| 2395 #endif // V8_TARGET_ARCH_ARM | 2363 #endif // V8_TARGET_ARCH_ARM |
| OLD | NEW |