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

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

Issue 132163005: Version 1.1.0-dev.5.7 (Closed) Base URL: http://dart.googlecode.com/svn/trunk/dart/
Patch Set: Created 6 years, 11 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
« no previous file with comments | « runtime/vm/deferred_objects.h ('k') | runtime/vm/deopt_instructions.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
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 #include "vm/deferred_objects.h" 5 #include "vm/deferred_objects.h"
6 6
7 #include "vm/deopt_instructions.h" 7 #include "vm/deopt_instructions.h"
8 #include "vm/flags.h" 8 #include "vm/flags.h"
9 #include "vm/object.h" 9 #include "vm/object.h"
10 10
11 namespace dart { 11 namespace dart {
12 12
13 DECLARE_FLAG(bool, trace_deoptimization_verbose); 13 DECLARE_FLAG(bool, trace_deoptimization_verbose);
14 14
15 15
16 void DeferredDouble::Materialize() { 16 void DeferredDouble::Materialize(DeoptContext* deopt_context) {
17 RawDouble** double_slot = reinterpret_cast<RawDouble**>(slot()); 17 RawDouble** double_slot = reinterpret_cast<RawDouble**>(slot());
18 *double_slot = Double::New(value()); 18 *double_slot = Double::New(value());
19 19
20 if (FLAG_trace_deoptimization_verbose) { 20 if (FLAG_trace_deoptimization_verbose) {
21 OS::PrintErr("materializing double at %" Px ": %g\n", 21 OS::PrintErr("materializing double at %" Px ": %g\n",
22 reinterpret_cast<uword>(slot()), value()); 22 reinterpret_cast<uword>(slot()), value());
23 } 23 }
24 } 24 }
25 25
26 26
27 void DeferredMint::Materialize() { 27 void DeferredMint::Materialize(DeoptContext* deopt_context) {
28 RawMint** mint_slot = reinterpret_cast<RawMint**>(slot()); 28 RawMint** mint_slot = reinterpret_cast<RawMint**>(slot());
29 ASSERT(!Smi::IsValid64(value())); 29 ASSERT(!Smi::IsValid64(value()));
30 Mint& mint = Mint::Handle(); 30 Mint& mint = Mint::Handle();
31 mint ^= Integer::New(value()); 31 mint ^= Integer::New(value());
32 *mint_slot = mint.raw(); 32 *mint_slot = mint.raw();
33 33
34 if (FLAG_trace_deoptimization_verbose) { 34 if (FLAG_trace_deoptimization_verbose) {
35 OS::PrintErr("materializing mint at %" Px ": %" Pd64 "\n", 35 OS::PrintErr("materializing mint at %" Px ": %" Pd64 "\n",
36 reinterpret_cast<uword>(slot()), value()); 36 reinterpret_cast<uword>(slot()), value());
37 } 37 }
38 } 38 }
39 39
40 40
41 void DeferredFloat32x4::Materialize() { 41 void DeferredFloat32x4::Materialize(DeoptContext* deopt_context) {
42 RawFloat32x4** float32x4_slot = reinterpret_cast<RawFloat32x4**>(slot()); 42 RawFloat32x4** float32x4_slot = reinterpret_cast<RawFloat32x4**>(slot());
43 RawFloat32x4* raw_float32x4 = Float32x4::New(value()); 43 RawFloat32x4* raw_float32x4 = Float32x4::New(value());
44 *float32x4_slot = raw_float32x4; 44 *float32x4_slot = raw_float32x4;
45 45
46 if (FLAG_trace_deoptimization_verbose) { 46 if (FLAG_trace_deoptimization_verbose) {
47 float x = raw_float32x4->x(); 47 float x = raw_float32x4->x();
48 float y = raw_float32x4->y(); 48 float y = raw_float32x4->y();
49 float z = raw_float32x4->z(); 49 float z = raw_float32x4->z();
50 float w = raw_float32x4->w(); 50 float w = raw_float32x4->w();
51 OS::PrintErr("materializing Float32x4 at %" Px ": %g,%g,%g,%g\n", 51 OS::PrintErr("materializing Float32x4 at %" Px ": %g,%g,%g,%g\n",
52 reinterpret_cast<uword>(slot()), x, y, z, w); 52 reinterpret_cast<uword>(slot()), x, y, z, w);
53 } 53 }
54 } 54 }
55 55
56 56
57 void DeferredInt32x4::Materialize() { 57 void DeferredInt32x4::Materialize(DeoptContext* deopt_context) {
58 RawInt32x4** int32x4_slot = reinterpret_cast<RawInt32x4**>(slot()); 58 RawInt32x4** int32x4_slot = reinterpret_cast<RawInt32x4**>(slot());
59 RawInt32x4* raw_int32x4 = Int32x4::New(value()); 59 RawInt32x4* raw_int32x4 = Int32x4::New(value());
60 *int32x4_slot = raw_int32x4; 60 *int32x4_slot = raw_int32x4;
61 61
62 if (FLAG_trace_deoptimization_verbose) { 62 if (FLAG_trace_deoptimization_verbose) {
63 uint32_t x = raw_int32x4->x(); 63 uint32_t x = raw_int32x4->x();
64 uint32_t y = raw_int32x4->y(); 64 uint32_t y = raw_int32x4->y();
65 uint32_t z = raw_int32x4->z(); 65 uint32_t z = raw_int32x4->z();
66 uint32_t w = raw_int32x4->w(); 66 uint32_t w = raw_int32x4->w();
67 OS::PrintErr("materializing Int32x4 at %" Px ": %x,%x,%x,%x\n", 67 OS::PrintErr("materializing Int32x4 at %" Px ": %x,%x,%x,%x\n",
68 reinterpret_cast<uword>(slot()), x, y, z, w); 68 reinterpret_cast<uword>(slot()), x, y, z, w);
69 } 69 }
70 } 70 }
71 71
72 72
73 void DeferredObjectRef::Materialize() { 73 void DeferredObjectRef::Materialize(DeoptContext* deopt_context) {
74 // TODO(turnidge): Consider passing the deopt_context to materialize 74 DeferredObject* obj = deopt_context->GetDeferredObject(index());
75 // instead of accessing it through the current isolate. It would
76 // make it easier to test deferred object materialization in a unit
77 // test eventually.
78 DeferredObject* obj =
79 Isolate::Current()->deopt_context()->GetDeferredObject(index());
80 *slot() = obj->object(); 75 *slot() = obj->object();
81 if (FLAG_trace_deoptimization_verbose) { 76 if (FLAG_trace_deoptimization_verbose) {
82 OS::PrintErr("writing instance ref at %" Px ": %s\n", 77 OS::PrintErr("writing instance ref at %" Px ": %s\n",
83 reinterpret_cast<uword>(slot()), 78 reinterpret_cast<uword>(slot()),
84 Instance::Handle(obj->object()).ToCString()); 79 Instance::Handle(obj->object()).ToCString());
85 } 80 }
86 } 81 }
87 82
88 83
89 RawInstance* DeferredObject::object() { 84 RawInstance* DeferredObject::object() {
(...skipping 28 matching lines...) Expand all
118 OS::PrintErr(" %s <- %s\n", 113 OS::PrintErr(" %s <- %s\n",
119 String::Handle(field.name()).ToCString(), 114 String::Handle(field.name()).ToCString(),
120 value.ToCString()); 115 value.ToCString());
121 } 116 }
122 } 117 }
123 118
124 object_ = &obj; 119 object_ = &obj;
125 } 120 }
126 121
127 } // namespace dart 122 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/vm/deferred_objects.h ('k') | runtime/vm/deopt_instructions.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698