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

Side by Side Diff: src/ic/mips64/ic-mips64.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/mips64/handler-compiler-mips64.cc ('k') | src/ic/ppc/handler-compiler-ppc.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_MIPS64 5 #if V8_TARGET_ARCH_MIPS64
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 290 matching lines...) Expand 10 before | Expand all | Expand 10 after
301 __ Push(receiver, name, slot, vector); 301 __ Push(receiver, name, slot, vector);
302 } 302 }
303 303
304 304
305 void LoadIC::GenerateMiss(MacroAssembler* masm) { 305 void LoadIC::GenerateMiss(MacroAssembler* masm) {
306 // The return address is on the stack. 306 // The return address is on the stack.
307 Isolate* isolate = masm->isolate(); 307 Isolate* isolate = masm->isolate();
308 308
309 DCHECK(!AreAliased(a4, a5, LoadWithVectorDescriptor::SlotRegister(), 309 DCHECK(!AreAliased(a4, a5, LoadWithVectorDescriptor::SlotRegister(),
310 LoadWithVectorDescriptor::VectorRegister())); 310 LoadWithVectorDescriptor::VectorRegister()));
311 __ IncrementCounter(isolate->counters()->load_miss(), 1, a4, a5); 311 __ IncrementCounter(isolate->counters()->ic_load_miss(), 1, a4, a5);
312 312
313 LoadIC_PushArgs(masm); 313 LoadIC_PushArgs(masm);
314 314
315 // Perform tail call to the entry. 315 // Perform tail call to the entry.
316 __ TailCallRuntime(Runtime::kLoadIC_Miss); 316 __ TailCallRuntime(Runtime::kLoadIC_Miss);
317 } 317 }
318 318
319 319
320 void LoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm, 320 void LoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm,
321 LanguageMode language_mode) { 321 LanguageMode language_mode) {
322 // The return address is in ra. 322 // The return address is in ra.
323 323
324 __ mov(LoadIC_TempRegister(), LoadDescriptor::ReceiverRegister()); 324 __ mov(LoadIC_TempRegister(), LoadDescriptor::ReceiverRegister());
325 __ Push(LoadIC_TempRegister(), LoadDescriptor::NameRegister()); 325 __ Push(LoadIC_TempRegister(), LoadDescriptor::NameRegister());
326 326
327 // Do tail-call to runtime routine. 327 // Do tail-call to runtime routine.
328 __ TailCallRuntime(is_strong(language_mode) ? Runtime::kGetPropertyStrong 328 __ TailCallRuntime(is_strong(language_mode) ? Runtime::kGetPropertyStrong
329 : Runtime::kGetProperty); 329 : Runtime::kGetProperty);
330 } 330 }
331 331
332 332
333 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) { 333 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
334 // The return address is in ra. 334 // The return address is in ra.
335 Isolate* isolate = masm->isolate(); 335 Isolate* isolate = masm->isolate();
336 336
337 DCHECK(!AreAliased(a4, a5, LoadWithVectorDescriptor::SlotRegister(), 337 DCHECK(!AreAliased(a4, a5, LoadWithVectorDescriptor::SlotRegister(),
338 LoadWithVectorDescriptor::VectorRegister())); 338 LoadWithVectorDescriptor::VectorRegister()));
339 __ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, a4, a5); 339 __ IncrementCounter(isolate->counters()->ic_keyed_load_miss(), 1, a4, a5);
340 340
341 LoadIC_PushArgs(masm); 341 LoadIC_PushArgs(masm);
342 342
343 // Perform tail call to the entry. 343 // Perform tail call to the entry.
344 __ TailCallRuntime(Runtime::kKeyedLoadIC_Miss); 344 __ TailCallRuntime(Runtime::kKeyedLoadIC_Miss);
345 } 345 }
346 346
347 347
348 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm, 348 void KeyedLoadIC::GenerateRuntimeGetProperty(MacroAssembler* masm,
349 LanguageMode language_mode) { 349 LanguageMode language_mode) {
(...skipping 27 matching lines...) Expand all
377 // where a numeric string is converted to a smi. 377 // where a numeric string is converted to a smi.
378 378
379 GenerateKeyedLoadReceiverCheck(masm, receiver, a0, a3, 379 GenerateKeyedLoadReceiverCheck(masm, receiver, a0, a3,
380 Map::kHasIndexedInterceptor, &slow); 380 Map::kHasIndexedInterceptor, &slow);
381 381
382 // Check the receiver's map to see if it has fast elements. 382 // Check the receiver's map to see if it has fast elements.
383 __ CheckFastElements(a0, a3, &check_number_dictionary); 383 __ CheckFastElements(a0, a3, &check_number_dictionary);
384 384
385 GenerateFastArrayLoad(masm, receiver, key, a0, a3, a4, v0, &slow, 385 GenerateFastArrayLoad(masm, receiver, key, a0, a3, a4, v0, &slow,
386 language_mode); 386 language_mode);
387 __ IncrementCounter(isolate->counters()->keyed_load_generic_smi(), 1, a4, a3); 387 __ IncrementCounter(isolate->counters()->ic_keyed_load_generic_smi(), 1, a4,
388 a3);
388 __ Ret(); 389 __ Ret();
389 390
390 __ bind(&check_number_dictionary); 391 __ bind(&check_number_dictionary);
391 __ ld(a4, FieldMemOperand(receiver, JSObject::kElementsOffset)); 392 __ ld(a4, FieldMemOperand(receiver, JSObject::kElementsOffset));
392 __ ld(a3, FieldMemOperand(a4, JSObject::kMapOffset)); 393 __ ld(a3, FieldMemOperand(a4, JSObject::kMapOffset));
393 394
394 // Check whether the elements is a number dictionary. 395 // Check whether the elements is a number dictionary.
395 // a3: elements map 396 // a3: elements map
396 // a4: elements 397 // a4: elements
397 __ LoadRoot(at, Heap::kHashTableMapRootIndex); 398 __ LoadRoot(at, Heap::kHashTableMapRootIndex);
398 __ Branch(&slow, ne, a3, Operand(at)); 399 __ Branch(&slow, ne, a3, Operand(at));
399 __ dsra32(a0, key, 0); 400 __ dsra32(a0, key, 0);
400 __ LoadFromNumberDictionary(&slow, a4, key, v0, a0, a3, a5); 401 __ LoadFromNumberDictionary(&slow, a4, key, v0, a0, a3, a5);
401 __ Ret(); 402 __ Ret();
402 403
403 // Slow case, key and receiver still in a2 and a1. 404 // Slow case, key and receiver still in a2 and a1.
404 __ bind(&slow); 405 __ bind(&slow);
405 __ IncrementCounter(isolate->counters()->keyed_load_generic_slow(), 1, a4, 406 __ IncrementCounter(isolate->counters()->ic_keyed_load_generic_slow(), 1, a4,
406 a3); 407 a3);
407 GenerateRuntimeGetProperty(masm, language_mode); 408 GenerateRuntimeGetProperty(masm, language_mode);
408 409
409 __ bind(&check_name); 410 __ bind(&check_name);
410 GenerateKeyNameCheck(masm, key, a0, a3, &index_name, &slow); 411 GenerateKeyNameCheck(masm, key, a0, a3, &index_name, &slow);
411 412
412 GenerateKeyedLoadReceiverCheck(masm, receiver, a0, a3, 413 GenerateKeyedLoadReceiverCheck(masm, receiver, a0, a3,
413 Map::kHasNamedInterceptor, &slow); 414 Map::kHasNamedInterceptor, &slow);
414 415
415 416
(...skipping 25 matching lines...) Expand all
441 442
442 // Do a quick inline probe of the receiver's dictionary, if it 443 // Do a quick inline probe of the receiver's dictionary, if it
443 // exists. 444 // exists.
444 __ bind(&probe_dictionary); 445 __ bind(&probe_dictionary);
445 // a3: elements 446 // a3: elements
446 __ ld(a0, FieldMemOperand(receiver, HeapObject::kMapOffset)); 447 __ ld(a0, FieldMemOperand(receiver, HeapObject::kMapOffset));
447 __ lbu(a0, FieldMemOperand(a0, Map::kInstanceTypeOffset)); 448 __ lbu(a0, FieldMemOperand(a0, Map::kInstanceTypeOffset));
448 GenerateGlobalInstanceTypeCheck(masm, a0, &slow); 449 GenerateGlobalInstanceTypeCheck(masm, a0, &slow);
449 // Load the property to v0. 450 // Load the property to v0.
450 GenerateDictionaryLoad(masm, &slow, a3, key, v0, a5, a4); 451 GenerateDictionaryLoad(masm, &slow, a3, key, v0, a5, a4);
451 __ IncrementCounter(isolate->counters()->keyed_load_generic_symbol(), 1, a4, 452 __ IncrementCounter(isolate->counters()->ic_keyed_load_generic_symbol(), 1,
452 a3); 453 a4, a3);
453 __ Ret(); 454 __ Ret();
454 455
455 __ bind(&index_name); 456 __ bind(&index_name);
456 __ IndexFromHash(a3, key); 457 __ IndexFromHash(a3, key);
457 // Now jump to the place where smi keys are handled. 458 // Now jump to the place where smi keys are handled.
458 __ Branch(&index_smi); 459 __ Branch(&index_smi);
459 } 460 }
460 461
461 462
462 static void KeyedStoreGenerateMegamorphicHelper( 463 static void KeyedStoreGenerateMegamorphicHelper(
(...skipping 317 matching lines...) Expand 10 before | Expand all | Expand 10 after
780 Register value = StoreDescriptor::ValueRegister(); 781 Register value = StoreDescriptor::ValueRegister();
781 Register dictionary = a5; 782 Register dictionary = a5;
782 DCHECK(!AreAliased( 783 DCHECK(!AreAliased(
783 value, receiver, name, VectorStoreICDescriptor::VectorRegister(), 784 value, receiver, name, VectorStoreICDescriptor::VectorRegister(),
784 VectorStoreICDescriptor::SlotRegister(), dictionary, a6, a7)); 785 VectorStoreICDescriptor::SlotRegister(), dictionary, a6, a7));
785 786
786 __ ld(dictionary, FieldMemOperand(receiver, JSObject::kPropertiesOffset)); 787 __ ld(dictionary, FieldMemOperand(receiver, JSObject::kPropertiesOffset));
787 788
788 GenerateDictionaryStore(masm, &miss, dictionary, name, value, a6, a7); 789 GenerateDictionaryStore(masm, &miss, dictionary, name, value, a6, a7);
789 Counters* counters = masm->isolate()->counters(); 790 Counters* counters = masm->isolate()->counters();
790 __ IncrementCounter(counters->store_normal_hit(), 1, a6, a7); 791 __ IncrementCounter(counters->ic_store_normal_hit(), 1, a6, a7);
791 __ Ret(); 792 __ Ret();
792 793
793 __ bind(&miss); 794 __ bind(&miss);
794 __ IncrementCounter(counters->store_normal_miss(), 1, a6, a7); 795 __ IncrementCounter(counters->ic_store_normal_miss(), 1, a6, a7);
795 GenerateMiss(masm); 796 GenerateMiss(masm);
796 } 797 }
797 798
798 799
799 #undef __ 800 #undef __
800 801
801 802
802 Condition CompareIC::ComputeCondition(Token::Value op) { 803 Condition CompareIC::ComputeCondition(Token::Value op) {
803 switch (op) { 804 switch (op) {
804 case Token::EQ_STRICT: 805 case Token::EQ_STRICT:
(...skipping 113 matching lines...) Expand 10 before | Expand all | Expand 10 after
918 break; 919 break;
919 default: 920 default:
920 UNIMPLEMENTED(); 921 UNIMPLEMENTED();
921 } 922 }
922 patcher.ChangeBranchCondition(branch_instr, opcode); 923 patcher.ChangeBranchCondition(branch_instr, opcode);
923 } 924 }
924 } // namespace internal 925 } // namespace internal
925 } // namespace v8 926 } // namespace v8
926 927
927 #endif // V8_TARGET_ARCH_MIPS64 928 #endif // V8_TARGET_ARCH_MIPS64
OLDNEW
« no previous file with comments | « src/ic/mips64/handler-compiler-mips64.cc ('k') | src/ic/ppc/handler-compiler-ppc.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698