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

Side by Side Diff: runtime/vm/kernel_to_il.cc

Issue 2787463003: Step #2 in streaming the kernel flowgraph (Closed)
Patch Set: Created 3 years, 8 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
OLDNEW
1 // Copyright (c) 2016, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2016, 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 #include <map> 5 #include <map>
6 #include <set> 6 #include <set>
7 #include <string> 7 #include <string>
8 8
9 #include "vm/kernel_to_il.h" 9 #include "vm/kernel_to_il.h"
10 10
(...skipping 1023 matching lines...) Expand 10 before | Expand all | Expand 10 after
1034 const dart::String& TranslationHelper::DartSymbol(const char* content) const { 1034 const dart::String& TranslationHelper::DartSymbol(const char* content) const {
1035 return dart::String::ZoneHandle(Z, Symbols::New(thread_, content)); 1035 return dart::String::ZoneHandle(Z, Symbols::New(thread_, content));
1036 } 1036 }
1037 1037
1038 1038
1039 dart::String& TranslationHelper::DartSymbol(String* content) const { 1039 dart::String& TranslationHelper::DartSymbol(String* content) const {
1040 return dart::String::ZoneHandle( 1040 return dart::String::ZoneHandle(
1041 Z, dart::Symbols::FromUTF8(thread_, content->buffer(), content->size())); 1041 Z, dart::Symbols::FromUTF8(thread_, content->buffer(), content->size()));
1042 } 1042 }
1043 1043
1044 dart::String& TranslationHelper::DartSymbol(const uint8_t* utf8_array,
1045 intptr_t len) const {
1046 return dart::String::ZoneHandle(
1047 Z, dart::Symbols::FromUTF8(thread_, utf8_array, len));
1048 }
1044 1049
1045 const dart::String& TranslationHelper::DartClassName( 1050 const dart::String& TranslationHelper::DartClassName(
1046 CanonicalName* kernel_klass) { 1051 CanonicalName* kernel_klass) {
1047 dart::String& name = DartString(kernel_klass->name()); 1052 dart::String& name = DartString(kernel_klass->name());
1048 return ManglePrivateName(kernel_klass->parent(), &name); 1053 return ManglePrivateName(kernel_klass->parent(), &name);
1049 } 1054 }
1050 1055
1051 1056
1052 const dart::String& TranslationHelper::DartConstructorName(Constructor* node) { 1057 const dart::String& TranslationHelper::DartConstructorName(Constructor* node) {
1053 Class* klass = Class::Cast(node->parent()); 1058 Class* klass = Class::Cast(node->parent());
(...skipping 3178 matching lines...) Expand 10 before | Expand all | Expand 10 after
4232 arguments->data()[i] = stack_->definition()->AsPushArgument(); 4237 arguments->data()[i] = stack_->definition()->AsPushArgument();
4233 Drop(); 4238 Drop();
4234 } 4239 }
4235 pending_argument_count_ -= count; 4240 pending_argument_count_ -= count;
4236 ASSERT(pending_argument_count_ >= 0); 4241 ASSERT(pending_argument_count_ >= 0);
4237 return arguments; 4242 return arguments;
4238 } 4243 }
4239 4244
4240 4245
4241 void FlowGraphBuilder::VisitInvalidExpression(InvalidExpression* node) { 4246 void FlowGraphBuilder::VisitInvalidExpression(InvalidExpression* node) {
4242 // The frontend will take care of emitting normal errors (like 4247 fragment_ = streaming_flow_graph_builder_->BuildAt(node->kernel_offset());
4243 // [NoSuchMethodError]s) and only emit [InvalidExpression]s in very special
4244 // situations (e.g. an invalid annotation).
4245 fragment_ = ThrowNoSuchMethodError();
4246 } 4248 }
4247 4249
4248 4250
4249 void FlowGraphBuilder::VisitNullLiteral(NullLiteral* node) { 4251 void FlowGraphBuilder::VisitNullLiteral(NullLiteral* node) {
4250 fragment_ = Constant(Instance::ZoneHandle(Z, Instance::null())); 4252 fragment_ = streaming_flow_graph_builder_->BuildAt(node->kernel_offset());
4251 } 4253 }
4252 4254
4253 4255
4254 void FlowGraphBuilder::VisitBoolLiteral(BoolLiteral* node) { 4256 void FlowGraphBuilder::VisitBoolLiteral(BoolLiteral* node) {
4255 fragment_ = Constant(Bool::Get(node->value())); 4257 fragment_ = streaming_flow_graph_builder_->BuildAt(node->kernel_offset());
4256 } 4258 }
4257 4259
4258 4260
4259 void FlowGraphBuilder::VisitIntLiteral(IntLiteral* node) { 4261 void FlowGraphBuilder::VisitIntLiteral(IntLiteral* node) {
4260 fragment_ = IntConstant(node->value()); 4262 fragment_ = streaming_flow_graph_builder_->BuildAt(node->kernel_offset());
4261 } 4263 }
4262 4264
4263 4265
4264 void FlowGraphBuilder::VisitBigintLiteral(BigintLiteral* node) { 4266 void FlowGraphBuilder::VisitBigintLiteral(BigintLiteral* node) {
4265 const dart::String& value = H.DartString(node->value()); 4267 const dart::String& value = H.DartString(node->value());
4266 fragment_ = Constant(Integer::ZoneHandle(Z, Integer::New(value, Heap::kOld))); 4268 fragment_ = Constant(Integer::ZoneHandle(Z, Integer::New(value, Heap::kOld)));
4267 } 4269 }
4268 4270
4269 4271
4270 void FlowGraphBuilder::VisitDoubleLiteral(DoubleLiteral* node) { 4272 void FlowGraphBuilder::VisitDoubleLiteral(DoubleLiteral* node) {
4271 fragment_ = Constant(constant_evaluator_.EvaluateExpression(node)); 4273 fragment_ = Constant(constant_evaluator_.EvaluateExpression(node));
4272 } 4274 }
4273 4275
4274 4276
4275 void FlowGraphBuilder::VisitStringLiteral(StringLiteral* node) { 4277 void FlowGraphBuilder::VisitStringLiteral(StringLiteral* node) {
4276 fragment_ = Constant(H.DartSymbol(node->value())); 4278 fragment_ = streaming_flow_graph_builder_->BuildAt(node->kernel_offset());
4277 } 4279 }
4278 4280
4279 4281
4280 void FlowGraphBuilder::VisitSymbolLiteral(SymbolLiteral* node) { 4282 void FlowGraphBuilder::VisitSymbolLiteral(SymbolLiteral* node) {
4281 fragment_ = Constant(constant_evaluator_.EvaluateExpression(node)); 4283 fragment_ = Constant(constant_evaluator_.EvaluateExpression(node));
4282 } 4284 }
4283 4285
4284 4286
4285 AbstractType& DartTypeTranslator::TranslateType(DartType* node) { 4287 AbstractType& DartTypeTranslator::TranslateType(DartType* node) {
4286 node->AcceptDartTypeVisitor(this); 4288 node->AcceptDartTypeVisitor(this);
(...skipping 886 matching lines...) Expand 10 before | Expand all | Expand 10 after
5173 5175
5174 void FlowGraphBuilder::VisitNot(Not* node) { 5176 void FlowGraphBuilder::VisitNot(Not* node) {
5175 Fragment instructions = TranslateExpression(node->expression()); 5177 Fragment instructions = TranslateExpression(node->expression());
5176 instructions += CheckBooleanInCheckedMode(); 5178 instructions += CheckBooleanInCheckedMode();
5177 instructions += BooleanNegate(); 5179 instructions += BooleanNegate();
5178 fragment_ = instructions; 5180 fragment_ = instructions;
5179 } 5181 }
5180 5182
5181 5183
5182 void FlowGraphBuilder::VisitThisExpression(ThisExpression* node) { 5184 void FlowGraphBuilder::VisitThisExpression(ThisExpression* node) {
5183 fragment_ = LoadLocal(scopes_->this_variable); 5185 fragment_ = streaming_flow_graph_builder_->BuildAt(node->kernel_offset());
5184 } 5186 }
5185 5187
5186 5188
5187 void FlowGraphBuilder::VisitStringConcatenation(StringConcatenation* node) { 5189 void FlowGraphBuilder::VisitStringConcatenation(StringConcatenation* node) {
5188 List<Expression>& expressions = node->expressions(); 5190 List<Expression>& expressions = node->expressions();
5189 5191
5190 Fragment instructions; 5192 Fragment instructions;
5191 5193
5192 if (node->expressions().length() == 1) { 5194 if (node->expressions().length() == 1) {
5193 instructions += TranslateExpression(node->expressions()[0]); 5195 instructions += TranslateExpression(node->expressions()[0]);
(...skipping 1264 matching lines...) Expand 10 before | Expand all | Expand 10 after
6458 thread->clear_sticky_error(); 6460 thread->clear_sticky_error();
6459 return error.raw(); 6461 return error.raw();
6460 } 6462 }
6461 } 6463 }
6462 6464
6463 6465
6464 } // namespace kernel 6466 } // namespace kernel
6465 } // namespace dart 6467 } // namespace dart
6466 6468
6467 #endif // !defined(DART_PRECOMPILED_RUNTIME) 6469 #endif // !defined(DART_PRECOMPILED_RUNTIME)
OLDNEW
« runtime/vm/kernel_binary_flowgraph.cc ('K') | « runtime/vm/kernel_to_il.h ('k') | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698