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

Side by Side Diff: runtime/vm/intermediate_language.h

Issue 178233003: Allocate instance closures similarly to regular closures, i.e. without a (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 6 years, 9 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
OLDNEW
1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2013, the Dart project authors. Please see the AUTHORS file
2 // for details. All rights reserved. Use of this source code is governed by a 2 // for details. All rights reserved. Use of this source code is governed by a
3 // BSD-style license that can be found in the LICENSE file. 3 // BSD-style license that can be found in the LICENSE file.
4 4
5 #ifndef VM_INTERMEDIATE_LANGUAGE_H_ 5 #ifndef VM_INTERMEDIATE_LANGUAGE_H_
6 #define VM_INTERMEDIATE_LANGUAGE_H_ 6 #define VM_INTERMEDIATE_LANGUAGE_H_
7 7
8 #include "vm/allocation.h" 8 #include "vm/allocation.h"
9 #include "vm/ast.h" 9 #include "vm/ast.h"
10 #include "vm/growable_array.h" 10 #include "vm/growable_array.h"
(...skipping 627 matching lines...) Expand 10 before | Expand all | Expand 10 after
638 M(NativeCall) \ 638 M(NativeCall) \
639 M(DebugStepCheck) \ 639 M(DebugStepCheck) \
640 M(LoadIndexed) \ 640 M(LoadIndexed) \
641 M(StoreIndexed) \ 641 M(StoreIndexed) \
642 M(StoreInstanceField) \ 642 M(StoreInstanceField) \
643 M(LoadStaticField) \ 643 M(LoadStaticField) \
644 M(StoreStaticField) \ 644 M(StoreStaticField) \
645 M(BooleanNegate) \ 645 M(BooleanNegate) \
646 M(InstanceOf) \ 646 M(InstanceOf) \
647 M(CreateArray) \ 647 M(CreateArray) \
648 M(CreateClosure) \
649 M(AllocateObject) \ 648 M(AllocateObject) \
650 M(LoadField) \ 649 M(LoadField) \
651 M(StoreVMField) \ 650 M(StoreVMField) \
652 M(LoadUntagged) \ 651 M(LoadUntagged) \
653 M(LoadClassId) \ 652 M(LoadClassId) \
654 M(InstantiateType) \ 653 M(InstantiateType) \
655 M(InstantiateTypeArguments) \ 654 M(InstantiateTypeArguments) \
656 M(AllocateContext) \ 655 M(AllocateContext) \
657 M(CloneContext) \ 656 M(CloneContext) \
658 M(BinarySmiOp) \ 657 M(BinarySmiOp) \
(...skipping 2683 matching lines...) Expand 10 before | Expand all | Expand 10 after
3342 } 3341 }
3343 3342
3344 DECLARE_INSTRUCTION(DropTemps) 3343 DECLARE_INSTRUCTION(DropTemps)
3345 3344
3346 Value* value() const { return inputs_[0]; } 3345 Value* value() const { return inputs_[0]; }
3347 3346
3348 intptr_t num_temps() const { return num_temps_; } 3347 intptr_t num_temps() const { return num_temps_; }
3349 3348
3350 virtual CompileType* ComputeInitialType() const; 3349 virtual CompileType* ComputeInitialType() const;
3351 3350
3351 virtual void PrintOperandsTo(BufferFormatter* f) const;
3352
3352 virtual bool CanDeoptimize() const { return false; } 3353 virtual bool CanDeoptimize() const { return false; }
3353 3354
3354 virtual EffectSet Effects() const { 3355 virtual EffectSet Effects() const {
3355 UNREACHABLE(); // Eliminated by SSA construction. 3356 UNREACHABLE(); // Eliminated by SSA construction.
3356 return EffectSet::None(); 3357 return EffectSet::None();
3357 } 3358 }
3358 3359
3359 virtual bool MayThrow() const { 3360 virtual bool MayThrow() const {
3360 UNREACHABLE(); 3361 UNREACHABLE();
3361 return false; 3362 return false;
(...skipping 758 matching lines...) Expand 10 before | Expand all | Expand 10 after
4120 4121
4121 virtual bool MayThrow() const { return false; } 4122 virtual bool MayThrow() const { return false; }
4122 4123
4123 private: 4124 private:
4124 const intptr_t token_pos_; 4125 const intptr_t token_pos_;
4125 4126
4126 DISALLOW_COPY_AND_ASSIGN(CreateArrayInstr); 4127 DISALLOW_COPY_AND_ASSIGN(CreateArrayInstr);
4127 }; 4128 };
4128 4129
4129 4130
4130 class CreateClosureInstr : public TemplateDefinition<0> {
4131 public:
4132 CreateClosureInstr(const Function& function,
4133 ZoneGrowableArray<PushArgumentInstr*>* arguments,
4134 intptr_t token_pos)
4135 : function_(function),
4136 arguments_(arguments),
4137 token_pos_(token_pos) { }
4138
4139 DECLARE_INSTRUCTION(CreateClosure)
4140 virtual CompileType ComputeType() const;
4141
4142 intptr_t token_pos() const { return token_pos_; }
4143 const Function& function() const { return function_; }
4144
4145 virtual intptr_t ArgumentCount() const { return arguments_->length(); }
4146 virtual PushArgumentInstr* PushArgumentAt(intptr_t index) const {
4147 return (*arguments_)[index];
4148 }
4149
4150 virtual void PrintOperandsTo(BufferFormatter* f) const;
4151
4152 virtual bool CanDeoptimize() const { return false; }
4153
4154 virtual EffectSet Effects() const { return EffectSet::None(); }
4155
4156 virtual bool MayThrow() const { return false; }
4157
4158 private:
4159 const Function& function_;
4160 ZoneGrowableArray<PushArgumentInstr*>* arguments_;
4161 intptr_t token_pos_;
4162
4163 DISALLOW_COPY_AND_ASSIGN(CreateClosureInstr);
4164 };
4165
4166
4167 class LoadUntaggedInstr : public TemplateDefinition<1> { 4131 class LoadUntaggedInstr : public TemplateDefinition<1> {
4168 public: 4132 public:
4169 LoadUntaggedInstr(Value* object, intptr_t offset) : offset_(offset) { 4133 LoadUntaggedInstr(Value* object, intptr_t offset) : offset_(offset) {
4170 SetInputAt(0, object); 4134 SetInputAt(0, object);
4171 } 4135 }
4172 4136
4173 virtual Representation representation() const { 4137 virtual Representation representation() const {
4174 return kUntagged; 4138 return kUntagged;
4175 } 4139 }
4176 DECLARE_INSTRUCTION(LoadUntagged) 4140 DECLARE_INSTRUCTION(LoadUntagged)
(...skipping 3033 matching lines...) Expand 10 before | Expand all | Expand 10 after
7210 ForwardInstructionIterator* current_iterator_; 7174 ForwardInstructionIterator* current_iterator_;
7211 7175
7212 private: 7176 private:
7213 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor); 7177 DISALLOW_COPY_AND_ASSIGN(FlowGraphVisitor);
7214 }; 7178 };
7215 7179
7216 7180
7217 } // namespace dart 7181 } // namespace dart
7218 7182
7219 #endif // VM_INTERMEDIATE_LANGUAGE_H_ 7183 #endif // VM_INTERMEDIATE_LANGUAGE_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698