| Index: src/hydrogen-instructions.h
|
| diff --git a/src/hydrogen-instructions.h b/src/hydrogen-instructions.h
|
| index d5b1c75ebf8b7f87bffd705e7c3a2dce999229ed..38cbd51c228b2228616c649d0b34a356dfecf100 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,33 @@ 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* function,
|
| + HValue* code) {
|
| + return new(zone) HStoreCodeEntry(function, code);
|
| + }
|
| +
|
| + virtual Representation RequiredInputRepresentation(int index) {
|
| + return Representation::Tagged();
|
| + }
|
| +
|
| + HValue* function() { return OperandAt(0); }
|
| + HValue* code_object() { return OperandAt(1); }
|
| +
|
| + DECLARE_CONCRETE_INSTRUCTION(StoreCodeEntry)
|
| +
|
| + private:
|
| + HStoreCodeEntry(HValue* function, HValue* code) {
|
| + SetOperandAt(0, function);
|
| + SetOperandAt(1, code);
|
| + }
|
| +};
|
| +
|
| +
|
| +class HInnerAllocatedObject V8_FINAL: public HTemplateInstruction<1> {
|
| public:
|
| static HInnerAllocatedObject* New(Zone* zone,
|
| HValue* context,
|
| @@ -5457,6 +5484,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 +5536,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 +5595,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());
|
|
|