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

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

Issue 842033005: Make Bigint instances immutable by removing all setters. (Closed) Base URL: http://dart.googlecode.com/svn/branches/bleeding_edge/dart/
Patch Set: Created 5 years, 10 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) 2012, the Dart project authors. Please see the AUTHORS file 1 // Copyright (c) 2012, 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 "vm/flow_graph_builder.h" 5 #include "vm/flow_graph_builder.h"
6 6
7 #include "lib/invocation_mirror.h" 7 #include "lib/invocation_mirror.h"
8 #include "vm/ast_printer.h" 8 #include "vm/ast_printer.h"
9 #include "vm/bit_vector.h" 9 #include "vm/bit_vector.h"
10 #include "vm/class_finalizer.h" 10 #include "vm/class_finalizer.h"
(...skipping 3281 matching lines...) Expand 10 before | Expand all | Expand 10 after
3292 Value* receiver = Bind(BuildLoadThisVar(node->scope())); 3292 Value* receiver = Bind(BuildLoadThisVar(node->scope()));
3293 LoadFieldInstr* load = new(I) LoadFieldInstr( 3293 LoadFieldInstr* load = new(I) LoadFieldInstr(
3294 receiver, 3294 receiver,
3295 Bigint::digits_offset(), 3295 Bigint::digits_offset(),
3296 Type::ZoneHandle(I, Type::DynamicType()), 3296 Type::ZoneHandle(I, Type::DynamicType()),
3297 node->token_pos()); 3297 node->token_pos());
3298 load->set_result_cid(kTypedDataUint32ArrayCid); 3298 load->set_result_cid(kTypedDataUint32ArrayCid);
3299 load->set_recognized_kind(kind); 3299 load->set_recognized_kind(kind);
3300 return ReturnDefinition(load); 3300 return ReturnDefinition(load);
3301 } 3301 }
3302 case MethodRecognizer::kBigint_setDigits: {
3303 Value* receiver = Bind(BuildLoadThisVar(node->scope()));
3304 LocalVariable* value_var =
3305 node->scope()->LookupVariable(Symbols::Value(), true);
3306 ASSERT(value_var != NULL);
3307 Value* value = Bind(new(I) LoadLocalInstr(*value_var));
3308 StoreInstanceFieldInstr* store = new(I) StoreInstanceFieldInstr(
3309 Bigint::digits_offset(),
3310 receiver,
3311 value,
3312 kEmitStoreBarrier,
3313 node->token_pos());
3314 Do(store);
3315 ConstantInstr* null_const = new(I) ConstantInstr(
3316 Object::ZoneHandle(I, Object::null()));
3317 return ReturnDefinition(null_const);
3318 }
3319 case MethodRecognizer::kBigint_getUsed: { 3302 case MethodRecognizer::kBigint_getUsed: {
3320 Value* receiver = Bind(BuildLoadThisVar(node->scope())); 3303 Value* receiver = Bind(BuildLoadThisVar(node->scope()));
3321 LoadFieldInstr* load = new(I) LoadFieldInstr( 3304 LoadFieldInstr* load = new(I) LoadFieldInstr(
3322 receiver, 3305 receiver,
3323 Bigint::used_offset(), 3306 Bigint::used_offset(),
3324 Type::ZoneHandle(I, Type::SmiType()), 3307 Type::ZoneHandle(I, Type::SmiType()),
3325 node->token_pos()); 3308 node->token_pos());
3326 load->set_result_cid(kSmiCid); 3309 load->set_result_cid(kSmiCid);
3327 load->set_recognized_kind(kind); 3310 load->set_recognized_kind(kind);
3328 return ReturnDefinition(load); 3311 return ReturnDefinition(load);
3329 } 3312 }
3330 case MethodRecognizer::kBigint_setUsed: {
3331 Value* receiver = Bind(BuildLoadThisVar(node->scope()));
3332 LocalVariable* value_var =
3333 node->scope()->LookupVariable(Symbols::Value(), true);
3334 ASSERT(value_var != NULL);
3335 Value* value = Bind(new(I) LoadLocalInstr(*value_var));
3336 StoreInstanceFieldInstr* store = new(I) StoreInstanceFieldInstr(
3337 Bigint::used_offset(),
3338 receiver,
3339 value,
3340 kNoStoreBarrier,
3341 node->token_pos());
3342 Do(store);
3343 ConstantInstr* null_const = new(I) ConstantInstr(
3344 Object::ZoneHandle(I, Object::null()));
3345 return ReturnDefinition(null_const);
3346 }
3347 case MethodRecognizer::kBigint_getNeg: { 3313 case MethodRecognizer::kBigint_getNeg: {
3348 Value* receiver = Bind(BuildLoadThisVar(node->scope())); 3314 Value* receiver = Bind(BuildLoadThisVar(node->scope()));
3349 LoadFieldInstr* load = new(I) LoadFieldInstr( 3315 LoadFieldInstr* load = new(I) LoadFieldInstr(
3350 receiver, 3316 receiver,
3351 Bigint::neg_offset(), 3317 Bigint::neg_offset(),
3352 Type::ZoneHandle(I, Type::BoolType()), 3318 Type::ZoneHandle(I, Type::BoolType()),
3353 node->token_pos()); 3319 node->token_pos());
3354 load->set_result_cid(kBoolCid); 3320 load->set_result_cid(kBoolCid);
3355 load->set_recognized_kind(kind); 3321 load->set_recognized_kind(kind);
3356 return ReturnDefinition(load); 3322 return ReturnDefinition(load);
3357 } 3323 }
3358 case MethodRecognizer::kBigint_setNeg: {
3359 Value* receiver = Bind(BuildLoadThisVar(node->scope()));
3360 LocalVariable* value_var =
3361 node->scope()->LookupVariable(Symbols::Value(), true);
3362 ASSERT(value_var != NULL);
3363 Value* value = Bind(new(I) LoadLocalInstr(*value_var));
3364 StoreInstanceFieldInstr* store = new(I) StoreInstanceFieldInstr(
3365 Bigint::neg_offset(),
3366 receiver,
3367 value,
3368 kEmitStoreBarrier,
3369 node->token_pos());
3370 Do(store);
3371 ConstantInstr* null_const = new(I) ConstantInstr(
3372 Object::ZoneHandle(I, Object::null()));
3373 return ReturnDefinition(null_const);
3374 }
3375 default: 3324 default:
3376 break; 3325 break;
3377 } 3326 }
3378 } 3327 }
3379 InlineBailout("EffectGraphVisitor::VisitNativeBodyNode"); 3328 InlineBailout("EffectGraphVisitor::VisitNativeBodyNode");
3380 NativeCallInstr* native_call = new(I) NativeCallInstr(node); 3329 NativeCallInstr* native_call = new(I) NativeCallInstr(node);
3381 ReturnDefinition(native_call); 3330 ReturnDefinition(native_call);
3382 } 3331 }
3383 3332
3384 3333
(...skipping 926 matching lines...) Expand 10 before | Expand all | Expand 10 after
4311 Report::MessageF(Report::kBailout, 4260 Report::MessageF(Report::kBailout,
4312 Script::Handle(function.script()), 4261 Script::Handle(function.script()),
4313 function.token_pos(), 4262 function.token_pos(),
4314 "FlowGraphBuilder Bailout: %s %s", 4263 "FlowGraphBuilder Bailout: %s %s",
4315 String::Handle(function.name()).ToCString(), 4264 String::Handle(function.name()).ToCString(),
4316 reason); 4265 reason);
4317 UNREACHABLE(); 4266 UNREACHABLE();
4318 } 4267 }
4319 4268
4320 } // namespace dart 4269 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698