Index: src/arm/ic-arm.cc |
diff --git a/src/arm/ic-arm.cc b/src/arm/ic-arm.cc |
index 9f9b63ce5ca5cb0ac8d58ee2c1ea2b96f00164a5..888d2abd597cded79c4828fec17225ab7cf451c2 100644 |
--- a/src/arm/ic-arm.cc |
+++ b/src/arm/ic-arm.cc |
@@ -646,11 +646,12 @@ static void GenerateCallMiss(MacroAssembler* masm, int argc, IC::UtilityId id) { |
// -- r2 : name |
// -- lr : return address |
// ----------------------------------- |
+ Isolate* isolate = masm->isolate(); |
if (id == IC::kCallIC_Miss) { |
- __ IncrementCounter(COUNTERS->call_miss(), 1, r3, r4); |
+ __ IncrementCounter(isolate->counters()->call_miss(), 1, r3, r4); |
} else { |
- __ IncrementCounter(COUNTERS->keyed_call_miss(), 1, r3, r4); |
+ __ IncrementCounter(isolate->counters()->keyed_call_miss(), 1, r3, r4); |
} |
// Get the receiver of the function from the stack. |
@@ -663,7 +664,7 @@ static void GenerateCallMiss(MacroAssembler* masm, int argc, IC::UtilityId id) { |
// Call the entry. |
__ mov(r0, Operand(2)); |
- __ mov(r1, Operand(ExternalReference(IC_Utility(id), masm->isolate()))); |
+ __ mov(r1, Operand(ExternalReference(IC_Utility(id), isolate))); |
CEntryStub stub(1); |
__ CallStub(&stub); |
@@ -765,7 +766,8 @@ void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) { |
GenerateFastArrayLoad( |
masm, r1, r2, r4, r3, r0, r1, &check_number_dictionary, &slow_load); |
- __ IncrementCounter(COUNTERS->keyed_call_generic_smi_fast(), 1, r0, r3); |
+ Counters* counters = masm->isolate()->counters(); |
+ __ IncrementCounter(counters->keyed_call_generic_smi_fast(), 1, r0, r3); |
__ bind(&do_call); |
// receiver in r1 is not used after this point. |
@@ -784,13 +786,13 @@ void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) { |
__ mov(r0, Operand(r2, ASR, kSmiTagSize)); |
// r0: untagged index |
GenerateNumberDictionaryLoad(masm, &slow_load, r4, r2, r1, r0, r3, r5); |
- __ IncrementCounter(COUNTERS->keyed_call_generic_smi_dict(), 1, r0, r3); |
+ __ IncrementCounter(counters->keyed_call_generic_smi_dict(), 1, r0, r3); |
__ 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, r0, r3); |
+ __ IncrementCounter(counters->keyed_call_generic_slow_load(), 1, r0, r3); |
__ EnterInternalFrame(); |
__ push(r2); // save the key |
__ Push(r1, r2); // pass the receiver and the key |
@@ -817,11 +819,11 @@ void KeyedCallIC::GenerateMegamorphic(MacroAssembler* masm, int argc) { |
__ b(ne, &lookup_monomorphic_cache); |
GenerateDictionaryLoad(masm, &slow_load, r0, r2, r1, r3, r4); |
- __ IncrementCounter(COUNTERS->keyed_call_generic_lookup_dict(), 1, r0, r3); |
+ __ IncrementCounter(counters->keyed_call_generic_lookup_dict(), 1, r0, r3); |
__ jmp(&do_call); |
__ bind(&lookup_monomorphic_cache); |
- __ IncrementCounter(COUNTERS->keyed_call_generic_lookup_cache(), 1, r0, r3); |
+ __ IncrementCounter(counters->keyed_call_generic_lookup_cache(), 1, r0, r3); |
GenerateMonomorphicCacheProbe(masm, argc, Code::KEYED_CALL_IC); |
// Fall through on miss. |
@@ -832,7 +834,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, r0, r3); |
+ __ IncrementCounter(counters->keyed_call_generic_slow(), 1, r0, r3); |
GenerateMiss(masm, argc); |
__ bind(&index_string); |
@@ -911,15 +913,16 @@ void LoadIC::GenerateMiss(MacroAssembler* masm) { |
// -- r0 : receiver |
// -- sp[0] : receiver |
// ----------------------------------- |
+ Isolate* isolate = masm->isolate(); |
- __ IncrementCounter(COUNTERS->load_miss(), 1, r3, r4); |
+ __ IncrementCounter(isolate->counters()->load_miss(), 1, r3, r4); |
__ mov(r3, r0); |
__ Push(r3, r2); |
// Perform tail call to the entry. |
ExternalReference ref = |
- ExternalReference(IC_Utility(kLoadIC_Miss), masm->isolate()); |
+ ExternalReference(IC_Utility(kLoadIC_Miss), isolate); |
__ TailCallExternalReference(ref, 2, 1); |
} |
@@ -1144,13 +1147,14 @@ void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) { |
// -- r0 : key |
// -- r1 : receiver |
// ----------------------------------- |
+ Isolate* isolate = masm->isolate(); |
- __ IncrementCounter(COUNTERS->keyed_load_miss(), 1, r3, r4); |
+ __ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, r3, r4); |
__ Push(r1, r0); |
ExternalReference ref = |
- ExternalReference(IC_Utility(kKeyedLoadIC_Miss), masm->isolate()); |
+ ExternalReference(IC_Utility(kKeyedLoadIC_Miss), isolate); |
__ TailCallExternalReference(ref, 2, 1); |
} |
@@ -1180,6 +1184,8 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) { |
Register key = r0; |
Register receiver = r1; |
+ Isolate* isolate = masm->isolate(); |
+ |
// Check that the key is a smi. |
__ JumpIfNotSmi(key, &check_string); |
__ bind(&index_smi); |
@@ -1197,7 +1203,7 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) { |
GenerateFastArrayLoad( |
masm, receiver, key, r4, r3, r2, r0, NULL, &slow); |
- __ IncrementCounter(COUNTERS->keyed_load_generic_smi(), 1, r2, r3); |
+ __ IncrementCounter(isolate->counters()->keyed_load_generic_smi(), 1, r2, r3); |
__ Ret(); |
__ bind(&check_number_dictionary); |
@@ -1217,7 +1223,8 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) { |
// Slow case, key and receiver still in r0 and r1. |
__ bind(&slow); |
- __ IncrementCounter(COUNTERS->keyed_load_generic_slow(), 1, r2, r3); |
+ __ IncrementCounter(isolate->counters()->keyed_load_generic_slow(), |
+ 1, r2, r3); |
GenerateRuntimeGetProperty(masm); |
__ bind(&check_string); |
@@ -1245,7 +1252,7 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) { |
// Load the key (consisting of map and symbol) from the cache and |
// check for match. |
ExternalReference cache_keys = |
- ExternalReference::keyed_lookup_cache_keys(masm->isolate()); |
+ ExternalReference::keyed_lookup_cache_keys(isolate); |
__ mov(r4, Operand(cache_keys)); |
__ add(r4, r4, Operand(r3, LSL, kPointerSizeLog2 + 1)); |
__ ldr(r5, MemOperand(r4, kPointerSize, PostIndex)); // Move r4 to symbol. |
@@ -1261,7 +1268,7 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) { |
// r2 : receiver's map |
// r3 : lookup cache index |
ExternalReference cache_field_offsets = |
- ExternalReference::keyed_lookup_cache_field_offsets(masm->isolate()); |
+ ExternalReference::keyed_lookup_cache_field_offsets(isolate); |
__ mov(r4, Operand(cache_field_offsets)); |
__ ldr(r5, MemOperand(r4, r3, LSL, kPointerSizeLog2)); |
__ ldrb(r6, FieldMemOperand(r2, Map::kInObjectPropertiesOffset)); |
@@ -1273,7 +1280,8 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) { |
__ add(r6, r6, r5); // Index from start of object. |
__ sub(r1, r1, Operand(kHeapObjectTag)); // Remove the heap tag. |
__ ldr(r0, MemOperand(r1, r6, LSL, kPointerSizeLog2)); |
- __ IncrementCounter(COUNTERS->keyed_load_generic_lookup_cache(), 1, r2, r3); |
+ __ IncrementCounter(isolate->counters()->keyed_load_generic_lookup_cache(), |
+ 1, r2, r3); |
__ Ret(); |
// Load property array property. |
@@ -1281,7 +1289,8 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) { |
__ ldr(r1, FieldMemOperand(r1, JSObject::kPropertiesOffset)); |
__ add(r1, r1, Operand(FixedArray::kHeaderSize - kHeapObjectTag)); |
__ ldr(r0, MemOperand(r1, r5, LSL, kPointerSizeLog2)); |
- __ IncrementCounter(COUNTERS->keyed_load_generic_lookup_cache(), 1, r2, r3); |
+ __ IncrementCounter(isolate->counters()->keyed_load_generic_lookup_cache(), |
+ 1, r2, r3); |
__ Ret(); |
// Do a quick inline probe of the receiver's dictionary, if it |
@@ -1295,7 +1304,8 @@ void KeyedLoadIC::GenerateGeneric(MacroAssembler* masm) { |
GenerateGlobalInstanceTypeCheck(masm, r2, &slow); |
// Load the property to r0. |
GenerateDictionaryLoad(masm, &slow, r3, r0, r0, r2, r4); |
- __ IncrementCounter(COUNTERS->keyed_load_generic_symbol(), 1, r2, r3); |
+ __ IncrementCounter(isolate->counters()->keyed_load_generic_symbol(), |
+ 1, r2, r3); |
__ Ret(); |
__ bind(&index_string); |
@@ -1625,11 +1635,13 @@ void StoreIC::GenerateNormal(MacroAssembler* masm) { |
GenerateStringDictionaryReceiverCheck(masm, r1, r3, r4, r5, &miss); |
GenerateDictionaryStore(masm, &miss, r3, r2, r0, r4, r5); |
- __ IncrementCounter(COUNTERS->store_normal_hit(), 1, r4, r5); |
+ Counters* counters = masm->isolate()->counters(); |
+ __ IncrementCounter(counters->store_normal_hit(), |
+ 1, r4, r5); |
__ Ret(); |
__ bind(&miss); |
- __ IncrementCounter(COUNTERS->store_normal_miss(), 1, r4, r5); |
+ __ IncrementCounter(counters->store_normal_miss(), 1, r4, r5); |
GenerateMiss(masm); |
} |