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

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 3300 matching lines...) Expand 10 before | Expand all | Expand 10 after
3311 Value* receiver = Bind(BuildLoadThisVar(node->scope())); 3311 Value* receiver = Bind(BuildLoadThisVar(node->scope()));
3312 LoadFieldInstr* load = new(I) LoadFieldInstr( 3312 LoadFieldInstr* load = new(I) LoadFieldInstr(
3313 receiver, 3313 receiver,
3314 Bigint::digits_offset(), 3314 Bigint::digits_offset(),
3315 Type::ZoneHandle(I, Type::DynamicType()), 3315 Type::ZoneHandle(I, Type::DynamicType()),
3316 node->token_pos()); 3316 node->token_pos());
3317 load->set_result_cid(kTypedDataUint32ArrayCid); 3317 load->set_result_cid(kTypedDataUint32ArrayCid);
3318 load->set_recognized_kind(kind); 3318 load->set_recognized_kind(kind);
3319 return ReturnDefinition(load); 3319 return ReturnDefinition(load);
3320 } 3320 }
3321 case MethodRecognizer::kBigint_setDigits: {
3322 Value* receiver = Bind(BuildLoadThisVar(node->scope()));
3323 LocalVariable* value_var =
3324 node->scope()->LookupVariable(Symbols::Value(), true);
3325 ASSERT(value_var != NULL);
3326 Value* value = Bind(new(I) LoadLocalInstr(*value_var));
3327 StoreInstanceFieldInstr* store = new(I) StoreInstanceFieldInstr(
3328 Bigint::digits_offset(),
3329 receiver,
3330 value,
3331 kEmitStoreBarrier,
3332 node->token_pos());
3333 Do(store);
3334 ConstantInstr* null_const = new(I) ConstantInstr(
3335 Object::ZoneHandle(I, Object::null()));
3336 return ReturnDefinition(null_const);
3337 }
3338 case MethodRecognizer::kBigint_getUsed: { 3321 case MethodRecognizer::kBigint_getUsed: {
3339 Value* receiver = Bind(BuildLoadThisVar(node->scope())); 3322 Value* receiver = Bind(BuildLoadThisVar(node->scope()));
3340 LoadFieldInstr* load = new(I) LoadFieldInstr( 3323 LoadFieldInstr* load = new(I) LoadFieldInstr(
3341 receiver, 3324 receiver,
3342 Bigint::used_offset(), 3325 Bigint::used_offset(),
3343 Type::ZoneHandle(I, Type::SmiType()), 3326 Type::ZoneHandle(I, Type::SmiType()),
3344 node->token_pos()); 3327 node->token_pos());
3345 load->set_result_cid(kSmiCid); 3328 load->set_result_cid(kSmiCid);
3346 load->set_recognized_kind(kind); 3329 load->set_recognized_kind(kind);
3347 return ReturnDefinition(load); 3330 return ReturnDefinition(load);
3348 } 3331 }
3349 case MethodRecognizer::kBigint_setUsed: {
3350 Value* receiver = Bind(BuildLoadThisVar(node->scope()));
3351 LocalVariable* value_var =
3352 node->scope()->LookupVariable(Symbols::Value(), true);
3353 ASSERT(value_var != NULL);
3354 Value* value = Bind(new(I) LoadLocalInstr(*value_var));
3355 StoreInstanceFieldInstr* store = new(I) StoreInstanceFieldInstr(
3356 Bigint::used_offset(),
3357 receiver,
3358 value,
3359 kNoStoreBarrier,
3360 node->token_pos());
3361 Do(store);
3362 ConstantInstr* null_const = new(I) ConstantInstr(
3363 Object::ZoneHandle(I, Object::null()));
3364 return ReturnDefinition(null_const);
3365 }
3366 case MethodRecognizer::kBigint_getNeg: { 3332 case MethodRecognizer::kBigint_getNeg: {
3367 Value* receiver = Bind(BuildLoadThisVar(node->scope())); 3333 Value* receiver = Bind(BuildLoadThisVar(node->scope()));
3368 LoadFieldInstr* load = new(I) LoadFieldInstr( 3334 LoadFieldInstr* load = new(I) LoadFieldInstr(
3369 receiver, 3335 receiver,
3370 Bigint::neg_offset(), 3336 Bigint::neg_offset(),
3371 Type::ZoneHandle(I, Type::BoolType()), 3337 Type::ZoneHandle(I, Type::BoolType()),
3372 node->token_pos()); 3338 node->token_pos());
3373 load->set_result_cid(kBoolCid); 3339 load->set_result_cid(kBoolCid);
3374 load->set_recognized_kind(kind); 3340 load->set_recognized_kind(kind);
3375 return ReturnDefinition(load); 3341 return ReturnDefinition(load);
3376 } 3342 }
3377 case MethodRecognizer::kBigint_setNeg: {
3378 Value* receiver = Bind(BuildLoadThisVar(node->scope()));
3379 LocalVariable* value_var =
3380 node->scope()->LookupVariable(Symbols::Value(), true);
3381 ASSERT(value_var != NULL);
3382 Value* value = Bind(new(I) LoadLocalInstr(*value_var));
3383 StoreInstanceFieldInstr* store = new(I) StoreInstanceFieldInstr(
3384 Bigint::neg_offset(),
3385 receiver,
3386 value,
3387 kEmitStoreBarrier,
3388 node->token_pos());
3389 Do(store);
3390 ConstantInstr* null_const = new(I) ConstantInstr(
3391 Object::ZoneHandle(I, Object::null()));
3392 return ReturnDefinition(null_const);
3393 }
3394 default: 3343 default:
3395 break; 3344 break;
3396 } 3345 }
3397 } 3346 }
3398 InlineBailout("EffectGraphVisitor::VisitNativeBodyNode"); 3347 InlineBailout("EffectGraphVisitor::VisitNativeBodyNode");
3399 NativeCallInstr* native_call = new(I) NativeCallInstr(node); 3348 NativeCallInstr* native_call = new(I) NativeCallInstr(node);
3400 ReturnDefinition(native_call); 3349 ReturnDefinition(native_call);
3401 } 3350 }
3402 3351
3403 3352
(...skipping 929 matching lines...) Expand 10 before | Expand all | Expand 10 after
4333 Report::MessageF(Report::kBailout, 4282 Report::MessageF(Report::kBailout,
4334 Script::Handle(function.script()), 4283 Script::Handle(function.script()),
4335 function.token_pos(), 4284 function.token_pos(),
4336 "FlowGraphBuilder Bailout: %s %s", 4285 "FlowGraphBuilder Bailout: %s %s",
4337 String::Handle(function.name()).ToCString(), 4286 String::Handle(function.name()).ToCString(),
4338 reason); 4287 reason);
4339 UNREACHABLE(); 4288 UNREACHABLE();
4340 } 4289 }
4341 4290
4342 } // namespace dart 4291 } // namespace dart
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698