Chromium Code Reviews| Index: src/hydrogen-instructions.h |
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h |
| index d5b1c75ebf8b7f87bffd705e7c3a2dce999229ed..1e2138ceebe342f9258f9aff767d4ecafd711f79 100644 |
| --- a/src/hydrogen-instructions.h |
| +++ b/src/hydrogen-instructions.h |
| @@ -164,6 +164,7 @@ class LChunkBuilder; |
| V(Shr) \ |
| V(Simulate) \ |
| V(StackCheck) \ |
| + V(StoreCodeEntry) \ |
| V(StoreContextSlot) \ |
| V(StoreGlobalCell) \ |
| V(StoreGlobalGeneric) \ |
| @@ -5148,7 +5149,32 @@ class HAllocate V8_FINAL : public HTemplateInstruction<2> { |
| }; |
| -class HInnerAllocatedObject V8_FINAL : public HTemplateInstruction<1> { |
| +class HStoreCodeEntry V8_FINAL: public HTemplateInstruction<2> { |
| + public: |
| + static HStoreCodeEntry* New(Zone* zone, |
| + HValue* context, |
| + HValue* js_function, |
| + HValue* code) { |
| + return new(zone) HStoreCodeEntry(js_function, code); |
| + } |
| + |
| + virtual Representation RequiredInputRepresentation(int index) { |
| + return Representation::Tagged(); |
| + } |
| + |
| + HValue* js_function() { return OperandAt(0); } |
|
Michael Starzinger
2013/08/27 08:12:51
nit: s/js_function/function/ ... or ... s/js_funct
mvstanton
2013/08/27 09:23:04
Done.
|
| + HValue* code_object() { return OperandAt(1); } |
| + |
| + DECLARE_CONCRETE_INSTRUCTION(StoreCodeEntry) |
| + private: |
|
Michael Starzinger
2013/08/27 08:12:51
nit: Empty new-line before the "private:" header.
mvstanton
2013/08/27 09:23:04
Done.
|
| + HStoreCodeEntry(HValue* js_function, HValue* code) { |
| + SetOperandAt(0, js_function); |
| + SetOperandAt(1, code); |
| + } |
| +}; |
| + |
| + |
| +class HInnerAllocatedObject V8_FINAL: public HTemplateInstruction<1> { |
| public: |
| static HInnerAllocatedObject* New(Zone* zone, |
| HValue* context, |
| @@ -5457,6 +5483,14 @@ class HObjectAccess V8_FINAL { |
| return HObjectAccess(kElementsPointer, JSObject::kElementsOffset); |
| } |
| + static HObjectAccess ForLiteralsPointer() { |
| + return HObjectAccess(kInobject, JSFunction::kLiteralsOffset); |
| + } |
| + |
| + static HObjectAccess ForNextFunctionLinkPointer() { |
| + return HObjectAccess(kInobject, JSFunction::kNextFunctionLinkOffset); |
| + } |
| + |
| static HObjectAccess ForArrayLength(ElementsKind elements_kind) { |
| return HObjectAccess( |
| kArrayLengths, |
| @@ -5501,6 +5535,35 @@ class HObjectAccess V8_FINAL { |
| return HObjectAccess(kInobject, JSFunction::kPrototypeOrInitialMapOffset); |
| } |
| + static HObjectAccess ForSharedFunctionInfoPointer() { |
| + return HObjectAccess(kInobject, JSFunction::kSharedFunctionInfoOffset); |
| + } |
| + |
| + static HObjectAccess ForCodeEntryPointer() { |
| + return HObjectAccess(kInobject, JSFunction::kCodeEntryOffset); |
| + } |
| + |
| + static HObjectAccess ForCodeOffset() { |
| + return HObjectAccess(kInobject, SharedFunctionInfo::kCodeOffset); |
| + } |
| + |
| + static HObjectAccess ForFirstCodeSlot() { |
| + return HObjectAccess(kInobject, SharedFunctionInfo::kFirstCodeSlot); |
| + } |
| + |
| + static HObjectAccess ForFirstContextSlot() { |
| + return HObjectAccess(kInobject, SharedFunctionInfo::kFirstContextSlot); |
| + } |
| + |
| + static HObjectAccess ForOptimizedCodeMap() { |
| + return HObjectAccess(kInobject, |
| + SharedFunctionInfo::kOptimizedCodeMapOffset); |
| + } |
| + |
| + static HObjectAccess ForFunctionContextPointer() { |
| + return HObjectAccess(kInobject, JSFunction::kContextOffset); |
| + } |
| + |
| static HObjectAccess ForMap() { |
| return HObjectAccess(kMaps, JSObject::kMapOffset); |
| } |
| @@ -5531,6 +5594,8 @@ class HObjectAccess V8_FINAL { |
| // Create an access to an in-object property in a JSArray. |
| static HObjectAccess ForJSArrayOffset(int offset); |
| + static HObjectAccess ForContextSlot(int index); |
| + |
| // Create an access to the backing store of an object. |
| static HObjectAccess ForBackingStoreOffset(int offset, |
| Representation representation = Representation::Tagged()); |