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

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

Issue 1370303004: Distinction between FeedbackVectorICSlot and FeedbackVectorSlot eliminated. (Closed) Base URL: https://chromium.googlesource.com/v8/v8.git@master
Patch Set: Fixed release builds Created 5 years, 2 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/ic.h ('k') | src/ic/mips/ic-mips.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 #include "src/ic/ic.h" 5 #include "src/ic/ic.h"
6 6
7 #include "src/accessors.h" 7 #include "src/accessors.h"
8 #include "src/api.h" 8 #include "src/api.h"
9 #include "src/arguments.h" 9 #include "src/arguments.h"
10 #include "src/base/bits.h" 10 #include "src/base/bits.h"
(...skipping 2331 matching lines...) Expand 10 before | Expand all | Expand 10 after
2342 // 2342 //
2343 2343
2344 // Used from ic-<arch>.cc. 2344 // Used from ic-<arch>.cc.
2345 RUNTIME_FUNCTION(Runtime_CallIC_Miss) { 2345 RUNTIME_FUNCTION(Runtime_CallIC_Miss) {
2346 TimerEventScope<TimerEventIcMiss> timer(isolate); 2346 TimerEventScope<TimerEventIcMiss> timer(isolate);
2347 HandleScope scope(isolate); 2347 HandleScope scope(isolate);
2348 DCHECK(args.length() == 3); 2348 DCHECK(args.length() == 3);
2349 Handle<Object> function = args.at<Object>(0); 2349 Handle<Object> function = args.at<Object>(0);
2350 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(1); 2350 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(1);
2351 Handle<Smi> slot = args.at<Smi>(2); 2351 Handle<Smi> slot = args.at<Smi>(2);
2352 FeedbackVectorICSlot vector_slot = vector->ToICSlot(slot->value()); 2352 FeedbackVectorSlot vector_slot = vector->ToSlot(slot->value());
2353 CallICNexus nexus(vector, vector_slot); 2353 CallICNexus nexus(vector, vector_slot);
2354 CallIC ic(isolate, &nexus); 2354 CallIC ic(isolate, &nexus);
2355 ic.HandleMiss(function); 2355 ic.HandleMiss(function);
2356 return *function; 2356 return *function;
2357 } 2357 }
2358 2358
2359 2359
2360 // Used from ic-<arch>.cc. 2360 // Used from ic-<arch>.cc.
2361 RUNTIME_FUNCTION(Runtime_LoadIC_Miss) { 2361 RUNTIME_FUNCTION(Runtime_LoadIC_Miss) {
2362 TimerEventScope<TimerEventIcMiss> timer(isolate); 2362 TimerEventScope<TimerEventIcMiss> timer(isolate);
2363 HandleScope scope(isolate); 2363 HandleScope scope(isolate);
2364 Handle<Object> receiver = args.at<Object>(0); 2364 Handle<Object> receiver = args.at<Object>(0);
2365 Handle<Name> key = args.at<Name>(1); 2365 Handle<Name> key = args.at<Name>(1);
2366 Handle<Object> result; 2366 Handle<Object> result;
2367 2367
2368 DCHECK(args.length() == 4); 2368 DCHECK(args.length() == 4);
2369 Handle<Smi> slot = args.at<Smi>(2); 2369 Handle<Smi> slot = args.at<Smi>(2);
2370 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(3); 2370 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(3);
2371 FeedbackVectorICSlot vector_slot = vector->ToICSlot(slot->value()); 2371 FeedbackVectorSlot vector_slot = vector->ToSlot(slot->value());
2372 // A monomorphic or polymorphic KeyedLoadIC with a string key can call the 2372 // A monomorphic or polymorphic KeyedLoadIC with a string key can call the
2373 // LoadIC miss handler if the handler misses. Since the vector Nexus is 2373 // LoadIC miss handler if the handler misses. Since the vector Nexus is
2374 // set up outside the IC, handle that here. 2374 // set up outside the IC, handle that here.
2375 if (vector->GetKind(vector_slot) == FeedbackVectorSlotKind::LOAD_IC) { 2375 if (vector->GetKind(vector_slot) == FeedbackVectorSlotKind::LOAD_IC) {
2376 LoadICNexus nexus(vector, vector_slot); 2376 LoadICNexus nexus(vector, vector_slot);
2377 LoadIC ic(IC::NO_EXTRA_FRAME, isolate, &nexus); 2377 LoadIC ic(IC::NO_EXTRA_FRAME, isolate, &nexus);
2378 ic.UpdateState(receiver, key); 2378 ic.UpdateState(receiver, key);
2379 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key)); 2379 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key));
2380 } else { 2380 } else {
2381 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_LOAD_IC, 2381 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_LOAD_IC,
(...skipping 11 matching lines...) Expand all
2393 RUNTIME_FUNCTION(Runtime_KeyedLoadIC_Miss) { 2393 RUNTIME_FUNCTION(Runtime_KeyedLoadIC_Miss) {
2394 TimerEventScope<TimerEventIcMiss> timer(isolate); 2394 TimerEventScope<TimerEventIcMiss> timer(isolate);
2395 HandleScope scope(isolate); 2395 HandleScope scope(isolate);
2396 Handle<Object> receiver = args.at<Object>(0); 2396 Handle<Object> receiver = args.at<Object>(0);
2397 Handle<Object> key = args.at<Object>(1); 2397 Handle<Object> key = args.at<Object>(1);
2398 Handle<Object> result; 2398 Handle<Object> result;
2399 2399
2400 DCHECK(args.length() == 4); 2400 DCHECK(args.length() == 4);
2401 Handle<Smi> slot = args.at<Smi>(2); 2401 Handle<Smi> slot = args.at<Smi>(2);
2402 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(3); 2402 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(3);
2403 FeedbackVectorICSlot vector_slot = vector->ToICSlot(slot->value()); 2403 FeedbackVectorSlot vector_slot = vector->ToSlot(slot->value());
2404 KeyedLoadICNexus nexus(vector, vector_slot); 2404 KeyedLoadICNexus nexus(vector, vector_slot);
2405 KeyedLoadIC ic(IC::NO_EXTRA_FRAME, isolate, &nexus); 2405 KeyedLoadIC ic(IC::NO_EXTRA_FRAME, isolate, &nexus);
2406 ic.UpdateState(receiver, key); 2406 ic.UpdateState(receiver, key);
2407 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key)); 2407 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key));
2408 return *result; 2408 return *result;
2409 } 2409 }
2410 2410
2411 2411
2412 RUNTIME_FUNCTION(Runtime_KeyedLoadIC_MissFromStubFailure) { 2412 RUNTIME_FUNCTION(Runtime_KeyedLoadIC_MissFromStubFailure) {
2413 TimerEventScope<TimerEventIcMiss> timer(isolate); 2413 TimerEventScope<TimerEventIcMiss> timer(isolate);
2414 HandleScope scope(isolate); 2414 HandleScope scope(isolate);
2415 Handle<Object> receiver = args.at<Object>(0); 2415 Handle<Object> receiver = args.at<Object>(0);
2416 Handle<Object> key = args.at<Object>(1); 2416 Handle<Object> key = args.at<Object>(1);
2417 Handle<Object> result; 2417 Handle<Object> result;
2418 2418
2419 DCHECK(args.length() == 4); 2419 DCHECK(args.length() == 4);
2420 Handle<Smi> slot = args.at<Smi>(2); 2420 Handle<Smi> slot = args.at<Smi>(2);
2421 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(3); 2421 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(3);
2422 FeedbackVectorICSlot vector_slot = vector->ToICSlot(slot->value()); 2422 FeedbackVectorSlot vector_slot = vector->ToSlot(slot->value());
2423 KeyedLoadICNexus nexus(vector, vector_slot); 2423 KeyedLoadICNexus nexus(vector, vector_slot);
2424 KeyedLoadIC ic(IC::EXTRA_CALL_FRAME, isolate, &nexus); 2424 KeyedLoadIC ic(IC::EXTRA_CALL_FRAME, isolate, &nexus);
2425 ic.UpdateState(receiver, key); 2425 ic.UpdateState(receiver, key);
2426 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key)); 2426 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key));
2427 2427
2428 return *result; 2428 return *result;
2429 } 2429 }
2430 2430
2431 2431
2432 // Used from ic-<arch>.cc. 2432 // Used from ic-<arch>.cc.
2433 RUNTIME_FUNCTION(Runtime_StoreIC_Miss) { 2433 RUNTIME_FUNCTION(Runtime_StoreIC_Miss) {
2434 TimerEventScope<TimerEventIcMiss> timer(isolate); 2434 TimerEventScope<TimerEventIcMiss> timer(isolate);
2435 HandleScope scope(isolate); 2435 HandleScope scope(isolate);
2436 Handle<Object> receiver = args.at<Object>(0); 2436 Handle<Object> receiver = args.at<Object>(0);
2437 Handle<Name> key = args.at<Name>(1); 2437 Handle<Name> key = args.at<Name>(1);
2438 Handle<Object> value = args.at<Object>(2); 2438 Handle<Object> value = args.at<Object>(2);
2439 Handle<Object> result; 2439 Handle<Object> result;
2440 2440
2441 if (FLAG_vector_stores) { 2441 if (FLAG_vector_stores) {
2442 DCHECK(args.length() == 5 || args.length() == 6); 2442 DCHECK(args.length() == 5 || args.length() == 6);
2443 Handle<Smi> slot = args.at<Smi>(3); 2443 Handle<Smi> slot = args.at<Smi>(3);
2444 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(4); 2444 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(4);
2445 FeedbackVectorICSlot vector_slot = vector->ToICSlot(slot->value()); 2445 FeedbackVectorSlot vector_slot = vector->ToSlot(slot->value());
2446 if (vector->GetKind(vector_slot) == FeedbackVectorSlotKind::STORE_IC) { 2446 if (vector->GetKind(vector_slot) == FeedbackVectorSlotKind::STORE_IC) {
2447 StoreICNexus nexus(vector, vector_slot); 2447 StoreICNexus nexus(vector, vector_slot);
2448 StoreIC ic(IC::NO_EXTRA_FRAME, isolate, &nexus); 2448 StoreIC ic(IC::NO_EXTRA_FRAME, isolate, &nexus);
2449 ic.UpdateState(receiver, key); 2449 ic.UpdateState(receiver, key);
2450 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, 2450 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
2451 ic.Store(receiver, key, value)); 2451 ic.Store(receiver, key, value));
2452 } else { 2452 } else {
2453 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_STORE_IC, 2453 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_STORE_IC,
2454 vector->GetKind(vector_slot)); 2454 vector->GetKind(vector_slot));
2455 KeyedStoreICNexus nexus(vector, vector_slot); 2455 KeyedStoreICNexus nexus(vector, vector_slot);
(...skipping 18 matching lines...) Expand all
2474 HandleScope scope(isolate); 2474 HandleScope scope(isolate);
2475 Handle<Object> receiver = args.at<Object>(0); 2475 Handle<Object> receiver = args.at<Object>(0);
2476 Handle<Name> key = args.at<Name>(1); 2476 Handle<Name> key = args.at<Name>(1);
2477 Handle<Object> value = args.at<Object>(2); 2477 Handle<Object> value = args.at<Object>(2);
2478 Handle<Object> result; 2478 Handle<Object> result;
2479 2479
2480 if (FLAG_vector_stores) { 2480 if (FLAG_vector_stores) {
2481 DCHECK(args.length() == 5 || args.length() == 6); 2481 DCHECK(args.length() == 5 || args.length() == 6);
2482 Handle<Smi> slot = args.at<Smi>(3); 2482 Handle<Smi> slot = args.at<Smi>(3);
2483 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(4); 2483 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(4);
2484 FeedbackVectorICSlot vector_slot = vector->ToICSlot(slot->value()); 2484 FeedbackVectorSlot vector_slot = vector->ToSlot(slot->value());
2485 if (vector->GetKind(vector_slot) == FeedbackVectorSlotKind::STORE_IC) { 2485 if (vector->GetKind(vector_slot) == FeedbackVectorSlotKind::STORE_IC) {
2486 StoreICNexus nexus(vector, vector_slot); 2486 StoreICNexus nexus(vector, vector_slot);
2487 StoreIC ic(IC::EXTRA_CALL_FRAME, isolate, &nexus); 2487 StoreIC ic(IC::EXTRA_CALL_FRAME, isolate, &nexus);
2488 ic.UpdateState(receiver, key); 2488 ic.UpdateState(receiver, key);
2489 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, 2489 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
2490 ic.Store(receiver, key, value)); 2490 ic.Store(receiver, key, value));
2491 } else { 2491 } else {
2492 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_STORE_IC, 2492 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_STORE_IC,
2493 vector->GetKind(vector_slot)); 2493 vector->GetKind(vector_slot));
2494 KeyedStoreICNexus nexus(vector, vector_slot); 2494 KeyedStoreICNexus nexus(vector, vector_slot);
(...skipping 19 matching lines...) Expand all
2514 HandleScope scope(isolate); 2514 HandleScope scope(isolate);
2515 Handle<Object> receiver = args.at<Object>(0); 2515 Handle<Object> receiver = args.at<Object>(0);
2516 Handle<Object> key = args.at<Object>(1); 2516 Handle<Object> key = args.at<Object>(1);
2517 Handle<Object> value = args.at<Object>(2); 2517 Handle<Object> value = args.at<Object>(2);
2518 Handle<Object> result; 2518 Handle<Object> result;
2519 2519
2520 if (FLAG_vector_stores) { 2520 if (FLAG_vector_stores) {
2521 DCHECK(args.length() == 5); 2521 DCHECK(args.length() == 5);
2522 Handle<Smi> slot = args.at<Smi>(3); 2522 Handle<Smi> slot = args.at<Smi>(3);
2523 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(4); 2523 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(4);
2524 FeedbackVectorICSlot vector_slot = vector->ToICSlot(slot->value()); 2524 FeedbackVectorSlot vector_slot = vector->ToSlot(slot->value());
2525 KeyedStoreICNexus nexus(vector, vector_slot); 2525 KeyedStoreICNexus nexus(vector, vector_slot);
2526 KeyedStoreIC ic(IC::NO_EXTRA_FRAME, isolate, &nexus); 2526 KeyedStoreIC ic(IC::NO_EXTRA_FRAME, isolate, &nexus);
2527 ic.UpdateState(receiver, key); 2527 ic.UpdateState(receiver, key);
2528 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, 2528 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
2529 ic.Store(receiver, key, value)); 2529 ic.Store(receiver, key, value));
2530 } else { 2530 } else {
2531 DCHECK(args.length() == 3); 2531 DCHECK(args.length() == 3);
2532 KeyedStoreIC ic(IC::NO_EXTRA_FRAME, isolate); 2532 KeyedStoreIC ic(IC::NO_EXTRA_FRAME, isolate);
2533 ic.UpdateState(receiver, key); 2533 ic.UpdateState(receiver, key);
2534 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, 2534 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
2535 ic.Store(receiver, key, value)); 2535 ic.Store(receiver, key, value));
2536 } 2536 }
2537 return *result; 2537 return *result;
2538 } 2538 }
2539 2539
2540 2540
2541 RUNTIME_FUNCTION(Runtime_KeyedStoreIC_MissFromStubFailure) { 2541 RUNTIME_FUNCTION(Runtime_KeyedStoreIC_MissFromStubFailure) {
2542 TimerEventScope<TimerEventIcMiss> timer(isolate); 2542 TimerEventScope<TimerEventIcMiss> timer(isolate);
2543 HandleScope scope(isolate); 2543 HandleScope scope(isolate);
2544 Handle<Object> receiver = args.at<Object>(0); 2544 Handle<Object> receiver = args.at<Object>(0);
2545 Handle<Object> key = args.at<Object>(1); 2545 Handle<Object> key = args.at<Object>(1);
2546 Handle<Object> value = args.at<Object>(2); 2546 Handle<Object> value = args.at<Object>(2);
2547 Handle<Object> result; 2547 Handle<Object> result;
2548 2548
2549 if (FLAG_vector_stores) { 2549 if (FLAG_vector_stores) {
2550 DCHECK(args.length() == 5); 2550 DCHECK(args.length() == 5);
2551 Handle<Smi> slot = args.at<Smi>(3); 2551 Handle<Smi> slot = args.at<Smi>(3);
2552 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(4); 2552 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(4);
2553 FeedbackVectorICSlot vector_slot = vector->ToICSlot(slot->value()); 2553 FeedbackVectorSlot vector_slot = vector->ToSlot(slot->value());
2554 KeyedStoreICNexus nexus(vector, vector_slot); 2554 KeyedStoreICNexus nexus(vector, vector_slot);
2555 KeyedStoreIC ic(IC::EXTRA_CALL_FRAME, isolate, &nexus); 2555 KeyedStoreIC ic(IC::EXTRA_CALL_FRAME, isolate, &nexus);
2556 ic.UpdateState(receiver, key); 2556 ic.UpdateState(receiver, key);
2557 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, 2557 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result,
2558 ic.Store(receiver, key, value)); 2558 ic.Store(receiver, key, value));
2559 } else { 2559 } else {
2560 DCHECK(args.length() == 3); 2560 DCHECK(args.length() == 3);
2561 KeyedStoreIC ic(IC::EXTRA_CALL_FRAME, isolate); 2561 KeyedStoreIC ic(IC::EXTRA_CALL_FRAME, isolate);
2562 ic.UpdateState(receiver, key); 2562 ic.UpdateState(receiver, key);
2563 ASSIGN_RETURN_FAILURE_ON_EXCEPTION( 2563 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after
3102 RUNTIME_FUNCTION(Runtime_LoadIC_MissFromStubFailure) { 3102 RUNTIME_FUNCTION(Runtime_LoadIC_MissFromStubFailure) {
3103 TimerEventScope<TimerEventIcMiss> timer(isolate); 3103 TimerEventScope<TimerEventIcMiss> timer(isolate);
3104 HandleScope scope(isolate); 3104 HandleScope scope(isolate);
3105 Handle<Object> receiver = args.at<Object>(0); 3105 Handle<Object> receiver = args.at<Object>(0);
3106 Handle<Name> key = args.at<Name>(1); 3106 Handle<Name> key = args.at<Name>(1);
3107 Handle<Object> result; 3107 Handle<Object> result;
3108 3108
3109 DCHECK(args.length() == 4); 3109 DCHECK(args.length() == 4);
3110 Handle<Smi> slot = args.at<Smi>(2); 3110 Handle<Smi> slot = args.at<Smi>(2);
3111 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(3); 3111 Handle<TypeFeedbackVector> vector = args.at<TypeFeedbackVector>(3);
3112 FeedbackVectorICSlot vector_slot = vector->ToICSlot(slot->value()); 3112 FeedbackVectorSlot vector_slot = vector->ToSlot(slot->value());
3113 // A monomorphic or polymorphic KeyedLoadIC with a string key can call the 3113 // A monomorphic or polymorphic KeyedLoadIC with a string key can call the
3114 // LoadIC miss handler if the handler misses. Since the vector Nexus is 3114 // LoadIC miss handler if the handler misses. Since the vector Nexus is
3115 // set up outside the IC, handle that here. 3115 // set up outside the IC, handle that here.
3116 if (vector->GetKind(vector_slot) == FeedbackVectorSlotKind::LOAD_IC) { 3116 if (vector->GetKind(vector_slot) == FeedbackVectorSlotKind::LOAD_IC) {
3117 LoadICNexus nexus(vector, vector_slot); 3117 LoadICNexus nexus(vector, vector_slot);
3118 LoadIC ic(IC::EXTRA_CALL_FRAME, isolate, &nexus); 3118 LoadIC ic(IC::EXTRA_CALL_FRAME, isolate, &nexus);
3119 ic.UpdateState(receiver, key); 3119 ic.UpdateState(receiver, key);
3120 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key)); 3120 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key));
3121 } else { 3121 } else {
3122 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_LOAD_IC, 3122 DCHECK_EQ(FeedbackVectorSlotKind::KEYED_LOAD_IC,
3123 vector->GetKind(vector_slot)); 3123 vector->GetKind(vector_slot));
3124 KeyedLoadICNexus nexus(vector, vector_slot); 3124 KeyedLoadICNexus nexus(vector, vector_slot);
3125 KeyedLoadIC ic(IC::EXTRA_CALL_FRAME, isolate, &nexus); 3125 KeyedLoadIC ic(IC::EXTRA_CALL_FRAME, isolate, &nexus);
3126 ic.UpdateState(receiver, key); 3126 ic.UpdateState(receiver, key);
3127 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key)); 3127 ASSIGN_RETURN_FAILURE_ON_EXCEPTION(isolate, result, ic.Load(receiver, key));
3128 } 3128 }
3129 3129
3130 return *result; 3130 return *result;
3131 } 3131 }
3132 } // namespace internal 3132 } // namespace internal
3133 } // namespace v8 3133 } // namespace v8
OLDNEW
« no previous file with comments | « src/ic/ic.h ('k') | src/ic/mips/ic-mips.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698