Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(2)

Side by Side Diff: src/x64/ic-x64.cc

Issue 6723014: Avoid TLS access for counters. (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Fix lint Created 9 years, 9 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « src/x64/full-codegen-x64.cc ('k') | src/x64/stub-cache-x64.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2011 the V8 project authors. All rights reserved. 1 // Copyright 2011 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 561 matching lines...) Expand 10 before | Expand all | Expand 10 after
572 __ j(zero, &check_number_dictionary); 572 __ j(zero, &check_number_dictionary);
573 573
574 GenerateFastArrayLoad(masm, 574 GenerateFastArrayLoad(masm,
575 rdx, 575 rdx,
576 rax, 576 rax,
577 rcx, 577 rcx,
578 rbx, 578 rbx,
579 rax, 579 rax,
580 NULL, 580 NULL,
581 &slow); 581 &slow);
582 __ IncrementCounter(COUNTERS->keyed_load_generic_smi(), 1); 582 Counters* counters = masm->isolate()->counters();
583 __ IncrementCounter(counters->keyed_load_generic_smi(), 1);
583 __ ret(0); 584 __ ret(0);
584 585
585 __ bind(&check_number_dictionary); 586 __ bind(&check_number_dictionary);
586 __ SmiToInteger32(rbx, rax); 587 __ SmiToInteger32(rbx, rax);
587 __ movq(rcx, FieldOperand(rdx, JSObject::kElementsOffset)); 588 __ movq(rcx, FieldOperand(rdx, JSObject::kElementsOffset));
588 589
589 // Check whether the elements is a number dictionary. 590 // Check whether the elements is a number dictionary.
590 // rdx: receiver 591 // rdx: receiver
591 // rax: key 592 // rax: key
592 // rbx: key as untagged int32 593 // rbx: key as untagged int32
593 // rcx: elements 594 // rcx: elements
594 __ CompareRoot(FieldOperand(rcx, HeapObject::kMapOffset), 595 __ CompareRoot(FieldOperand(rcx, HeapObject::kMapOffset),
595 Heap::kHashTableMapRootIndex); 596 Heap::kHashTableMapRootIndex);
596 __ j(not_equal, &slow); 597 __ j(not_equal, &slow);
597 GenerateNumberDictionaryLoad(masm, &slow, rcx, rax, rbx, r9, rdi, rax); 598 GenerateNumberDictionaryLoad(masm, &slow, rcx, rax, rbx, r9, rdi, rax);
598 __ ret(0); 599 __ ret(0);
599 600
600 __ bind(&slow); 601 __ bind(&slow);
601 // Slow case: Jump to runtime. 602 // Slow case: Jump to runtime.
602 // rdx: receiver 603 // rdx: receiver
603 // rax: key 604 // rax: key
604 __ IncrementCounter(COUNTERS->keyed_load_generic_slow(), 1); 605 __ IncrementCounter(counters->keyed_load_generic_slow(), 1);
605 GenerateRuntimeGetProperty(masm); 606 GenerateRuntimeGetProperty(masm);
606 607
607 __ bind(&check_string); 608 __ bind(&check_string);
608 GenerateKeyStringCheck(masm, rax, rcx, rbx, &index_string, &slow); 609 GenerateKeyStringCheck(masm, rax, rcx, rbx, &index_string, &slow);
609 610
610 GenerateKeyedLoadReceiverCheck( 611 GenerateKeyedLoadReceiverCheck(
611 masm, rdx, rcx, Map::kHasNamedInterceptor, &slow); 612 masm, rdx, rcx, Map::kHasNamedInterceptor, &slow);
612 613
613 // If the receiver is a fast-case object, check the keyed lookup 614 // If the receiver is a fast-case object, check the keyed lookup
614 // cache. Otherwise probe the dictionary leaving result in rcx. 615 // cache. Otherwise probe the dictionary leaving result in rcx.
(...skipping 30 matching lines...) Expand all
645 __ LoadAddress(kScratchRegister, cache_field_offsets); 646 __ LoadAddress(kScratchRegister, cache_field_offsets);
646 __ movl(rdi, Operand(kScratchRegister, rcx, times_4, 0)); 647 __ movl(rdi, Operand(kScratchRegister, rcx, times_4, 0));
647 __ movzxbq(rcx, FieldOperand(rbx, Map::kInObjectPropertiesOffset)); 648 __ movzxbq(rcx, FieldOperand(rbx, Map::kInObjectPropertiesOffset));
648 __ subq(rdi, rcx); 649 __ subq(rdi, rcx);
649 __ j(above_equal, &property_array_property); 650 __ j(above_equal, &property_array_property);
650 651
651 // Load in-object property. 652 // Load in-object property.
652 __ movzxbq(rcx, FieldOperand(rbx, Map::kInstanceSizeOffset)); 653 __ movzxbq(rcx, FieldOperand(rbx, Map::kInstanceSizeOffset));
653 __ addq(rcx, rdi); 654 __ addq(rcx, rdi);
654 __ movq(rax, FieldOperand(rdx, rcx, times_pointer_size, 0)); 655 __ movq(rax, FieldOperand(rdx, rcx, times_pointer_size, 0));
655 __ IncrementCounter(COUNTERS->keyed_load_generic_lookup_cache(), 1); 656 __ IncrementCounter(counters->keyed_load_generic_lookup_cache(), 1);
656 __ ret(0); 657 __ ret(0);
657 658
658 // Load property array property. 659 // Load property array property.
659 __ bind(&property_array_property); 660 __ bind(&property_array_property);
660 __ movq(rax, FieldOperand(rdx, JSObject::kPropertiesOffset)); 661 __ movq(rax, FieldOperand(rdx, JSObject::kPropertiesOffset));
661 __ movq(rax, FieldOperand(rax, rdi, times_pointer_size, 662 __ movq(rax, FieldOperand(rax, rdi, times_pointer_size,
662 FixedArray::kHeaderSize)); 663 FixedArray::kHeaderSize));
663 __ IncrementCounter(COUNTERS->keyed_load_generic_lookup_cache(), 1); 664 __ IncrementCounter(counters->keyed_load_generic_lookup_cache(), 1);
664 __ ret(0); 665 __ ret(0);
665 666
666 // Do a quick inline probe of the receiver's dictionary, if it 667 // Do a quick inline probe of the receiver's dictionary, if it
667 // exists. 668 // exists.
668 __ bind(&probe_dictionary); 669 __ bind(&probe_dictionary);
669 // rdx: receiver 670 // rdx: receiver
670 // rax: key 671 // rax: key
671 // rbx: elements 672 // rbx: elements
672 673
673 __ movq(rcx, FieldOperand(rdx, JSObject::kMapOffset)); 674 __ movq(rcx, FieldOperand(rdx, JSObject::kMapOffset));
674 __ movb(rcx, FieldOperand(rcx, Map::kInstanceTypeOffset)); 675 __ movb(rcx, FieldOperand(rcx, Map::kInstanceTypeOffset));
675 GenerateGlobalInstanceTypeCheck(masm, rcx, &slow); 676 GenerateGlobalInstanceTypeCheck(masm, rcx, &slow);
676 677
677 GenerateDictionaryLoad(masm, &slow, rbx, rax, rcx, rdi, rax); 678 GenerateDictionaryLoad(masm, &slow, rbx, rax, rcx, rdi, rax);
678 __ IncrementCounter(COUNTERS->keyed_load_generic_symbol(), 1); 679 __ IncrementCounter(counters->keyed_load_generic_symbol(), 1);
679 __ ret(0); 680 __ ret(0);
680 681
681 __ bind(&index_string); 682 __ bind(&index_string);
682 __ IndexFromHash(rbx, rax); 683 __ IndexFromHash(rbx, rax);
683 __ jmp(&index_smi); 684 __ jmp(&index_smi);
684 } 685 }
685 686
686 687
687 void KeyedLoadIC::GenerateString(MacroAssembler* masm) { 688 void KeyedLoadIC::GenerateString(MacroAssembler* masm) {
688 // ----------- S t a t e ------------- 689 // ----------- S t a t e -------------
(...skipping 294 matching lines...) Expand 10 before | Expand all | Expand 10 after
983 // ----------- S t a t e ------------- 984 // ----------- S t a t e -------------
984 // rcx : function name 985 // rcx : function name
985 // rsp[0] : return address 986 // rsp[0] : return address
986 // rsp[8] : argument argc 987 // rsp[8] : argument argc
987 // rsp[16] : argument argc - 1 988 // rsp[16] : argument argc - 1
988 // ... 989 // ...
989 // rsp[argc * 8] : argument 1 990 // rsp[argc * 8] : argument 1
990 // rsp[(argc + 1) * 8] : argument 0 = receiver 991 // rsp[(argc + 1) * 8] : argument 0 = receiver
991 // ----------------------------------- 992 // -----------------------------------
992 993
994 Counters* counters = masm->isolate()->counters();
993 if (id == IC::kCallIC_Miss) { 995 if (id == IC::kCallIC_Miss) {
994 __ IncrementCounter(COUNTERS->call_miss(), 1); 996 __ IncrementCounter(counters->call_miss(), 1);
995 } else { 997 } else {
996 __ IncrementCounter(COUNTERS->keyed_call_miss(), 1); 998 __ IncrementCounter(counters->keyed_call_miss(), 1);
997 } 999 }
998 1000
999 // Get the receiver of the function from the stack; 1 ~ return address. 1001 // Get the receiver of the function from the stack; 1 ~ return address.
1000 __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize)); 1002 __ movq(rdx, Operand(rsp, (argc + 1) * kPointerSize));
1001 1003
1002 // Enter an internal frame. 1004 // Enter an internal frame.
1003 __ EnterInternalFrame(); 1005 __ EnterInternalFrame();
1004 1006
1005 // Push the receiver and the name of the function. 1007 // Push the receiver and the name of the function.
1006 __ push(rdx); 1008 __ push(rdx);
(...skipping 105 matching lines...) Expand 10 before | Expand all | Expand 10 after
1112 1114
1113 __ bind(&index_smi); 1115 __ bind(&index_smi);
1114 // Now the key is known to be a smi. This place is also jumped to from below 1116 // Now the key is known to be a smi. This place is also jumped to from below
1115 // where a numeric string is converted to a smi. 1117 // where a numeric string is converted to a smi.
1116 1118
1117 GenerateKeyedLoadReceiverCheck( 1119 GenerateKeyedLoadReceiverCheck(
1118 masm, rdx, rax, Map::kHasIndexedInterceptor, &slow_call); 1120 masm, rdx, rax, Map::kHasIndexedInterceptor, &slow_call);
1119 1121
1120 GenerateFastArrayLoad( 1122 GenerateFastArrayLoad(
1121 masm, rdx, rcx, rax, rbx, rdi, &check_number_dictionary, &slow_load); 1123 masm, rdx, rcx, rax, rbx, rdi, &check_number_dictionary, &slow_load);
1122 __ IncrementCounter(COUNTERS->keyed_call_generic_smi_fast(), 1); 1124 Counters* counters = masm->isolate()->counters();
1125 __ IncrementCounter(counters->keyed_call_generic_smi_fast(), 1);
1123 1126
1124 __ bind(&do_call); 1127 __ bind(&do_call);
1125 // receiver in rdx is not used after this point. 1128 // receiver in rdx is not used after this point.
1126 // rcx: key 1129 // rcx: key
1127 // rdi: function 1130 // rdi: function
1128 GenerateFunctionTailCall(masm, argc, &slow_call); 1131 GenerateFunctionTailCall(masm, argc, &slow_call);
1129 1132
1130 __ bind(&check_number_dictionary); 1133 __ bind(&check_number_dictionary);
1131 // rax: elements 1134 // rax: elements
1132 // rcx: smi key 1135 // rcx: smi key
1133 // Check whether the elements is a number dictionary. 1136 // Check whether the elements is a number dictionary.
1134 __ CompareRoot(FieldOperand(rax, HeapObject::kMapOffset), 1137 __ CompareRoot(FieldOperand(rax, HeapObject::kMapOffset),
1135 Heap::kHashTableMapRootIndex); 1138 Heap::kHashTableMapRootIndex);
1136 __ j(not_equal, &slow_load); 1139 __ j(not_equal, &slow_load);
1137 __ SmiToInteger32(rbx, rcx); 1140 __ SmiToInteger32(rbx, rcx);
1138 // ebx: untagged index 1141 // ebx: untagged index
1139 GenerateNumberDictionaryLoad(masm, &slow_load, rax, rcx, rbx, r9, rdi, rdi); 1142 GenerateNumberDictionaryLoad(masm, &slow_load, rax, rcx, rbx, r9, rdi, rdi);
1140 __ IncrementCounter(COUNTERS->keyed_call_generic_smi_dict(), 1); 1143 __ IncrementCounter(counters->keyed_call_generic_smi_dict(), 1);
1141 __ jmp(&do_call); 1144 __ jmp(&do_call);
1142 1145
1143 __ bind(&slow_load); 1146 __ bind(&slow_load);
1144 // This branch is taken when calling KeyedCallIC_Miss is neither required 1147 // This branch is taken when calling KeyedCallIC_Miss is neither required
1145 // nor beneficial. 1148 // nor beneficial.
1146 __ IncrementCounter(COUNTERS->keyed_call_generic_slow_load(), 1); 1149 __ IncrementCounter(counters->keyed_call_generic_slow_load(), 1);
1147 __ EnterInternalFrame(); 1150 __ EnterInternalFrame();
1148 __ push(rcx); // save the key 1151 __ push(rcx); // save the key
1149 __ push(rdx); // pass the receiver 1152 __ push(rdx); // pass the receiver
1150 __ push(rcx); // pass the key 1153 __ push(rcx); // pass the key
1151 __ CallRuntime(Runtime::kKeyedGetProperty, 2); 1154 __ CallRuntime(Runtime::kKeyedGetProperty, 2);
1152 __ pop(rcx); // restore the key 1155 __ pop(rcx); // restore the key
1153 __ LeaveInternalFrame(); 1156 __ LeaveInternalFrame();
1154 __ movq(rdi, rax); 1157 __ movq(rdi, rax);
1155 __ jmp(&do_call); 1158 __ jmp(&do_call);
1156 1159
1157 __ bind(&check_string); 1160 __ bind(&check_string);
1158 GenerateKeyStringCheck(masm, rcx, rax, rbx, &index_string, &slow_call); 1161 GenerateKeyStringCheck(masm, rcx, rax, rbx, &index_string, &slow_call);
1159 1162
1160 // The key is known to be a symbol. 1163 // The key is known to be a symbol.
1161 // If the receiver is a regular JS object with slow properties then do 1164 // If the receiver is a regular JS object with slow properties then do
1162 // a quick inline probe of the receiver's dictionary. 1165 // a quick inline probe of the receiver's dictionary.
1163 // Otherwise do the monomorphic cache probe. 1166 // Otherwise do the monomorphic cache probe.
1164 GenerateKeyedLoadReceiverCheck( 1167 GenerateKeyedLoadReceiverCheck(
1165 masm, rdx, rax, Map::kHasNamedInterceptor, &lookup_monomorphic_cache); 1168 masm, rdx, rax, Map::kHasNamedInterceptor, &lookup_monomorphic_cache);
1166 1169
1167 __ movq(rbx, FieldOperand(rdx, JSObject::kPropertiesOffset)); 1170 __ movq(rbx, FieldOperand(rdx, JSObject::kPropertiesOffset));
1168 __ CompareRoot(FieldOperand(rbx, HeapObject::kMapOffset), 1171 __ CompareRoot(FieldOperand(rbx, HeapObject::kMapOffset),
1169 Heap::kHashTableMapRootIndex); 1172 Heap::kHashTableMapRootIndex);
1170 __ j(not_equal, &lookup_monomorphic_cache); 1173 __ j(not_equal, &lookup_monomorphic_cache);
1171 1174
1172 GenerateDictionaryLoad(masm, &slow_load, rbx, rcx, rax, rdi, rdi); 1175 GenerateDictionaryLoad(masm, &slow_load, rbx, rcx, rax, rdi, rdi);
1173 __ IncrementCounter(COUNTERS->keyed_call_generic_lookup_dict(), 1); 1176 __ IncrementCounter(counters->keyed_call_generic_lookup_dict(), 1);
1174 __ jmp(&do_call); 1177 __ jmp(&do_call);
1175 1178
1176 __ bind(&lookup_monomorphic_cache); 1179 __ bind(&lookup_monomorphic_cache);
1177 __ IncrementCounter(COUNTERS->keyed_call_generic_lookup_cache(), 1); 1180 __ IncrementCounter(counters->keyed_call_generic_lookup_cache(), 1);
1178 GenerateMonomorphicCacheProbe(masm, argc, Code::KEYED_CALL_IC); 1181 GenerateMonomorphicCacheProbe(masm, argc, Code::KEYED_CALL_IC);
1179 // Fall through on miss. 1182 // Fall through on miss.
1180 1183
1181 __ bind(&slow_call); 1184 __ bind(&slow_call);
1182 // This branch is taken if: 1185 // This branch is taken if:
1183 // - the receiver requires boxing or access check, 1186 // - the receiver requires boxing or access check,
1184 // - the key is neither smi nor symbol, 1187 // - the key is neither smi nor symbol,
1185 // - the value loaded is not a function, 1188 // - the value loaded is not a function,
1186 // - there is hope that the runtime will create a monomorphic call stub 1189 // - there is hope that the runtime will create a monomorphic call stub
1187 // that will get fetched next time. 1190 // that will get fetched next time.
1188 __ IncrementCounter(COUNTERS->keyed_call_generic_slow(), 1); 1191 __ IncrementCounter(counters->keyed_call_generic_slow(), 1);
1189 GenerateMiss(masm, argc); 1192 GenerateMiss(masm, argc);
1190 1193
1191 __ bind(&index_string); 1194 __ bind(&index_string);
1192 __ IndexFromHash(rbx, rcx); 1195 __ IndexFromHash(rbx, rcx);
1193 // Now jump to the place where smi keys are handled. 1196 // Now jump to the place where smi keys are handled.
1194 __ jmp(&index_smi); 1197 __ jmp(&index_smi);
1195 } 1198 }
1196 1199
1197 1200
1198 void KeyedCallIC::GenerateNormal(MacroAssembler* masm, int argc) { 1201 void KeyedCallIC::GenerateNormal(MacroAssembler* masm, int argc) {
(...skipping 73 matching lines...) Expand 10 before | Expand all | Expand 10 after
1272 } 1275 }
1273 1276
1274 1277
1275 void LoadIC::GenerateMiss(MacroAssembler* masm) { 1278 void LoadIC::GenerateMiss(MacroAssembler* masm) {
1276 // ----------- S t a t e ------------- 1279 // ----------- S t a t e -------------
1277 // -- rax : receiver 1280 // -- rax : receiver
1278 // -- rcx : name 1281 // -- rcx : name
1279 // -- rsp[0] : return address 1282 // -- rsp[0] : return address
1280 // ----------------------------------- 1283 // -----------------------------------
1281 1284
1282 __ IncrementCounter(COUNTERS->load_miss(), 1); 1285 Counters* counters = masm->isolate()->counters();
1286 __ IncrementCounter(counters->load_miss(), 1);
1283 1287
1284 __ pop(rbx); 1288 __ pop(rbx);
1285 __ push(rax); // receiver 1289 __ push(rax); // receiver
1286 __ push(rcx); // name 1290 __ push(rcx); // name
1287 __ push(rbx); // return address 1291 __ push(rbx); // return address
1288 1292
1289 // Perform tail call to the entry. 1293 // Perform tail call to the entry.
1290 ExternalReference ref = 1294 ExternalReference ref =
1291 ExternalReference(IC_Utility(kLoadIC_Miss), masm->isolate()); 1295 ExternalReference(IC_Utility(kLoadIC_Miss), masm->isolate());
1292 __ TailCallExternalReference(ref, 2, 1); 1296 __ TailCallExternalReference(ref, 2, 1);
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1417 } 1421 }
1418 1422
1419 1423
1420 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) { 1424 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
1421 // ----------- S t a t e ------------- 1425 // ----------- S t a t e -------------
1422 // -- rax : key 1426 // -- rax : key
1423 // -- rdx : receiver 1427 // -- rdx : receiver
1424 // -- rsp[0] : return address 1428 // -- rsp[0] : return address
1425 // ----------------------------------- 1429 // -----------------------------------
1426 1430
1427 __ IncrementCounter(COUNTERS->keyed_load_miss(), 1); 1431 Counters* counters = masm->isolate()->counters();
1432 __ IncrementCounter(counters->keyed_load_miss(), 1);
1428 1433
1429 __ pop(rbx); 1434 __ pop(rbx);
1430 __ push(rdx); // receiver 1435 __ push(rdx); // receiver
1431 __ push(rax); // name 1436 __ push(rax); // name
1432 __ push(rbx); // return address 1437 __ push(rbx); // return address
1433 1438
1434 // Perform tail call to the entry. 1439 // Perform tail call to the entry.
1435 ExternalReference ref 1440 ExternalReference ref
1436 = ExternalReference(IC_Utility(kKeyedLoadIC_Miss), masm->isolate()); 1441 = ExternalReference(IC_Utility(kKeyedLoadIC_Miss), masm->isolate());
1437 __ TailCallExternalReference(ref, 2, 1); 1442 __ TailCallExternalReference(ref, 2, 1);
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after
1562 // -- rcx : name 1567 // -- rcx : name
1563 // -- rdx : receiver 1568 // -- rdx : receiver
1564 // -- rsp[0] : return address 1569 // -- rsp[0] : return address
1565 // ----------------------------------- 1570 // -----------------------------------
1566 1571
1567 Label miss; 1572 Label miss;
1568 1573
1569 GenerateStringDictionaryReceiverCheck(masm, rdx, rbx, rdi, &miss); 1574 GenerateStringDictionaryReceiverCheck(masm, rdx, rbx, rdi, &miss);
1570 1575
1571 GenerateDictionaryStore(masm, &miss, rbx, rcx, rax, r8, r9); 1576 GenerateDictionaryStore(masm, &miss, rbx, rcx, rax, r8, r9);
1572 __ IncrementCounter(COUNTERS->store_normal_hit(), 1); 1577 Counters* counters = masm->isolate()->counters();
1578 __ IncrementCounter(counters->store_normal_hit(), 1);
1573 __ ret(0); 1579 __ ret(0);
1574 1580
1575 __ bind(&miss); 1581 __ bind(&miss);
1576 __ IncrementCounter(COUNTERS->store_normal_miss(), 1); 1582 __ IncrementCounter(counters->store_normal_miss(), 1);
1577 GenerateMiss(masm); 1583 GenerateMiss(masm);
1578 } 1584 }
1579 1585
1580 1586
1581 void StoreIC::GenerateGlobalProxy(MacroAssembler* masm, 1587 void StoreIC::GenerateGlobalProxy(MacroAssembler* masm,
1582 StrictModeFlag strict_mode) { 1588 StrictModeFlag strict_mode) {
1583 // ----------- S t a t e ------------- 1589 // ----------- S t a t e -------------
1584 // -- rax : value 1590 // -- rax : value
1585 // -- rcx : name 1591 // -- rcx : name
1586 // -- rdx : receiver 1592 // -- rdx : receiver
(...skipping 150 matching lines...) Expand 10 before | Expand all | Expand 10 after
1737 Condition cc = *jmp_address == Assembler::kJncShortOpcode 1743 Condition cc = *jmp_address == Assembler::kJncShortOpcode
1738 ? not_zero 1744 ? not_zero
1739 : zero; 1745 : zero;
1740 *jmp_address = static_cast<byte>(Assembler::kJccShortPrefix | cc); 1746 *jmp_address = static_cast<byte>(Assembler::kJccShortPrefix | cc);
1741 } 1747 }
1742 1748
1743 1749
1744 } } // namespace v8::internal 1750 } } // namespace v8::internal
1745 1751
1746 #endif // V8_TARGET_ARCH_X64 1752 #endif // V8_TARGET_ARCH_X64
OLDNEW
« no previous file with comments | « src/x64/full-codegen-x64.cc ('k') | src/x64/stub-cache-x64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698