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

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

Issue 1553523002: [telemetry] Counter Cleanups (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: fix merge conflicts Created 4 years, 10 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
« no previous file with comments | « src/ic/mips/handler-compiler-mips.cc ('k') | src/ic/mips64/handler-compiler-mips64.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 2012 the V8 project authors. All rights reserved. 1 // Copyright 2012 the V8 project authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #if V8_TARGET_ARCH_MIPS 5 #if V8_TARGET_ARCH_MIPS
6 6
7 #include "src/codegen.h" 7 #include "src/codegen.h"
8 #include "src/ic/ic.h" 8 #include "src/ic/ic.h"
9 #include "src/ic/ic-compiler.h" 9 #include "src/ic/ic-compiler.h"
10 #include "src/ic/stub-cache.h" 10 #include "src/ic/stub-cache.h"
(...skipping 292 matching lines...) Expand 10 before | Expand all | Expand 10 after
303 __ Push(receiver, name, slot, vector); 303 __ Push(receiver, name, slot, vector);
304 } 304 }
305 305
306 306
307 void LoadIC::GenerateMiss(MacroAssembler* masm) { 307 void LoadIC::GenerateMiss(MacroAssembler* masm) {
308 // The return address is in ra. 308 // The return address is in ra.
309 Isolate* isolate = masm->isolate(); 309 Isolate* isolate = masm->isolate();
310 310
311 DCHECK(!AreAliased(t0, t1, LoadWithVectorDescriptor::SlotRegister(), 311 DCHECK(!AreAliased(t0, t1, LoadWithVectorDescriptor::SlotRegister(),
312 LoadWithVectorDescriptor::VectorRegister())); 312 LoadWithVectorDescriptor::VectorRegister()));
313 __ IncrementCounter(isolate->counters()->load_miss(), 1, t0, t1); 313 __ IncrementCounter(isolate->counters()->ic_load_miss(), 1, t0, t1);
314 314
315 LoadIC_PushArgs(masm); 315 LoadIC_PushArgs(masm);
316 316
317 // Perform tail call to the entry. 317 // Perform tail call to the entry.
318 __ TailCallRuntime(Runtime::kLoadIC_Miss); 318 __ TailCallRuntime(Runtime::kLoadIC_Miss);
319 } 319 }
320 320
321 321
322 void LoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm, 322 void LoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm,
323 LanguageMode language_mode) { 323 LanguageMode language_mode) {
324 // The return address is in ra. 324 // The return address is in ra.
325 325
326 __ mov(LoadIC_TempRegister(), LoadDescriptor::ReceiverRegister()); 326 __ mov(LoadIC_TempRegister(), LoadDescriptor::ReceiverRegister());
327 __ Push(LoadIC_TempRegister(), LoadDescriptor::NameRegister()); 327 __ Push(LoadIC_TempRegister(), LoadDescriptor::NameRegister());
328 328
329 // Do tail-call to runtime routine. 329 // Do tail-call to runtime routine.
330 __ TailCallRuntime(is_strong(language_mode) ? Runtime::kGetPropertyStrong 330 __ TailCallRuntime(is_strong(language_mode) ? Runtime::kGetPropertyStrong
331 : Runtime::kGetProperty); 331 : Runtime::kGetProperty);
332 } 332 }
333 333
334 334
335 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) { 335 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
336 // The return address is in ra. 336 // The return address is in ra.
337 Isolate* isolate = masm->isolate(); 337 Isolate* isolate = masm->isolate();
338 338
339 DCHECK(!AreAliased(t0, t1, LoadWithVectorDescriptor::SlotRegister(), 339 DCHECK(!AreAliased(t0, t1, LoadWithVectorDescriptor::SlotRegister(),
340 LoadWithVectorDescriptor::VectorRegister())); 340 LoadWithVectorDescriptor::VectorRegister()));
341 __ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, t0, t1); 341 __ IncrementCounter(isolate->counters()->ic_keyed_load_miss(), 1, t0, t1);
342 342
343 LoadIC_PushArgs(masm); 343 LoadIC_PushArgs(masm);
344 344
345 // Perform tail call to the entry. 345 // Perform tail call to the entry.
346 __ TailCallRuntime(Runtime::kKeyedLoadIC_Miss); 346 __ TailCallRuntime(Runtime::kKeyedLoadIC_Miss);
347 } 347 }
348 348
349 349
350 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm, 350 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm,
351 LanguageMode language_mode) { 351 LanguageMode language_mode) {
(...skipping 27 matching lines...) Expand all
379 // where a numeric string is converted to a smi. 379 // where a numeric string is converted to a smi.
380 380
381 GenerateKeyedLoadReceiverCheck(masm, receiver, a0, a3, 381 GenerateKeyedLoadReceiverCheck(masm, receiver, a0, a3,
382 Map::kHasIndexedInterceptor, &slow); 382 Map::kHasIndexedInterceptor, &slow);
383 383
384 // Check the receiver's map to see if it has fast elements. 384 // Check the receiver's map to see if it has fast elements.
385 __ CheckFastElements(a0, a3, &check_number_dictionary); 385 __ CheckFastElements(a0, a3, &check_number_dictionary);
386 386
387 GenerateFastArrayLoad(masm, receiver, key, a0, a3, t0, v0, &slow, 387 GenerateFastArrayLoad(masm, receiver, key, a0, a3, t0, v0, &slow,
388 language_mode); 388 language_mode);
389 __ IncrementCounter(isolate->counters()->keyed_load_generic_smi(), 1, t0, a3); 389 __ IncrementCounter(isolate->counters()->ic_keyed_load_generic_smi(), 1, t0,
390 a3);
390 __ Ret(); 391 __ Ret();
391 392
392 __ bind(&check_number_dictionary); 393 __ bind(&check_number_dictionary);
393 __ lw(t0, FieldMemOperand(receiver, JSObject::kElementsOffset)); 394 __ lw(t0, FieldMemOperand(receiver, JSObject::kElementsOffset));
394 __ lw(a3, FieldMemOperand(t0, JSObject::kMapOffset)); 395 __ lw(a3, FieldMemOperand(t0, JSObject::kMapOffset));
395 396
396 // Check whether the elements is a number dictionary. 397 // Check whether the elements is a number dictionary.
397 // a3: elements map 398 // a3: elements map
398 // t0: elements 399 // t0: elements
399 __ LoadRoot(at, Heap::kHashTableMapRootIndex); 400 __ LoadRoot(at, Heap::kHashTableMapRootIndex);
400 __ Branch(&slow, ne, a3, Operand(at)); 401 __ Branch(&slow, ne, a3, Operand(at));
401 __ sra(a0, key, kSmiTagSize); 402 __ sra(a0, key, kSmiTagSize);
402 __ LoadFromNumberDictionary(&slow, t0, key, v0, a0, a3, t1); 403 __ LoadFromNumberDictionary(&slow, t0, key, v0, a0, a3, t1);
403 __ Ret(); 404 __ Ret();
404 405
405 // Slow case, key and receiver still in a2 and a1. 406 // Slow case, key and receiver still in a2 and a1.
406 __ bind(&slow); 407 __ bind(&slow);
407 __ IncrementCounter(isolate->counters()->keyed_load_generic_slow(), 1, t0, 408 __ IncrementCounter(isolate->counters()->ic_keyed_load_generic_slow(), 1, t0,
408 a3); 409 a3);
409 GenerateRuntimeGetProperty(masm, language_mode); 410 GenerateRuntimeGetProperty(masm, language_mode);
410 411
411 __ bind(&check_name); 412 __ bind(&check_name);
412 GenerateKeyNameCheck(masm, key, a0, a3, &index_name, &slow); 413 GenerateKeyNameCheck(masm, key, a0, a3, &index_name, &slow);
413 414
414 GenerateKeyedLoadReceiverCheck(masm, receiver, a0, a3, 415 GenerateKeyedLoadReceiverCheck(masm, receiver, a0, a3,
415 Map::kHasNamedInterceptor, &slow); 416 Map::kHasNamedInterceptor, &slow);
416 417
417 418
(...skipping 25 matching lines...) Expand all
443 444
444 // Do a quick inline probe of the receiver's dictionary, if it 445 // Do a quick inline probe of the receiver's dictionary, if it
445 // exists. 446 // exists.
446 __ bind(&probe_dictionary); 447 __ bind(&probe_dictionary);
447 // a3: elements 448 // a3: elements
448 __ lw(a0, FieldMemOperand(receiver, HeapObject::kMapOffset)); 449 __ lw(a0, FieldMemOperand(receiver, HeapObject::kMapOffset));
449 __ lbu(a0, FieldMemOperand(a0, Map::kInstanceTypeOffset)); 450 __ lbu(a0, FieldMemOperand(a0, Map::kInstanceTypeOffset));
450 GenerateGlobalInstanceTypeCheck(masm, a0, &slow); 451 GenerateGlobalInstanceTypeCheck(masm, a0, &slow);
451 // Load the property to v0. 452 // Load the property to v0.
452 GenerateDictionaryLoad(masm, &slow, a3, key, v0, t1, t0); 453 GenerateDictionaryLoad(masm, &slow, a3, key, v0, t1, t0);
453 __ IncrementCounter(isolate->counters()->keyed_load_generic_symbol(), 1, t0, 454 __ IncrementCounter(isolate->counters()->ic_keyed_load_generic_symbol(), 1,
454 a3); 455 t0, a3);
455 __ Ret(); 456 __ Ret();
456 457
457 __ bind(&index_name); 458 __ bind(&index_name);
458 __ IndexFromHash(a3, key); 459 __ IndexFromHash(a3, key);
459 // Now jump to the place where smi keys are handled. 460 // Now jump to the place where smi keys are handled.
460 __ Branch(&index_smi); 461 __ Branch(&index_smi);
461 } 462 }
462 463
463 464
464 static void KeyedStoreGenerateMegamorphicHelper( 465 static void KeyedStoreGenerateMegamorphicHelper(
(...skipping 314 matching lines...) Expand 10 before | Expand all | Expand 10 after
779 DCHECK(receiver.is(a1)); 780 DCHECK(receiver.is(a1));
780 DCHECK(name.is(a2)); 781 DCHECK(name.is(a2));
781 DCHECK(value.is(a0)); 782 DCHECK(value.is(a0));
782 DCHECK(VectorStoreICDescriptor::VectorRegister().is(a3)); 783 DCHECK(VectorStoreICDescriptor::VectorRegister().is(a3));
783 DCHECK(VectorStoreICDescriptor::SlotRegister().is(t0)); 784 DCHECK(VectorStoreICDescriptor::SlotRegister().is(t0));
784 785
785 __ lw(dictionary, FieldMemOperand(receiver, JSObject::kPropertiesOffset)); 786 __ lw(dictionary, FieldMemOperand(receiver, JSObject::kPropertiesOffset));
786 787
787 GenerateDictionaryStore(masm, &miss, dictionary, name, value, t2, t5); 788 GenerateDictionaryStore(masm, &miss, dictionary, name, value, t2, t5);
788 Counters* counters = masm->isolate()->counters(); 789 Counters* counters = masm->isolate()->counters();
789 __ IncrementCounter(counters->store_normal_hit(), 1, t2, t5); 790 __ IncrementCounter(counters->ic_store_normal_hit(), 1, t2, t5);
790 __ Ret(); 791 __ Ret();
791 792
792 __ bind(&miss); 793 __ bind(&miss);
793 __ IncrementCounter(counters->store_normal_miss(), 1, t2, t5); 794 __ IncrementCounter(counters->ic_store_normal_miss(), 1, t2, t5);
794 GenerateMiss(masm); 795 GenerateMiss(masm);
795 } 796 }
796 797
797 798
798 #undef __ 799 #undef __
799 800
800 801
801 Condition CompareIC::ComputeCondition(Token::Value op) { 802 Condition CompareIC::ComputeCondition(Token::Value op) {
802 switch (op) { 803 switch (op) {
803 case Token::EQ_STRICT: 804 case Token::EQ_STRICT:
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
917 break; 918 break;
918 default: 919 default:
919 UNIMPLEMENTED(); 920 UNIMPLEMENTED();
920 } 921 }
921 patcher.ChangeBranchCondition(branch_instr, opcode); 922 patcher.ChangeBranchCondition(branch_instr, opcode);
922 } 923 }
923 } // namespace internal 924 } // namespace internal
924 } // namespace v8 925 } // namespace v8
925 926
926 #endif // V8_TARGET_ARCH_MIPS 927 #endif // V8_TARGET_ARCH_MIPS
OLDNEW
« no previous file with comments | « src/ic/mips/handler-compiler-mips.cc ('k') | src/ic/mips64/handler-compiler-mips64.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698