 Chromium Code Reviews
 Chromium Code Reviews Issue 16925008:
  Generate StoreGlobal stubs with Hydrogen  (Closed) 
  Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge
    
  
    Issue 16925008:
  Generate StoreGlobal stubs with Hydrogen  (Closed) 
  Base URL: https://v8.googlecode.com/svn/branches/bleeding_edge| Index: src/code-stubs.h | 
| diff --git a/src/code-stubs.h b/src/code-stubs.h | 
| index c7076b6f126174a7f33a6150204ef93d0a1d25a1..dd8b9f388db5abf678853228bc4df50c5e77c234 100644 | 
| --- a/src/code-stubs.h | 
| +++ b/src/code-stubs.h | 
| @@ -90,6 +90,7 @@ namespace internal { | 
| V(ArrayConstructor) \ | 
| V(InternalArrayConstructor) \ | 
| V(ProfileEntryHook) \ | 
| + V(StoreGlobal) \ | 
| /* IC Handler stubs */ \ | 
| V(LoadField) \ | 
| V(KeyedLoadField) | 
| @@ -140,6 +141,8 @@ class CodeStub BASE_EMBEDDED { | 
| // Retrieve the code for the stub. Generate the code if needed. | 
| Handle<Code> GetCode(Isolate* isolate); | 
| + // Retrieve the code for the stub, make and return a copy of the code. | 
| + Handle<Code> GetCodeCopyFromTemplate(Isolate* isolate); | 
| static Major MajorKeyFromKey(uint32_t key) { | 
| return static_cast<Major>(MajorKeyBits::decode(key)); | 
| } | 
| @@ -519,6 +522,51 @@ class FastNewBlockContextStub : public PlatformCodeStub { | 
| int MinorKey() { return slots_; } | 
| }; | 
| +class StoreGlobalStub : public HydrogenCodeStub { | 
| + public: | 
| + StoreGlobalStub(StrictModeFlag strict_mode, bool is_constant) { | 
| + bit_field_ = StrictModeBits::encode(strict_mode) | | 
| + IsConstantBits::encode(is_constant); | 
| + } | 
| + | 
| + virtual Handle<Code> GenerateCode(); | 
| + | 
| + virtual void InitializeInterfaceDescriptor( | 
| + Isolate* isolate, | 
| + CodeStubInterfaceDescriptor* descriptor); | 
| + | 
| + virtual Code::Kind GetCodeKind() const { return Code::STORE_IC; } | 
| + virtual InlineCacheState GetICState() { return MONOMORPHIC; } | 
| + virtual Code::ExtraICState GetExtraICState() { return bit_field_; | 
| + } | 
| 
ulan
2013/07/01 11:35:03
"}" fits in the previous line.
 
danno
2013/07/01 12:52:23
Done.
 | 
| + | 
| + bool is_constant() { | 
| + return IsConstantBits::decode(bit_field_); | 
| + } | 
| + void set_is_constant(bool value) { | 
| + bit_field_ = IsConstantBits::update(bit_field_, value); | 
| + } | 
| + | 
| + Representation representation() { | 
| + return Representation::FromKind(RepresentationBits::decode(bit_field_)); | 
| + } | 
| + void set_representation(Representation r) { | 
| + bit_field_ = RepresentationBits::update(bit_field_, r.kind()); | 
| + } | 
| + | 
| + private: | 
| + virtual int NotMissMinorKey() { return GetExtraICState(); } | 
| + Major MajorKey() { return StoreGlobal; } | 
| + | 
| + class StrictModeBits: public BitField<StrictModeFlag, 0, 1> {}; | 
| + class IsConstantBits: public BitField<bool, 1, 1> {}; | 
| + class RepresentationBits: public BitField<Representation::Kind, 2, 8> {}; | 
| + | 
| + int bit_field_; | 
| + | 
| + DISALLOW_COPY_AND_ASSIGN(StoreGlobalStub); | 
| +}; | 
| + | 
| class FastCloneShallowArrayStub : public HydrogenCodeStub { | 
| public: |