Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright 2011 the V8 project authors. All rights reserved. | 1 // Copyright 2011 the V8 project authors. All rights reserved. |
| 2 // Redistribution and use in source and binary forms, with or without | 2 // Redistribution and use in source and binary forms, with or without |
| 3 // modification, are permitted provided that the following conditions are | 3 // modification, are permitted provided that the following conditions are |
| 4 // met: | 4 // met: |
| 5 // | 5 // |
| 6 // * Redistributions of source code must retain the above copyright | 6 // * Redistributions of source code must retain the above copyright |
| 7 // notice, this list of conditions and the following disclaimer. | 7 // notice, this list of conditions and the following disclaimer. |
| 8 // * Redistributions in binary form must reproduce the above | 8 // * Redistributions in binary form must reproduce the above |
| 9 // copyright notice, this list of conditions and the following | 9 // copyright notice, this list of conditions and the following |
| 10 // disclaimer in the documentation and/or other materials provided | 10 // disclaimer in the documentation and/or other materials provided |
| (...skipping 3183 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3194 virtual Representation RequiredInputRepresentation(int index) const { | 3194 virtual Representation RequiredInputRepresentation(int index) const { |
| 3195 return Representation::None(); | 3195 return Representation::None(); |
| 3196 } | 3196 } |
| 3197 | 3197 |
| 3198 DECLARE_CONCRETE_INSTRUCTION(UnknownOSRValue) | 3198 DECLARE_CONCRETE_INSTRUCTION(UnknownOSRValue) |
| 3199 }; | 3199 }; |
| 3200 | 3200 |
| 3201 | 3201 |
| 3202 class HLoadGlobalCell: public HTemplateInstruction<0> { | 3202 class HLoadGlobalCell: public HTemplateInstruction<0> { |
| 3203 public: | 3203 public: |
| 3204 HLoadGlobalCell(Handle<JSGlobalPropertyCell> cell, bool check_hole_value) | 3204 HLoadGlobalCell(Handle<JSGlobalPropertyCell> cell, bool deleteable_or_const) |
|
Kevin Millikin (Chromium)
2011/09/27 12:01:04
I'm not thrilled with the bool. The terminology i
| |
| 3205 : cell_(cell), check_hole_value_(check_hole_value) { | 3205 : cell_(cell), deleteable_or_const_(deleteable_or_const) { |
| 3206 set_representation(Representation::Tagged()); | 3206 set_representation(Representation::Tagged()); |
| 3207 SetFlag(kUseGVN); | 3207 SetFlag(kUseGVN); |
| 3208 SetFlag(kDependsOnGlobalVars); | 3208 SetFlag(kDependsOnGlobalVars); |
| 3209 } | 3209 } |
| 3210 | 3210 |
| 3211 Handle<JSGlobalPropertyCell> cell() const { return cell_; } | 3211 Handle<JSGlobalPropertyCell> cell() const { return cell_; } |
| 3212 bool check_hole_value() const { return check_hole_value_; } | 3212 bool deleteable_or_const() const { return deleteable_or_const_; } |
| 3213 bool RequiresHoleCheck() const; | |
| 3213 | 3214 |
| 3214 virtual void PrintDataTo(StringStream* stream); | 3215 virtual void PrintDataTo(StringStream* stream); |
| 3215 | 3216 |
| 3216 virtual intptr_t Hashcode() { | 3217 virtual intptr_t Hashcode() { |
| 3217 ASSERT(!HEAP->allow_allocation(false)); | 3218 ASSERT(!HEAP->allow_allocation(false)); |
| 3218 return reinterpret_cast<intptr_t>(*cell_); | 3219 return reinterpret_cast<intptr_t>(*cell_); |
| 3219 } | 3220 } |
| 3220 | 3221 |
| 3221 virtual Representation RequiredInputRepresentation(int index) const { | 3222 virtual Representation RequiredInputRepresentation(int index) const { |
| 3222 return Representation::None(); | 3223 return Representation::None(); |
| 3223 } | 3224 } |
| 3224 | 3225 |
| 3225 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalCell) | 3226 DECLARE_CONCRETE_INSTRUCTION(LoadGlobalCell) |
| 3226 | 3227 |
| 3227 protected: | 3228 protected: |
| 3228 virtual bool DataEquals(HValue* other) { | 3229 virtual bool DataEquals(HValue* other) { |
| 3229 HLoadGlobalCell* b = HLoadGlobalCell::cast(other); | 3230 HLoadGlobalCell* b = HLoadGlobalCell::cast(other); |
| 3230 return cell_.is_identical_to(b->cell()); | 3231 return cell_.is_identical_to(b->cell()); |
| 3231 } | 3232 } |
| 3232 | 3233 |
| 3233 private: | 3234 private: |
| 3234 Handle<JSGlobalPropertyCell> cell_; | 3235 Handle<JSGlobalPropertyCell> cell_; |
| 3235 bool check_hole_value_; | 3236 bool deleteable_or_const_; |
| 3236 }; | 3237 }; |
| 3237 | 3238 |
| 3238 | 3239 |
| 3239 class HLoadGlobalGeneric: public HTemplateInstruction<2> { | 3240 class HLoadGlobalGeneric: public HTemplateInstruction<2> { |
| 3240 public: | 3241 public: |
| 3241 HLoadGlobalGeneric(HValue* context, | 3242 HLoadGlobalGeneric(HValue* context, |
| 3242 HValue* global_object, | 3243 HValue* global_object, |
| 3243 Handle<Object> name, | 3244 Handle<Object> name, |
| 3244 bool for_typeof) | 3245 bool for_typeof) |
| 3245 : name_(name), | 3246 : name_(name), |
| (...skipping 20 matching lines...) Expand all Loading... | |
| 3266 private: | 3267 private: |
| 3267 Handle<Object> name_; | 3268 Handle<Object> name_; |
| 3268 bool for_typeof_; | 3269 bool for_typeof_; |
| 3269 }; | 3270 }; |
| 3270 | 3271 |
| 3271 | 3272 |
| 3272 class HStoreGlobalCell: public HUnaryOperation { | 3273 class HStoreGlobalCell: public HUnaryOperation { |
| 3273 public: | 3274 public: |
| 3274 HStoreGlobalCell(HValue* value, | 3275 HStoreGlobalCell(HValue* value, |
| 3275 Handle<JSGlobalPropertyCell> cell, | 3276 Handle<JSGlobalPropertyCell> cell, |
| 3276 bool check_hole_value) | 3277 bool deleteable_or_const) |
| 3277 : HUnaryOperation(value), | 3278 : HUnaryOperation(value), |
| 3278 cell_(cell), | 3279 cell_(cell), |
| 3279 check_hole_value_(check_hole_value) { | 3280 deleteable_or_const_(deleteable_or_const) { |
| 3280 SetFlag(kChangesGlobalVars); | 3281 SetFlag(kChangesGlobalVars); |
| 3281 } | 3282 } |
| 3282 | 3283 |
| 3283 Handle<JSGlobalPropertyCell> cell() const { return cell_; } | 3284 Handle<JSGlobalPropertyCell> cell() const { return cell_; } |
| 3284 bool check_hole_value() const { return check_hole_value_; } | 3285 bool deleteable_or_const() const { return deleteable_or_const_; } |
| 3286 bool RequiresHoleCheck() const { return deleteable_or_const(); } | |
| 3285 | 3287 |
| 3286 virtual Representation RequiredInputRepresentation(int index) const { | 3288 virtual Representation RequiredInputRepresentation(int index) const { |
| 3287 return Representation::Tagged(); | 3289 return Representation::Tagged(); |
| 3288 } | 3290 } |
| 3289 virtual void PrintDataTo(StringStream* stream); | 3291 virtual void PrintDataTo(StringStream* stream); |
| 3290 | 3292 |
| 3291 DECLARE_CONCRETE_INSTRUCTION(StoreGlobalCell) | 3293 DECLARE_CONCRETE_INSTRUCTION(StoreGlobalCell) |
| 3292 | 3294 |
| 3293 private: | 3295 private: |
| 3294 Handle<JSGlobalPropertyCell> cell_; | 3296 Handle<JSGlobalPropertyCell> cell_; |
| 3295 bool check_hole_value_; | 3297 bool deleteable_or_const_; |
| 3296 }; | 3298 }; |
| 3297 | 3299 |
| 3298 | 3300 |
| 3299 class HStoreGlobalGeneric: public HTemplateInstruction<3> { | 3301 class HStoreGlobalGeneric: public HTemplateInstruction<3> { |
| 3300 public: | 3302 public: |
| 3301 HStoreGlobalGeneric(HValue* context, | 3303 HStoreGlobalGeneric(HValue* context, |
| 3302 HValue* global_object, | 3304 HValue* global_object, |
| 3303 Handle<Object> name, | 3305 Handle<Object> name, |
| 3304 HValue* value, | 3306 HValue* value, |
| 3305 bool strict_mode) | 3307 bool strict_mode) |
| (...skipping 261 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 3567 | 3569 |
| 3568 virtual Representation RequiredInputRepresentation(int index) const { | 3570 virtual Representation RequiredInputRepresentation(int index) const { |
| 3569 // The key is supposed to be Integer32. | 3571 // The key is supposed to be Integer32. |
| 3570 return index == 0 | 3572 return index == 0 |
| 3571 ? Representation::Tagged() | 3573 ? Representation::Tagged() |
| 3572 : Representation::Integer32(); | 3574 : Representation::Integer32(); |
| 3573 } | 3575 } |
| 3574 | 3576 |
| 3575 virtual void PrintDataTo(StringStream* stream); | 3577 virtual void PrintDataTo(StringStream* stream); |
| 3576 | 3578 |
| 3577 bool RequiresHoleCheck() const; | |
| 3578 | |
| 3579 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastDoubleElement) | 3579 DECLARE_CONCRETE_INSTRUCTION(LoadKeyedFastDoubleElement) |
| 3580 | 3580 |
| 3581 protected: | 3581 protected: |
| 3582 virtual bool DataEquals(HValue* other) { return true; } | 3582 virtual bool DataEquals(HValue* other) { return true; } |
| 3583 }; | 3583 }; |
| 3584 | 3584 |
| 3585 | 3585 |
| 3586 class HLoadKeyedSpecializedArrayElement: public HTemplateInstruction<2> { | 3586 class HLoadKeyedSpecializedArrayElement: public HTemplateInstruction<2> { |
| 3587 public: | 3587 public: |
| 3588 HLoadKeyedSpecializedArrayElement(HValue* external_elements, | 3588 HLoadKeyedSpecializedArrayElement(HValue* external_elements, |
| (...skipping 653 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 4242 | 4242 |
| 4243 DECLARE_CONCRETE_INSTRUCTION(In) | 4243 DECLARE_CONCRETE_INSTRUCTION(In) |
| 4244 }; | 4244 }; |
| 4245 | 4245 |
| 4246 #undef DECLARE_INSTRUCTION | 4246 #undef DECLARE_INSTRUCTION |
| 4247 #undef DECLARE_CONCRETE_INSTRUCTION | 4247 #undef DECLARE_CONCRETE_INSTRUCTION |
| 4248 | 4248 |
| 4249 } } // namespace v8::internal | 4249 } } // namespace v8::internal |
| 4250 | 4250 |
| 4251 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ | 4251 #endif // V8_HYDROGEN_INSTRUCTIONS_H_ |
| OLD | NEW |