Index: src/x64/stub-cache-x64.cc |
diff --git a/src/x64/stub-cache-x64.cc b/src/x64/stub-cache-x64.cc |
index 403a1dc4f2a4bceeaf871a57085da68444e1772b..7494fe0d91a51b41f2bcbe7b9e0f3c18c1e560df 100644 |
--- a/src/x64/stub-cache-x64.cc |
+++ b/src/x64/stub-cache-x64.cc |
@@ -153,7 +153,7 @@ static void GenerateDictionaryNegativeLookup(MacroAssembler* masm, |
ASSERT_EQ(kSmiTagSize, 1); |
__ movq(entity_name, Operand(properties, index, times_pointer_size, |
kElementsStartOffset - kHeapObjectTag)); |
- __ Cmp(entity_name, FACTORY->undefined_value()); |
+ __ Cmp(entity_name, masm->isolate()->factory()->undefined_value()); |
// __ jmp(miss_label); |
if (i != kProbes - 1) { |
__ j(equal, &done); |
@@ -380,7 +380,7 @@ static void PushInterceptorArguments(MacroAssembler* masm, |
JSObject* holder_obj) { |
__ push(name); |
InterceptorInfo* interceptor = holder_obj->GetNamedInterceptor(); |
- ASSERT(!HEAP->InNewSpace(interceptor)); |
+ ASSERT(!masm->isolate()->heap()->InNewSpace(interceptor)); |
__ Move(kScratchRegister, Handle<Object>(interceptor)); |
__ push(kScratchRegister); |
__ push(receiver); |
@@ -472,7 +472,7 @@ static MaybeObject* GenerateFastApiCall(MacroAssembler* masm, |
__ movq(Operand(rsp, 2 * kPointerSize), rdi); |
Object* call_data = optimization.api_call_info()->data(); |
Handle<CallHandlerInfo> api_call_info_handle(optimization.api_call_info()); |
- if (HEAP->InNewSpace(call_data)) { |
+ if (masm->isolate()->heap()->InNewSpace(call_data)) { |
__ Move(rcx, api_call_info_handle); |
__ movq(rbx, FieldOperand(rcx, CallHandlerInfo::kDataOffset)); |
__ movq(Operand(rsp, 3 * kPointerSize), rbx); |
@@ -567,7 +567,7 @@ class CallInterceptorCompiler BASE_EMBEDDED { |
name, |
holder, |
miss); |
- return HEAP->undefined_value(); // Success. |
+ return masm->isolate()->heap()->undefined_value(); // Success. |
} |
} |
@@ -667,7 +667,7 @@ class CallInterceptorCompiler BASE_EMBEDDED { |
FreeSpaceForFastApiCall(masm, scratch1); |
} |
- return HEAP->undefined_value(); // Success. |
+ return masm->isolate()->heap()->undefined_value(); // Success. |
} |
void CompileRegular(MacroAssembler* masm, |
@@ -847,7 +847,7 @@ MUST_USE_RESULT static MaybeObject* GenerateCheckPropertyCell( |
ASSERT(cell->value()->IsTheHole()); |
__ Move(scratch, Handle<Object>(cell)); |
__ Cmp(FieldOperand(scratch, JSGlobalPropertyCell::kValueOffset), |
- FACTORY->the_hole_value()); |
+ masm->isolate()->factory()->the_hole_value()); |
__ j(not_equal, miss); |
return cell; |
} |
@@ -896,7 +896,7 @@ Register StubCompiler::CheckPrototypes(JSObject* object, |
!current->IsJSGlobalObject() && |
!current->IsJSGlobalProxy()) { |
if (!name->IsSymbol()) { |
- MaybeObject* lookup_result = HEAP->LookupSymbol(name); |
+ MaybeObject* lookup_result = heap()->LookupSymbol(name); |
if (lookup_result->IsFailure()) { |
set_failure(Failure::cast(lookup_result)); |
return reg; |
@@ -916,7 +916,7 @@ Register StubCompiler::CheckPrototypes(JSObject* object, |
__ movq(scratch1, FieldOperand(reg, HeapObject::kMapOffset)); |
reg = holder_reg; // from now the object is in holder_reg |
__ movq(reg, FieldOperand(scratch1, Map::kPrototypeOffset)); |
- } else if (HEAP->InNewSpace(prototype)) { |
+ } else if (heap()->InNewSpace(prototype)) { |
// Get the map of the current object. |
__ movq(scratch1, FieldOperand(reg, HeapObject::kMapOffset)); |
__ Cmp(scratch1, Handle<Map>(current->map())); |
@@ -1050,7 +1050,7 @@ MaybeObject* StubCompiler::GenerateLoadCallback(JSObject* object, |
__ push(receiver); // receiver |
__ push(reg); // holder |
- if (HEAP->InNewSpace(callback_handle->data())) { |
+ if (heap()->InNewSpace(callback_handle->data())) { |
__ Move(scratch1, callback_handle); |
__ push(FieldOperand(scratch1, AccessorInfo::kDataOffset)); // data |
} else { |
@@ -1242,7 +1242,7 @@ void StubCompiler::GenerateLoadInterceptor(JSObject* object, |
ExternalReference ref = |
ExternalReference(IC_Utility(IC::kLoadCallbackProperty), |
- masm()->isolate()); |
+ isolate()); |
__ TailCallExternalReference(ref, 5, 1); |
} |
} else { // !compile_followup_inline |
@@ -1257,7 +1257,7 @@ void StubCompiler::GenerateLoadInterceptor(JSObject* object, |
__ push(scratch2); // restore old return address |
ExternalReference ref = ExternalReference( |
- IC_Utility(IC::kLoadPropertyWithInterceptorForLoad), masm()->isolate()); |
+ IC_Utility(IC::kLoadPropertyWithInterceptorForLoad), isolate()); |
__ TailCallExternalReference(ref, 5, 1); |
} |
} |
@@ -1303,7 +1303,7 @@ void CallStubCompiler::GenerateLoadFunctionFromCell(JSGlobalPropertyCell* cell, |
__ movq(rdi, FieldOperand(rdi, JSGlobalPropertyCell::kValueOffset)); |
// Check that the cell contains the same function. |
- if (HEAP->InNewSpace(function)) { |
+ if (heap()->InNewSpace(function)) { |
// We can't embed a pointer to a function in new space so we have |
// to verify that the shared function info is unchanged. This has |
// the nice side effect that multiple closures based on the same |
@@ -1325,7 +1325,7 @@ void CallStubCompiler::GenerateLoadFunctionFromCell(JSGlobalPropertyCell* cell, |
MaybeObject* CallStubCompiler::GenerateMissBranch() { |
- MaybeObject* maybe_obj = masm()->isolate()->stub_cache()->ComputeCallMiss( |
+ MaybeObject* maybe_obj = isolate()->stub_cache()->ComputeCallMiss( |
arguments().immediate(), kind_); |
Object* obj; |
if (!maybe_obj->ToObject(&obj)) return maybe_obj; |
@@ -1403,7 +1403,7 @@ MaybeObject* CallStubCompiler::CompileArrayPushCall(Object* object, |
// ----------------------------------- |
// If object is not an array, bail out to regular call. |
- if (!object->IsJSArray() || cell != NULL) return HEAP->undefined_value(); |
+ if (!object->IsJSArray() || cell != NULL) return heap()->undefined_value(); |
Label miss; |
@@ -1437,7 +1437,7 @@ MaybeObject* CallStubCompiler::CompileArrayPushCall(Object* object, |
// Check that the elements are in fast mode and writable. |
__ Cmp(FieldOperand(rbx, HeapObject::kMapOffset), |
- FACTORY->fixed_array_map()); |
+ factory()->fixed_array_map()); |
__ j(not_equal, &call_builtin); |
if (argc == 1) { // Otherwise fall through to call builtin. |
@@ -1486,11 +1486,10 @@ MaybeObject* CallStubCompiler::CompileArrayPushCall(Object* object, |
__ jmp(&call_builtin); |
} |
- Isolate* isolate = masm()->isolate(); |
ExternalReference new_space_allocation_top = |
- ExternalReference::new_space_allocation_top_address(isolate); |
+ ExternalReference::new_space_allocation_top_address(isolate()); |
ExternalReference new_space_allocation_limit = |
- ExternalReference::new_space_allocation_limit_address(isolate); |
+ ExternalReference::new_space_allocation_limit_address(isolate()); |
const int kAllocationDelta = 4; |
// Load top. |
@@ -1537,7 +1536,7 @@ MaybeObject* CallStubCompiler::CompileArrayPushCall(Object* object, |
__ bind(&call_builtin); |
__ TailCallExternalReference(ExternalReference(Builtins::c_ArrayPush, |
- masm()->isolate()), |
+ isolate()), |
argc + 1, |
1); |
} |
@@ -1565,7 +1564,7 @@ MaybeObject* CallStubCompiler::CompileArrayPopCall(Object* object, |
// ----------------------------------- |
// If object is not an array, bail out to regular call. |
- if (!object->IsJSArray() || cell != NULL) return HEAP->undefined_value(); |
+ if (!object->IsJSArray() || cell != NULL) return heap()->undefined_value(); |
Label miss, return_undefined, call_builtin; |
@@ -1621,7 +1620,7 @@ MaybeObject* CallStubCompiler::CompileArrayPopCall(Object* object, |
__ bind(&call_builtin); |
__ TailCallExternalReference( |
- ExternalReference(Builtins::c_ArrayPop, masm()->isolate()), |
+ ExternalReference(Builtins::c_ArrayPop, isolate()), |
argc + 1, |
1); |
@@ -1649,7 +1648,7 @@ MaybeObject* CallStubCompiler::CompileStringCharCodeAtCall( |
// ----------------------------------- |
// If object is not a string, bail out to regular call. |
- if (!object->IsString() || cell != NULL) return HEAP->undefined_value(); |
+ if (!object->IsString() || cell != NULL) return heap()->undefined_value(); |
const int argc = arguments().immediate(); |
@@ -1731,7 +1730,7 @@ MaybeObject* CallStubCompiler::CompileStringCharAtCall( |
// ----------------------------------- |
// If object is not a string, bail out to regular call. |
- if (!object->IsString() || cell != NULL) return HEAP->undefined_value(); |
+ if (!object->IsString() || cell != NULL) return heap()->undefined_value(); |
const int argc = arguments().immediate(); |
@@ -1818,7 +1817,7 @@ MaybeObject* CallStubCompiler::CompileStringFromCharCodeCall( |
// If the object is not a JSObject or we got an unexpected number of |
// arguments, bail out to the regular call. |
- if (!object->IsJSObject() || argc != 1) return HEAP->undefined_value(); |
+ if (!object->IsJSObject() || argc != 1) return heap()->undefined_value(); |
Label miss; |
GenerateNameCheck(name, &miss); |
@@ -1875,7 +1874,7 @@ MaybeObject* CallStubCompiler::CompileMathFloorCall(Object* object, |
JSFunction* function, |
String* name) { |
// TODO(872): implement this. |
- return HEAP->undefined_value(); |
+ return heap()->undefined_value(); |
} |
@@ -1896,7 +1895,7 @@ MaybeObject* CallStubCompiler::CompileMathAbsCall(Object* object, |
// If the object is not a JSObject or we got an unexpected number of |
// arguments, bail out to the regular call. |
- if (!object->IsJSObject() || argc != 1) return HEAP->undefined_value(); |
+ if (!object->IsJSObject() || argc != 1) return heap()->undefined_value(); |
Label miss; |
GenerateNameCheck(name, &miss); |
@@ -1945,7 +1944,7 @@ MaybeObject* CallStubCompiler::CompileMathAbsCall(Object* object, |
// Check if the argument is a heap number and load its value. |
__ bind(¬_smi); |
- __ CheckMap(rax, FACTORY->heap_number_map(), &slow, true); |
+ __ CheckMap(rax, factory()->heap_number_map(), &slow, true); |
__ movq(rbx, FieldOperand(rax, HeapNumber::kValueOffset)); |
// Check the sign of the argument. If the argument is positive, |
@@ -1992,11 +1991,11 @@ MaybeObject* CallStubCompiler::CompileFastApiCall( |
ASSERT(optimization.is_simple_api_call()); |
// Bail out if object is a global object as we don't want to |
// repatch it to global receiver. |
- if (object->IsGlobalObject()) return HEAP->undefined_value(); |
- if (cell != NULL) return HEAP->undefined_value(); |
+ if (object->IsGlobalObject()) return heap()->undefined_value(); |
+ if (cell != NULL) return heap()->undefined_value(); |
int depth = optimization.GetPrototypeDepthOfExpectedType( |
JSObject::cast(object), holder); |
- if (depth == kInvalidProtoDepth) return HEAP->undefined_value(); |
+ if (depth == kInvalidProtoDepth) return heap()->undefined_value(); |
Label miss, miss_before_stack_reserved; |
@@ -2009,7 +2008,7 @@ MaybeObject* CallStubCompiler::CompileFastApiCall( |
// Check that the receiver isn't a smi. |
__ JumpIfSmi(rdx, &miss_before_stack_reserved); |
- Counters* counters = masm()->isolate()->counters(); |
+ Counters* counters = isolate()->counters(); |
__ IncrementCounter(counters->call_const(), 1); |
__ IncrementCounter(counters->call_const_fast_api(), 1); |
@@ -2081,7 +2080,7 @@ MaybeObject* CallStubCompiler::CompileCallConstant(Object* object, |
// unless we're doing a receiver map check. |
ASSERT(!object->IsGlobalObject() || check == RECEIVER_MAP_CHECK); |
- Counters* counters = masm()->isolate()->counters(); |
+ Counters* counters = isolate()->counters(); |
SharedFunctionInfo* function_info = function->shared(); |
switch (check) { |
case RECEIVER_MAP_CHECK: |
@@ -2287,7 +2286,7 @@ MaybeObject* CallStubCompiler::CompileCallGlobal(JSObject* object, |
__ movq(rsi, FieldOperand(rdi, JSFunction::kContextOffset)); |
// Jump to the cached code (tail call). |
- Counters* counters = masm()->isolate()->counters(); |
+ Counters* counters = isolate()->counters(); |
__ IncrementCounter(counters->call_global_inline(), 1); |
ASSERT(function->is_compiled()); |
ParameterCount expected(function->shared()->formal_parameter_count()); |
@@ -2335,7 +2334,7 @@ MaybeObject* StoreStubCompiler::CompileStoreField(JSObject* object, |
// Handle store cache miss. |
__ bind(&miss); |
- Handle<Code> ic = masm()->isolate()->builtins()->StoreIC_Miss(); |
+ Handle<Code> ic = isolate()->builtins()->StoreIC_Miss(); |
__ Jump(ic, RelocInfo::CODE_TARGET); |
// Return the generated code. |
@@ -2380,13 +2379,12 @@ MaybeObject* StoreStubCompiler::CompileStoreCallback(JSObject* object, |
// Do tail-call to the runtime system. |
ExternalReference store_callback_property = |
- ExternalReference(IC_Utility(IC::kStoreCallbackProperty), |
- masm()->isolate()); |
+ ExternalReference(IC_Utility(IC::kStoreCallbackProperty), isolate()); |
__ TailCallExternalReference(store_callback_property, 4, 1); |
// Handle store cache miss. |
__ bind(&miss); |
- Handle<Code> ic = masm()->isolate()->builtins()->StoreIC_Miss(); |
+ Handle<Code> ic = isolate()->builtins()->StoreIC_Miss(); |
__ Jump(ic, RelocInfo::CODE_TARGET); |
// Return the generated code. |
@@ -2430,13 +2428,12 @@ MaybeObject* StoreStubCompiler::CompileStoreInterceptor(JSObject* receiver, |
// Do tail-call to the runtime system. |
ExternalReference store_ic_property = |
- ExternalReference(IC_Utility(IC::kStoreInterceptorProperty), |
- masm()->isolate()); |
+ ExternalReference(IC_Utility(IC::kStoreInterceptorProperty), isolate()); |
__ TailCallExternalReference(store_ic_property, 4, 1); |
// Handle store cache miss. |
__ bind(&miss); |
- Handle<Code> ic = masm()->isolate()->builtins()->StoreIC_Miss(); |
+ Handle<Code> ic = isolate()->builtins()->StoreIC_Miss(); |
__ Jump(ic, RelocInfo::CODE_TARGET); |
// Return the generated code. |
@@ -2473,14 +2470,14 @@ MaybeObject* StoreStubCompiler::CompileStoreGlobal(GlobalObject* object, |
__ movq(FieldOperand(rbx, JSGlobalPropertyCell::kValueOffset), rax); |
// Return the value (register rax). |
- Counters* counters = masm()->isolate()->counters(); |
+ Counters* counters = isolate()->counters(); |
__ IncrementCounter(counters->named_store_global_inline(), 1); |
__ ret(0); |
// Handle store cache miss. |
__ bind(&miss); |
__ IncrementCounter(counters->named_store_global_inline_miss(), 1); |
- Handle<Code> ic = masm()->isolate()->builtins()->StoreIC_Miss(); |
+ Handle<Code> ic = isolate()->builtins()->StoreIC_Miss(); |
__ Jump(ic, RelocInfo::CODE_TARGET); |
// Return the generated code. |
@@ -2500,7 +2497,7 @@ MaybeObject* KeyedStoreStubCompiler::CompileStoreField(JSObject* object, |
// ----------------------------------- |
Label miss; |
- Counters* counters = masm()->isolate()->counters(); |
+ Counters* counters = isolate()->counters(); |
__ IncrementCounter(counters->keyed_store_field(), 1); |
// Check that the name has not changed. |
@@ -2518,7 +2515,7 @@ MaybeObject* KeyedStoreStubCompiler::CompileStoreField(JSObject* object, |
// Handle store cache miss. |
__ bind(&miss); |
__ DecrementCounter(counters->keyed_store_field(), 1); |
- Handle<Code> ic = masm()->isolate()->builtins()->KeyedStoreIC_Miss(); |
+ Handle<Code> ic = isolate()->builtins()->KeyedStoreIC_Miss(); |
__ Jump(ic, RelocInfo::CODE_TARGET); |
// Return the generated code. |
@@ -2550,7 +2547,7 @@ MaybeObject* KeyedStoreStubCompiler::CompileStoreSpecialized( |
// Get the elements array and make sure it is a fast element array, not 'cow'. |
__ movq(rdi, FieldOperand(rdx, JSObject::kElementsOffset)); |
__ Cmp(FieldOperand(rdi, HeapObject::kMapOffset), |
- FACTORY->fixed_array_map()); |
+ factory()->fixed_array_map()); |
__ j(not_equal, &miss); |
// Check that the key is within bounds. |
@@ -2575,7 +2572,7 @@ MaybeObject* KeyedStoreStubCompiler::CompileStoreSpecialized( |
// Handle store cache miss. |
__ bind(&miss); |
- Handle<Code> ic = masm()->isolate()->builtins()->KeyedStoreIC_Miss(); |
+ Handle<Code> ic = isolate()->builtins()->KeyedStoreIC_Miss(); |
__ jmp(ic, RelocInfo::CODE_TARGET); |
// Return the generated code. |
@@ -2624,7 +2621,7 @@ MaybeObject* LoadStubCompiler::CompileLoadNonexistent(String* name, |
GenerateLoadMiss(masm(), Code::LOAD_IC); |
// Return the generated code. |
- return GetCode(NONEXISTENT, HEAP->empty_string()); |
+ return GetCode(NONEXISTENT, heap()->empty_string()); |
} |
@@ -2763,7 +2760,7 @@ MaybeObject* LoadStubCompiler::CompileLoadGlobal(JSObject* object, |
__ Check(not_equal, "DontDelete cells can't contain the hole"); |
} |
- Counters* counters = masm()->isolate()->counters(); |
+ Counters* counters = isolate()->counters(); |
__ IncrementCounter(counters->named_load_global_stub(), 1); |
__ movq(rax, rbx); |
__ ret(0); |
@@ -2788,7 +2785,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadField(String* name, |
// ----------------------------------- |
Label miss; |
- Counters* counters = masm()->isolate()->counters(); |
+ Counters* counters = isolate()->counters(); |
__ IncrementCounter(counters->keyed_load_field(), 1); |
// Check that the name has not changed. |
@@ -2818,7 +2815,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadCallback( |
// ----------------------------------- |
Label miss; |
- Counters* counters = masm()->isolate()->counters(); |
+ Counters* counters = isolate()->counters(); |
__ IncrementCounter(counters->keyed_load_callback(), 1); |
// Check that the name has not changed. |
@@ -2853,7 +2850,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadConstant(String* name, |
// ----------------------------------- |
Label miss; |
- Counters* counters = masm()->isolate()->counters(); |
+ Counters* counters = isolate()->counters(); |
__ IncrementCounter(counters->keyed_load_constant_function(), 1); |
// Check that the name has not changed. |
@@ -2881,7 +2878,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadInterceptor(JSObject* receiver, |
// ----------------------------------- |
Label miss; |
- Counters* counters = masm()->isolate()->counters(); |
+ Counters* counters = isolate()->counters(); |
__ IncrementCounter(counters->keyed_load_interceptor(), 1); |
// Check that the name has not changed. |
@@ -2917,7 +2914,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadArrayLength(String* name) { |
// ----------------------------------- |
Label miss; |
- Counters* counters = masm()->isolate()->counters(); |
+ Counters* counters = isolate()->counters(); |
__ IncrementCounter(counters->keyed_load_array_length(), 1); |
// Check that the name has not changed. |
@@ -2942,7 +2939,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadStringLength(String* name) { |
// ----------------------------------- |
Label miss; |
- Counters* counters = masm()->isolate()->counters(); |
+ Counters* counters = isolate()->counters(); |
__ IncrementCounter(counters->keyed_load_string_length(), 1); |
// Check that the name has not changed. |
@@ -2967,7 +2964,7 @@ MaybeObject* KeyedLoadStubCompiler::CompileLoadFunctionPrototype(String* name) { |
// ----------------------------------- |
Label miss; |
- Counters* counters = masm()->isolate()->counters(); |
+ Counters* counters = isolate()->counters(); |
__ IncrementCounter(counters->keyed_load_function_prototype(), 1); |
// Check that the name has not changed. |
@@ -3042,7 +3039,7 @@ MaybeObject* ConstructStubCompiler::CompileConstructStub(JSFunction* function) { |
Label generic_stub_call; |
// Use r8 for holding undefined which is used in several places below. |
- __ Move(r8, FACTORY->undefined_value()); |
+ __ Move(r8, factory()->undefined_value()); |
#ifdef ENABLE_DEBUGGER_SUPPORT |
// Check to see whether there are any break points in the function code. If |
@@ -3086,7 +3083,7 @@ MaybeObject* ConstructStubCompiler::CompileConstructStub(JSFunction* function) { |
// rbx: initial map |
// rdx: JSObject (untagged) |
__ movq(Operand(rdx, JSObject::kMapOffset), rbx); |
- __ Move(rbx, FACTORY->empty_fixed_array()); |
+ __ Move(rbx, factory()->empty_fixed_array()); |
__ movq(Operand(rdx, JSObject::kPropertiesOffset), rbx); |
__ movq(Operand(rdx, JSObject::kElementsOffset), rbx); |
@@ -3145,7 +3142,7 @@ MaybeObject* ConstructStubCompiler::CompileConstructStub(JSFunction* function) { |
__ pop(rcx); |
__ lea(rsp, Operand(rsp, rbx, times_pointer_size, 1 * kPointerSize)); |
__ push(rcx); |
- Counters* counters = masm()->isolate()->counters(); |
+ Counters* counters = isolate()->counters(); |
__ IncrementCounter(counters->constructed_objects(), 1); |
__ IncrementCounter(counters->constructed_objects_stub(), 1); |
__ ret(0); |
@@ -3154,7 +3151,7 @@ MaybeObject* ConstructStubCompiler::CompileConstructStub(JSFunction* function) { |
// construction. |
__ bind(&generic_stub_call); |
Code* code = |
- masm()->isolate()->builtins()->builtin(Builtins::kJSConstructStubGeneric); |
+ isolate()->builtins()->builtin(Builtins::kJSConstructStubGeneric); |
Handle<Code> generic_construct_stub(code); |
__ Jump(generic_construct_stub, RelocInfo::CODE_TARGET); |
@@ -3269,7 +3266,7 @@ MaybeObject* ExternalArrayStubCompiler::CompileKeyedLoadStub( |
// Slow case: Jump to runtime. |
__ bind(&slow); |
- Counters* counters = masm()->isolate()->counters(); |
+ Counters* counters = isolate()->counters(); |
__ IncrementCounter(counters->keyed_load_external_array_slow(), 1); |
// ----------- S t a t e ------------- |