OLD | NEW |
1 // Copyright 2013 the V8 project authors. All rights reserved. | 1 // Copyright 2013 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 408 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
419 __ B(hs, slow_case); | 419 __ B(hs, slow_case); |
420 | 420 |
421 __ Add(backing_store, | 421 __ Add(backing_store, |
422 backing_store, | 422 backing_store, |
423 FixedArray::kHeaderSize - kHeapObjectTag); | 423 FixedArray::kHeaderSize - kHeapObjectTag); |
424 __ SmiUntag(scratch, key); | 424 __ SmiUntag(scratch, key); |
425 return MemOperand(backing_store, scratch, LSL, kPointerSizeLog2); | 425 return MemOperand(backing_store, scratch, LSL, kPointerSizeLog2); |
426 } | 426 } |
427 | 427 |
428 | 428 |
429 void LoadIC::GenerateMegamorphic(MacroAssembler* masm, | 429 void LoadIC::GenerateMegamorphic(MacroAssembler* masm) { |
430 ExtraICState extra_state) { | |
431 // ----------- S t a t e ------------- | 430 // ----------- S t a t e ------------- |
432 // -- x2 : name | 431 // -- x2 : name |
433 // -- lr : return address | 432 // -- lr : return address |
434 // -- x0 : receiver | 433 // -- x0 : receiver |
435 // ----------------------------------- | 434 // ----------------------------------- |
436 | 435 |
437 // Probe the stub cache. | 436 // Probe the stub cache. |
438 Code::Flags flags = Code::ComputeHandlerFlags(Code::LOAD_IC, extra_state); | 437 Code::Flags flags = Code::ComputeHandlerFlags(Code::LOAD_IC); |
439 masm->isolate()->stub_cache()->GenerateProbe( | 438 masm->isolate()->stub_cache()->GenerateProbe( |
440 masm, flags, x0, x2, x3, x4, x5, x6); | 439 masm, flags, x0, x2, x3, x4, x5, x6); |
441 | 440 |
442 // Cache miss: Jump to runtime. | 441 // Cache miss: Jump to runtime. |
443 GenerateMiss(masm); | 442 GenerateMiss(masm); |
444 } | 443 } |
445 | 444 |
446 | 445 |
447 void LoadIC::GenerateNormal(MacroAssembler* masm) { | 446 void LoadIC::GenerateNormal(MacroAssembler* masm) { |
448 // ----------- S t a t e ------------- | 447 // ----------- S t a t e ------------- |
(...skipping 761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1210 &slow, kCheckMap, kDontIncrementLength, | 1209 &slow, kCheckMap, kDontIncrementLength, |
1211 value, key, receiver, receiver_map, | 1210 value, key, receiver, receiver_map, |
1212 elements_map, elements); | 1211 elements_map, elements); |
1213 KeyedStoreGenerateGenericHelper(masm, &fast_object_grow, &fast_double_grow, | 1212 KeyedStoreGenerateGenericHelper(masm, &fast_object_grow, &fast_double_grow, |
1214 &slow, kDontCheckMap, kIncrementLength, | 1213 &slow, kDontCheckMap, kIncrementLength, |
1215 value, key, receiver, receiver_map, | 1214 value, key, receiver, receiver_map, |
1216 elements_map, elements); | 1215 elements_map, elements); |
1217 } | 1216 } |
1218 | 1217 |
1219 | 1218 |
1220 void StoreIC::GenerateMegamorphic(MacroAssembler* masm, | 1219 void StoreIC::GenerateMegamorphic(MacroAssembler* masm) { |
1221 ExtraICState extra_state) { | |
1222 // ----------- S t a t e ------------- | 1220 // ----------- S t a t e ------------- |
1223 // -- x0 : value | 1221 // -- x0 : value |
1224 // -- x1 : receiver | 1222 // -- x1 : receiver |
1225 // -- x2 : name | 1223 // -- x2 : name |
1226 // -- lr : return address | 1224 // -- lr : return address |
1227 // ----------------------------------- | 1225 // ----------------------------------- |
1228 | 1226 |
1229 // Probe the stub cache. | 1227 // Probe the stub cache. |
1230 Code::Flags flags = Code::ComputeHandlerFlags(Code::STORE_IC, extra_state); | 1228 Code::Flags flags = Code::ComputeHandlerFlags(Code::STORE_IC); |
1231 | |
1232 masm->isolate()->stub_cache()->GenerateProbe( | 1229 masm->isolate()->stub_cache()->GenerateProbe( |
1233 masm, flags, x1, x2, x3, x4, x5, x6); | 1230 masm, flags, x1, x2, x3, x4, x5, x6); |
1234 | 1231 |
1235 // Cache miss: Jump to runtime. | 1232 // Cache miss: Jump to runtime. |
1236 GenerateMiss(masm); | 1233 GenerateMiss(masm); |
1237 } | 1234 } |
1238 | 1235 |
1239 | 1236 |
1240 void StoreIC::GenerateMiss(MacroAssembler* masm) { | 1237 void StoreIC::GenerateMiss(MacroAssembler* masm) { |
1241 // ----------- S t a t e ------------- | 1238 // ----------- S t a t e ------------- |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1407 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ); | 1404 ASSERT(to_patch->Mask(TestBranchMask) == TBNZ); |
1408 // This is JumpIfSmi(smi_reg, branch_imm). | 1405 // This is JumpIfSmi(smi_reg, branch_imm). |
1409 patcher.tbz(smi_reg, 0, branch_imm); | 1406 patcher.tbz(smi_reg, 0, branch_imm); |
1410 } | 1407 } |
1411 } | 1408 } |
1412 | 1409 |
1413 | 1410 |
1414 } } // namespace v8::internal | 1411 } } // namespace v8::internal |
1415 | 1412 |
1416 #endif // V8_TARGET_ARCH_A64 | 1413 #endif // V8_TARGET_ARCH_A64 |
OLD | NEW |