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

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

Issue 1191333003: MIPS64: Fix 'Revert of Revert of [strong] Implement strong mode restrictions on property access'. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Created 5 years, 6 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 | « no previous file | no next file » | 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 5
6 #include "src/v8.h" 6 #include "src/v8.h"
7 7
8 #if V8_TARGET_ARCH_MIPS64 8 #if V8_TARGET_ARCH_MIPS64
9 9
10 #include "src/codegen.h" 10 #include "src/codegen.h"
(...skipping 311 matching lines...) Expand 10 before | Expand all | Expand 10 after
322 __ TailCallExternalReference(ref, arg_count, 1); 322 __ TailCallExternalReference(ref, arg_count, 1);
323 } 323 }
324 324
325 325
326 void LoadIC::GenerateSlow(MacroAssembler* masm) { 326 void LoadIC::GenerateSlow(MacroAssembler* masm) {
327 // The return address is in ra. 327 // The return address is in ra.
328 328
329 __ mov(LoadIC_TempRegister(), LoadDescriptor::ReceiverRegister()); 329 __ mov(LoadIC_TempRegister(), LoadDescriptor::ReceiverRegister());
330 __ Push(LoadIC_TempRegister(), LoadDescriptor::NameRegister()); 330 __ Push(LoadIC_TempRegister(), LoadDescriptor::NameRegister());
331 331
332 __ TailCallRuntime(Runtime::kGetProperty, 2, 1); 332 ExternalReference ref =
333 ExternalReference(IC_Utility(kLoadIC_Slow), masm->isolate());
334 int arg_count = 2;
335 __ TailCallExternalReference(ref, arg_count, 1);
333 } 336 }
334 337
335 338
336 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) { 339 void KeyedLoadIC::GenerateMiss(MacroAssembler* masm) {
337 // The return address is in ra. 340 // The return address is in ra.
338 Isolate* isolate = masm->isolate(); 341 Isolate* isolate = masm->isolate();
339 342
340 DCHECK(!AreAliased(a4, a5, LoadWithVectorDescriptor::SlotRegister(), 343 DCHECK(!AreAliased(a4, a5, LoadWithVectorDescriptor::SlotRegister(),
341 LoadWithVectorDescriptor::VectorRegister())); 344 LoadWithVectorDescriptor::VectorRegister()));
342 __ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, a4, a5); 345 __ IncrementCounter(isolate->counters()->keyed_load_miss(), 1, a4, a5);
343 346
344 LoadIC_PushArgs(masm); 347 LoadIC_PushArgs(masm);
345 348
346 // Perform tail call to the entry. 349 // Perform tail call to the entry.
347 ExternalReference ref = 350 ExternalReference ref =
348 ExternalReference(IC_Utility(kKeyedLoadIC_Miss), isolate); 351 ExternalReference(IC_Utility(kKeyedLoadIC_Miss), isolate);
349 352
350 int arg_count = 4; 353 int arg_count = 4;
351 __ TailCallExternalReference(ref, arg_count, 1); 354 __ TailCallExternalReference(ref, arg_count, 1);
352 } 355 }
353 356
354 357
355 void KeyedLoadIC::GenerateSlow(MacroAssembler* masm) { 358 void KeyedLoadIC::GenerateSlow(MacroAssembler* masm) {
356 // The return address is in ra. 359 // The return address is in ra.
357 360
358 __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister()); 361 __ Push(LoadDescriptor::ReceiverRegister(), LoadDescriptor::NameRegister());
359 362
360 __ TailCallRuntime(Runtime::kKeyedGetProperty, 2, 1); 363 ExternalReference ref =
364 ExternalReference(IC_Utility(kKeyedLoadIC_Slow), masm->isolate());
365 int arg_count = 2;
366 __ TailCallExternalReference(ref, arg_count, 1);
361 } 367 }
362 368
363 369
364 void KeyedLoadIC::GenerateMegamorphic(MacroAssembler* masm, 370 void KeyedLoadIC::GenerateMegamorphic(MacroAssembler* masm,
365 LanguageMode language_mode) { 371 LanguageMode language_mode) {
366 // The return address is in ra. 372 // The return address is in ra.
367 Label slow, check_name, index_smi, index_name, property_array_property; 373 Label slow, check_name, index_smi, index_name, property_array_property;
368 Label probe_dictionary, check_number_dictionary; 374 Label probe_dictionary, check_number_dictionary;
369 375
370 Register key = LoadDescriptor::NameRegister(); 376 Register key = LoadDescriptor::NameRegister();
(...skipping 503 matching lines...) Expand 10 before | Expand all | Expand 10 after
874 patcher.ChangeBranchCondition(ne); 880 patcher.ChangeBranchCondition(ne);
875 } else { 881 } else {
876 DCHECK(Assembler::IsBne(branch_instr)); 882 DCHECK(Assembler::IsBne(branch_instr));
877 patcher.ChangeBranchCondition(eq); 883 patcher.ChangeBranchCondition(eq);
878 } 884 }
879 } 885 }
880 } // namespace internal 886 } // namespace internal
881 } // namespace v8 887 } // namespace v8
882 888
883 #endif // V8_TARGET_ARCH_MIPS64 889 #endif // V8_TARGET_ARCH_MIPS64
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698