| Index: src/x64/ic-x64.cc
|
| diff --git a/src/x64/ic-x64.cc b/src/x64/ic-x64.cc
|
| index 7755493ef564d5fb0bfeeab0508c853efb3b1db7..9180465e52b7f30702c9092b4318a34a503a6718 100644
|
| --- a/src/x64/ic-x64.cc
|
| +++ b/src/x64/ic-x64.cc
|
| @@ -579,7 +579,8 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
|
| rax,
|
| NULL,
|
| &slow);
|
| - __ IncrementCounter(COUNTERS->keyed_load_generic_smi(), 1);
|
| + Counters* counters = masm->isolate()->counters();
|
| + __ IncrementCounter(counters->keyed_load_generic_smi(), 1);
|
| __ ret(0);
|
|
|
| __ bind(&check_number_dictionary);
|
| @@ -601,7 +602,7 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
|
| // Slow case: Jump to runtime.
|
| // rdx: receiver
|
| // rax: key
|
| - __ IncrementCounter(COUNTERS->keyed_load_generic_slow(), 1);
|
| + __ IncrementCounter(counters->keyed_load_generic_slow(), 1);
|
| GenerateRuntimeGetProperty(masm);
|
|
|
| __ bind(&check_string);
|
| @@ -652,7 +653,7 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
|
| __ movzxbq(rcx, FieldOperand(rbx, Map::kInstanceSizeOffset));
|
| __ addq(rcx, rdi);
|
| __ movq(rax, FieldOperand(rdx, rcx, times_pointer_size, 0));
|
| - __ IncrementCounter(COUNTERS->keyed_load_generic_lookup_cache(), 1);
|
| + __ IncrementCounter(counters->keyed_load_generic_lookup_cache(), 1);
|
| __ ret(0);
|
|
|
| // Load property array property.
|
| @@ -660,7 +661,7 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
|
| __ movq(rax, FieldOperand(rdx, JSObject::kPropertiesOffset));
|
| __ movq(rax, FieldOperand(rax, rdi, times_pointer_size,
|
| FixedArray::kHeaderSize));
|
| - __ IncrementCounter(COUNTERS->keyed_load_generic_lookup_cache(), 1);
|
| + __ IncrementCounter(counters->keyed_load_generic_lookup_cache(), 1);
|
| __ ret(0);
|
|
|
| // Do a quick inline probe of the receiver's dictionary, if it
|
| @@ -675,7 +676,7 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) {
|
| GenerateGlobalInstanceTypeCheck(masm, rcx, &slow);
|
|
|
| GenerateDictionaryLoad(masm, &slow, rbx, rax, rcx, rdi, rax);
|
| - __ IncrementCounter(COUNTERS->keyed_load_generic_symbol(), 1);
|
| + __ IncrementCounter(counters->keyed_load_generic_symbol(), 1);
|
| __ ret(0);
|
|
|
| __ bind(&index_string);
|
| @@ -990,10 +991,11 @@ static void GenerateCallMiss(MacroAssembler* masm, int argc, IC::UtilityId id) {
|
| // rsp[(argc + 1) * 8] : argument 0 = receiver
|
| // -----------------------------------
|
|
|
| + Counters* counters = masm->isolate()->counters();
|
| if (id == IC::kCallIC_Miss) {
|
| - __ IncrementCounter(COUNTERS->call_miss(), 1);
|
| + __ IncrementCounter(counters->call_miss(), 1);
|
| } else {
|
| - __ IncrementCounter(COUNTERS->keyed_call_miss(), 1);
|
| + __ IncrementCounter(counters->keyed_call_miss(), 1);
|
| }
|
|
|
| // Get the receiver of the function from the stack; 1 ~ return address.
|
| @@ -1119,7 +1121,8 @@ void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) {
|
|
|
| GenerateFastArrayLoad(
|
| masm, rdx, rcx, rax, rbx, rdi, &check_number_dictionary, &slow_load);
|
| - __ IncrementCounter(COUNTERS->keyed_call_generic_smi_fast(), 1);
|
| + Counters* counters = masm->isolate()->counters();
|
| + __ IncrementCounter(counters->keyed_call_generic_smi_fast(), 1);
|
|
|
| __ bind(&do_call);
|
| // receiver in rdx is not used after this point.
|
| @@ -1137,13 +1140,13 @@ void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) {
|
| __ SmiToInteger32(rbx, rcx);
|
| // ebx: untagged index
|
| GenerateNumberDictionaryLoad(masm, &slow_load, rax, rcx, rbx, r9, rdi, rdi);
|
| - __ IncrementCounter(COUNTERS->keyed_call_generic_smi_dict(), 1);
|
| + __ IncrementCounter(counters->keyed_call_generic_smi_dict(), 1);
|
| __ jmp(&do_call);
|
|
|
| __ bind(&slow_load);
|
| // This branch is taken when calling KeyedCallIC_Miss is neither required
|
| // nor beneficial.
|
| - __ IncrementCounter(COUNTERS->keyed_call_generic_slow_load(), 1);
|
| + __ IncrementCounter(counters->keyed_call_generic_slow_load(), 1);
|
| __ EnterInternalFrame();
|
| __ push(rcx); // save the key
|
| __ push(rdx); // pass the receiver
|
| @@ -1170,11 +1173,11 @@ void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) {
|
| __ j(not_equal, &lookup_monomorphic_cache);
|
|
|
| GenerateDictionaryLoad(masm, &slow_load, rbx, rcx, rax, rdi, rdi);
|
| - __ IncrementCounter(COUNTERS->keyed_call_generic_lookup_dict(), 1);
|
| + __ IncrementCounter(counters->keyed_call_generic_lookup_dict(), 1);
|
| __ jmp(&do_call);
|
|
|
| __ bind(&lookup_monomorphic_cache);
|
| - __ IncrementCounter(COUNTERS->keyed_call_generic_lookup_cache(), 1);
|
| + __ IncrementCounter(counters->keyed_call_generic_lookup_cache(), 1);
|
| GenerateMonomorphicCacheProbe(masm, argc, Code::KEYED_CALL_IC);
|
| // Fall through on miss.
|
|
|
| @@ -1185,7 +1188,7 @@ void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) {
|
| // - the value loaded is not a function,
|
| // - there is hope that the runtime will create a monomorphic call stub
|
| // that will get fetched next time.
|
| - __ IncrementCounter(COUNTERS->keyed_call_generic_slow(), 1);
|
| + __ IncrementCounter(counters->keyed_call_generic_slow(), 1);
|
| GenerateMiss(masm, argc);
|
|
|
| __ bind(&index_string);
|
| @@ -1279,7 +1282,8 @@ void LoadIC::GenerateMiss(MacroAssembler* masm) {
|
| // -- rsp[0] : return address
|
| // -----------------------------------
|
|
|
| - __ IncrementCounter(COUNTERS->load_miss(), 1);
|
| + Counters* counters = masm->isolate()->counters();
|
| + __ IncrementCounter(counters->load_miss(), 1);
|
|
|
| __ pop(rbx);
|
| __ push(rax); // receiver
|
| @@ -1424,7 +1428,8 @@ void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
|
| // -- rsp[0] : return address
|
| // -----------------------------------
|
|
|
| - __ IncrementCounter(COUNTERS->keyed_load_miss(), 1);
|
| + Counters* counters = masm->isolate()->counters();
|
| + __ IncrementCounter(counters->keyed_load_miss(), 1);
|
|
|
| __ pop(rbx);
|
| __ push(rdx); // receiver
|
| @@ -1569,11 +1574,12 @@ void StoreIC::GenerateNormal(MacroAssembler* masm) {
|
| GenerateStringDictionaryReceiverCheck(masm, rdx, rbx, rdi, &miss);
|
|
|
| GenerateDictionaryStore(masm, &miss, rbx, rcx, rax, r8, r9);
|
| - __ IncrementCounter(COUNTERS->store_normal_hit(), 1);
|
| + Counters* counters = masm->isolate()->counters();
|
| + __ IncrementCounter(counters->store_normal_hit(), 1);
|
| __ ret(0);
|
|
|
| __ bind(&miss);
|
| - __ IncrementCounter(COUNTERS->store_normal_miss(), 1);
|
| + __ IncrementCounter(counters->store_normal_miss(), 1);
|
| GenerateMiss(masm);
|
| }
|
|
|
|
|