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

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

Issue 648703002: Fix type feedback for name-keyed stores (Closed) Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
Patch Set: Created 6 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 | Annotate | Revision Log
« no previous file with comments | « src/hydrogen.cc ('k') | src/ic/ic-compiler.h » ('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 #ifndef V8_IC_H_ 5 #ifndef V8_IC_H_
6 #define V8_IC_H_ 6 #define V8_IC_H_
7 7
8 #include "src/ic/ic-state.h" 8 #include "src/ic/ic-state.h"
9 #include "src/macro-assembler.h" 9 #include "src/macro-assembler.h"
10 10
(...skipping 524 matching lines...) Expand 10 before | Expand all | Expand 10 after
535 }; 535 };
536 536
537 537
538 class KeyedStoreIC : public StoreIC { 538 class KeyedStoreIC : public StoreIC {
539 public: 539 public:
540 // ExtraICState bits (building on IC) 540 // ExtraICState bits (building on IC)
541 // ExtraICState bits 541 // ExtraICState bits
542 class ExtraICStateKeyedAccessStoreMode 542 class ExtraICStateKeyedAccessStoreMode
543 : public BitField<KeyedAccessStoreMode, 2, 4> {}; // NOLINT 543 : public BitField<KeyedAccessStoreMode, 2, 4> {}; // NOLINT
544 544
545 class IcCheckTypeField : public BitField<IcCheckType, 6, 1> {};
546
545 static ExtraICState ComputeExtraICState(StrictMode flag, 547 static ExtraICState ComputeExtraICState(StrictMode flag,
546 KeyedAccessStoreMode mode) { 548 KeyedAccessStoreMode mode) {
547 return StrictModeState::encode(flag) | 549 return StrictModeState::encode(flag) |
548 ExtraICStateKeyedAccessStoreMode::encode(mode); 550 ExtraICStateKeyedAccessStoreMode::encode(mode);
549 } 551 }
550 552
551 static KeyedAccessStoreMode GetKeyedAccessStoreMode( 553 static KeyedAccessStoreMode GetKeyedAccessStoreMode(
552 ExtraICState extra_state) { 554 ExtraICState extra_state) {
553 return ExtraICStateKeyedAccessStoreMode::decode(extra_state); 555 return ExtraICStateKeyedAccessStoreMode::decode(extra_state);
554 } 556 }
555 557
558 static IcCheckType GetKeyType(ExtraICState extra_state) {
559 return IcCheckTypeField::decode(extra_state);
560 }
561
556 KeyedStoreIC(FrameDepth depth, Isolate* isolate) : StoreIC(depth, isolate) { 562 KeyedStoreIC(FrameDepth depth, Isolate* isolate) : StoreIC(depth, isolate) {
557 DCHECK(target()->is_keyed_store_stub()); 563 DCHECK(target()->is_keyed_store_stub());
558 } 564 }
559 565
560 MUST_USE_RESULT MaybeHandle<Object> Store(Handle<Object> object, 566 MUST_USE_RESULT MaybeHandle<Object> Store(Handle<Object> object,
561 Handle<Object> name, 567 Handle<Object> name,
562 Handle<Object> value); 568 Handle<Object> value);
563 569
564 // Code generators for stub routines. Only called once at startup. 570 // Code generators for stub routines. Only called once at startup.
565 static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); } 571 static void GenerateInitialize(MacroAssembler* masm) { GenerateMiss(masm); }
(...skipping 132 matching lines...) Expand 10 before | Expand all | Expand 10 after
698 704
699 // Support functions for interceptor handlers. 705 // Support functions for interceptor handlers.
700 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptorOnly); 706 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptorOnly);
701 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptor); 707 DECLARE_RUNTIME_FUNCTION(LoadPropertyWithInterceptor);
702 DECLARE_RUNTIME_FUNCTION(LoadElementWithInterceptor); 708 DECLARE_RUNTIME_FUNCTION(LoadElementWithInterceptor);
703 DECLARE_RUNTIME_FUNCTION(StorePropertyWithInterceptor); 709 DECLARE_RUNTIME_FUNCTION(StorePropertyWithInterceptor);
704 } 710 }
705 } // namespace v8::internal 711 } // namespace v8::internal
706 712
707 #endif // V8_IC_H_ 713 #endif // V8_IC_H_
OLDNEW
« no previous file with comments | « src/hydrogen.cc ('k') | src/ic/ic-compiler.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698