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

Side by Side Diff: runtime/lib/integers.cc

Issue 2468093007: clang-format runtime/lib (Closed)
Patch Set: Created 4 years, 1 month 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
« no previous file with comments | « runtime/lib/growable_array.cc ('k') | runtime/lib/invocation_mirror.h » ('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) 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/bootstrap_natives.h" 5 #include "vm/bootstrap_natives.h"
6 6
7 #include "include/dart_api.h" 7 #include "include/dart_api.h"
8 #include "vm/dart_entry.h" 8 #include "vm/dart_entry.h"
9 #include "vm/dart_api_impl.h" 9 #include "vm/dart_api_impl.h"
10 #include "vm/exceptions.h" 10 #include "vm/exceptions.h"
11 #include "vm/isolate.h" 11 #include "vm/isolate.h"
12 #include "vm/native_entry.h" 12 #include "vm/native_entry.h"
13 #include "vm/object.h" 13 #include "vm/object.h"
14 #include "vm/object_store.h" 14 #include "vm/object_store.h"
15 #include "vm/symbols.h" 15 #include "vm/symbols.h"
16 16
17 namespace dart { 17 namespace dart {
18 18
19 DEFINE_FLAG(bool, trace_intrinsified_natives, false, 19 DEFINE_FLAG(bool,
20 "Report if any of the intrinsified natives are called"); 20 trace_intrinsified_natives,
21 false,
22 "Report if any of the intrinsified natives are called");
21 23
22 // Smi natives. 24 // Smi natives.
23 25
24 // Returns false if integer is in wrong representation, e.g., as is a Bigint 26 // Returns false if integer is in wrong representation, e.g., as is a Bigint
25 // when it could have been a Smi. 27 // when it could have been a Smi.
26 static bool CheckInteger(const Integer& i) { 28 static bool CheckInteger(const Integer& i) {
27 if (i.IsBigint()) { 29 if (i.IsBigint()) {
28 const Bigint& bigint = Bigint::Cast(i); 30 const Bigint& bigint = Bigint::Cast(i);
29 return !bigint.FitsIntoSmi() && !bigint.FitsIntoInt64(); 31 return !bigint.FitsIntoSmi() && !bigint.FitsIntoInt64();
30 } 32 }
31 if (i.IsMint()) { 33 if (i.IsMint()) {
32 const Mint& mint = Mint::Cast(i); 34 const Mint& mint = Mint::Cast(i);
33 return !Smi::IsValid(mint.value()); 35 return !Smi::IsValid(mint.value());
34 } 36 }
35 return true; 37 return true;
36 } 38 }
37 39
38 40
39 DEFINE_NATIVE_ENTRY(Integer_bitAndFromInteger, 2) { 41 DEFINE_NATIVE_ENTRY(Integer_bitAndFromInteger, 2) {
40 const Integer& right = Integer::CheckedHandle(arguments->NativeArgAt(0)); 42 const Integer& right = Integer::CheckedHandle(arguments->NativeArgAt(0));
41 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1)); 43 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1));
42 ASSERT(CheckInteger(right)); 44 ASSERT(CheckInteger(right));
43 ASSERT(CheckInteger(left)); 45 ASSERT(CheckInteger(left));
44 if (FLAG_trace_intrinsified_natives) { 46 if (FLAG_trace_intrinsified_natives) {
45 OS::Print("Integer_bitAndFromInteger %s & %s\n", 47 OS::Print("Integer_bitAndFromInteger %s & %s\n", right.ToCString(),
46 right.ToCString(), left.ToCString()); 48 left.ToCString());
47 } 49 }
48 const Integer& result = Integer::Handle(left.BitOp(Token::kBIT_AND, right)); 50 const Integer& result = Integer::Handle(left.BitOp(Token::kBIT_AND, right));
49 // A null result indicates that a bigint operation is required. 51 // A null result indicates that a bigint operation is required.
50 return result.IsNull() ? result.raw() : result.AsValidInteger(); 52 return result.IsNull() ? result.raw() : result.AsValidInteger();
51 } 53 }
52 54
53 55
54 DEFINE_NATIVE_ENTRY(Integer_bitOrFromInteger, 2) { 56 DEFINE_NATIVE_ENTRY(Integer_bitOrFromInteger, 2) {
55 const Integer& right = Integer::CheckedHandle(arguments->NativeArgAt(0)); 57 const Integer& right = Integer::CheckedHandle(arguments->NativeArgAt(0));
56 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1)); 58 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1));
57 ASSERT(CheckInteger(right)); 59 ASSERT(CheckInteger(right));
58 ASSERT(CheckInteger(left)); 60 ASSERT(CheckInteger(left));
59 if (FLAG_trace_intrinsified_natives) { 61 if (FLAG_trace_intrinsified_natives) {
60 OS::Print("Integer_bitOrFromInteger %s | %s\n", 62 OS::Print("Integer_bitOrFromInteger %s | %s\n", left.ToCString(),
61 left.ToCString(), right.ToCString()); 63 right.ToCString());
62 } 64 }
63 const Integer& result = Integer::Handle(left.BitOp(Token::kBIT_OR, right)); 65 const Integer& result = Integer::Handle(left.BitOp(Token::kBIT_OR, right));
64 // A null result indicates that a bigint operation is required. 66 // A null result indicates that a bigint operation is required.
65 return result.IsNull() ? result.raw() : result.AsValidInteger(); 67 return result.IsNull() ? result.raw() : result.AsValidInteger();
66 } 68 }
67 69
68 70
69 DEFINE_NATIVE_ENTRY(Integer_bitXorFromInteger, 2) { 71 DEFINE_NATIVE_ENTRY(Integer_bitXorFromInteger, 2) {
70 const Integer& right = Integer::CheckedHandle(arguments->NativeArgAt(0)); 72 const Integer& right = Integer::CheckedHandle(arguments->NativeArgAt(0));
71 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1)); 73 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1));
72 ASSERT(CheckInteger(right)); 74 ASSERT(CheckInteger(right));
73 ASSERT(CheckInteger(left)); 75 ASSERT(CheckInteger(left));
74 if (FLAG_trace_intrinsified_natives) { 76 if (FLAG_trace_intrinsified_natives) {
75 OS::Print("Integer_bitXorFromInteger %s ^ %s\n", 77 OS::Print("Integer_bitXorFromInteger %s ^ %s\n", left.ToCString(),
76 left.ToCString(), right.ToCString()); 78 right.ToCString());
77 } 79 }
78 const Integer& result = Integer::Handle(left.BitOp(Token::kBIT_XOR, right)); 80 const Integer& result = Integer::Handle(left.BitOp(Token::kBIT_XOR, right));
79 // A null result indicates that a bigint operation is required. 81 // A null result indicates that a bigint operation is required.
80 return result.IsNull() ? result.raw() : result.AsValidInteger(); 82 return result.IsNull() ? result.raw() : result.AsValidInteger();
81 } 83 }
82 84
83 85
84 DEFINE_NATIVE_ENTRY(Integer_addFromInteger, 2) { 86 DEFINE_NATIVE_ENTRY(Integer_addFromInteger, 2) {
85 const Integer& right_int = Integer::CheckedHandle(arguments->NativeArgAt(0)); 87 const Integer& right_int = Integer::CheckedHandle(arguments->NativeArgAt(0));
86 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1)); 88 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1));
87 ASSERT(CheckInteger(right_int)); 89 ASSERT(CheckInteger(right_int));
88 ASSERT(CheckInteger(left_int)); 90 ASSERT(CheckInteger(left_int));
89 if (FLAG_trace_intrinsified_natives) { 91 if (FLAG_trace_intrinsified_natives) {
90 OS::Print("Integer_addFromInteger %s + %s\n", 92 OS::Print("Integer_addFromInteger %s + %s\n", left_int.ToCString(),
91 left_int.ToCString(), right_int.ToCString()); 93 right_int.ToCString());
92 } 94 }
93 const Integer& result = 95 const Integer& result =
94 Integer::Handle(left_int.ArithmeticOp(Token::kADD, right_int)); 96 Integer::Handle(left_int.ArithmeticOp(Token::kADD, right_int));
95 // A null result indicates that a bigint operation is required. 97 // A null result indicates that a bigint operation is required.
96 return result.IsNull() ? result.raw() : result.AsValidInteger(); 98 return result.IsNull() ? result.raw() : result.AsValidInteger();
97 } 99 }
98 100
99 101
100 DEFINE_NATIVE_ENTRY(Integer_subFromInteger, 2) { 102 DEFINE_NATIVE_ENTRY(Integer_subFromInteger, 2) {
101 const Integer& right_int = Integer::CheckedHandle(arguments->NativeArgAt(0)); 103 const Integer& right_int = Integer::CheckedHandle(arguments->NativeArgAt(0));
102 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1)); 104 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1));
103 ASSERT(CheckInteger(right_int)); 105 ASSERT(CheckInteger(right_int));
104 ASSERT(CheckInteger(left_int)); 106 ASSERT(CheckInteger(left_int));
105 if (FLAG_trace_intrinsified_natives) { 107 if (FLAG_trace_intrinsified_natives) {
106 OS::Print("Integer_subFromInteger %s - %s\n", 108 OS::Print("Integer_subFromInteger %s - %s\n", left_int.ToCString(),
107 left_int.ToCString(), right_int.ToCString()); 109 right_int.ToCString());
108 } 110 }
109 const Integer& result = 111 const Integer& result =
110 Integer::Handle(left_int.ArithmeticOp(Token::kSUB, right_int)); 112 Integer::Handle(left_int.ArithmeticOp(Token::kSUB, right_int));
111 // A null result indicates that a bigint operation is required. 113 // A null result indicates that a bigint operation is required.
112 return result.IsNull() ? result.raw() : result.AsValidInteger(); 114 return result.IsNull() ? result.raw() : result.AsValidInteger();
113 } 115 }
114 116
115 117
116 DEFINE_NATIVE_ENTRY(Integer_mulFromInteger, 2) { 118 DEFINE_NATIVE_ENTRY(Integer_mulFromInteger, 2) {
117 const Integer& right_int = Integer::CheckedHandle(arguments->NativeArgAt(0)); 119 const Integer& right_int = Integer::CheckedHandle(arguments->NativeArgAt(0));
118 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1)); 120 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1));
119 ASSERT(CheckInteger(right_int)); 121 ASSERT(CheckInteger(right_int));
120 ASSERT(CheckInteger(left_int)); 122 ASSERT(CheckInteger(left_int));
121 if (FLAG_trace_intrinsified_natives) { 123 if (FLAG_trace_intrinsified_natives) {
122 OS::Print("Integer_mulFromInteger %s * %s\n", 124 OS::Print("Integer_mulFromInteger %s * %s\n", left_int.ToCString(),
123 left_int.ToCString(), right_int.ToCString()); 125 right_int.ToCString());
124 } 126 }
125 const Integer& result = 127 const Integer& result =
126 Integer::Handle(left_int.ArithmeticOp(Token::kMUL, right_int)); 128 Integer::Handle(left_int.ArithmeticOp(Token::kMUL, right_int));
127 // A null result indicates that a bigint operation is required. 129 // A null result indicates that a bigint operation is required.
128 return result.IsNull() ? result.raw() : result.AsValidInteger(); 130 return result.IsNull() ? result.raw() : result.AsValidInteger();
129 } 131 }
130 132
131 133
132 DEFINE_NATIVE_ENTRY(Integer_truncDivFromInteger, 2) { 134 DEFINE_NATIVE_ENTRY(Integer_truncDivFromInteger, 2) {
133 const Integer& right_int = Integer::CheckedHandle(arguments->NativeArgAt(0)); 135 const Integer& right_int = Integer::CheckedHandle(arguments->NativeArgAt(0));
134 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1)); 136 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1));
135 ASSERT(CheckInteger(right_int)); 137 ASSERT(CheckInteger(right_int));
136 ASSERT(CheckInteger(left_int)); 138 ASSERT(CheckInteger(left_int));
137 ASSERT(!right_int.IsZero()); 139 ASSERT(!right_int.IsZero());
138 const Integer& result = 140 const Integer& result =
139 Integer::Handle(left_int.ArithmeticOp(Token::kTRUNCDIV, right_int)); 141 Integer::Handle(left_int.ArithmeticOp(Token::kTRUNCDIV, right_int));
140 // A null result indicates that a bigint operation is required. 142 // A null result indicates that a bigint operation is required.
141 return result.IsNull() ? result.raw() : result.AsValidInteger(); 143 return result.IsNull() ? result.raw() : result.AsValidInteger();
142 } 144 }
143 145
144 146
145 DEFINE_NATIVE_ENTRY(Integer_moduloFromInteger, 2) { 147 DEFINE_NATIVE_ENTRY(Integer_moduloFromInteger, 2) {
146 const Integer& right_int = Integer::CheckedHandle(arguments->NativeArgAt(0)); 148 const Integer& right_int = Integer::CheckedHandle(arguments->NativeArgAt(0));
147 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1)); 149 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1));
148 ASSERT(CheckInteger(right_int)); 150 ASSERT(CheckInteger(right_int));
149 ASSERT(CheckInteger(left_int)); 151 ASSERT(CheckInteger(left_int));
150 if (FLAG_trace_intrinsified_natives) { 152 if (FLAG_trace_intrinsified_natives) {
151 OS::Print("Integer_moduloFromInteger %s mod %s\n", 153 OS::Print("Integer_moduloFromInteger %s mod %s\n", left_int.ToCString(),
152 left_int.ToCString(), right_int.ToCString()); 154 right_int.ToCString());
153 } 155 }
154 if (right_int.IsZero()) { 156 if (right_int.IsZero()) {
155 // Should have been caught before calling into runtime. 157 // Should have been caught before calling into runtime.
156 UNIMPLEMENTED(); 158 UNIMPLEMENTED();
157 } 159 }
158 const Integer& result = 160 const Integer& result =
159 Integer::Handle(left_int.ArithmeticOp(Token::kMOD, right_int)); 161 Integer::Handle(left_int.ArithmeticOp(Token::kMOD, right_int));
160 // A null result indicates that a bigint operation is required. 162 // A null result indicates that a bigint operation is required.
161 return result.IsNull() ? result.raw() : result.AsValidInteger(); 163 return result.IsNull() ? result.raw() : result.AsValidInteger();
162 } 164 }
163 165
164 166
165 DEFINE_NATIVE_ENTRY(Integer_greaterThanFromInteger, 2) { 167 DEFINE_NATIVE_ENTRY(Integer_greaterThanFromInteger, 2) {
166 const Integer& right = Integer::CheckedHandle(arguments->NativeArgAt(0)); 168 const Integer& right = Integer::CheckedHandle(arguments->NativeArgAt(0));
167 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1)); 169 GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1));
168 ASSERT(CheckInteger(right)); 170 ASSERT(CheckInteger(right));
169 ASSERT(CheckInteger(left)); 171 ASSERT(CheckInteger(left));
170 if (FLAG_trace_intrinsified_natives) { 172 if (FLAG_trace_intrinsified_natives) {
171 OS::Print("Integer_greaterThanFromInteger %s > %s\n", 173 OS::Print("Integer_greaterThanFromInteger %s > %s\n", left.ToCString(),
172 left.ToCString(), right.ToCString()); 174 right.ToCString());
173 } 175 }
174 return Bool::Get(left.CompareWith(right) == 1).raw(); 176 return Bool::Get(left.CompareWith(right) == 1).raw();
175 } 177 }
176 178
177 179
178 DEFINE_NATIVE_ENTRY(Integer_equalToInteger, 2) { 180 DEFINE_NATIVE_ENTRY(Integer_equalToInteger, 2) {
179 const Integer& left = Integer::CheckedHandle(arguments->NativeArgAt(0)); 181 const Integer& left = Integer::CheckedHandle(arguments->NativeArgAt(0));
180 GET_NON_NULL_NATIVE_ARGUMENT(Integer, right, arguments->NativeArgAt(1)); 182 GET_NON_NULL_NATIVE_ARGUMENT(Integer, right, arguments->NativeArgAt(1));
181 ASSERT(CheckInteger(left)); 183 ASSERT(CheckInteger(left));
182 ASSERT(CheckInteger(right)); 184 ASSERT(CheckInteger(right));
183 if (FLAG_trace_intrinsified_natives) { 185 if (FLAG_trace_intrinsified_natives) {
184 OS::Print("Integer_equalToInteger %s == %s\n", 186 OS::Print("Integer_equalToInteger %s == %s\n", left.ToCString(),
185 left.ToCString(), right.ToCString()); 187 right.ToCString());
186 } 188 }
187 return Bool::Get(left.CompareWith(right) == 0).raw(); 189 return Bool::Get(left.CompareWith(right) == 0).raw();
188 } 190 }
189 191
190 192
191 static RawInteger* ParseInteger(const String& value) { 193 static RawInteger* ParseInteger(const String& value) {
192 // Used by both Integer_parse and Integer_fromEnvironment. 194 // Used by both Integer_parse and Integer_fromEnvironment.
193 if (value.IsOneByteString()) { 195 if (value.IsOneByteString()) {
194 // Quick conversion for unpadded integers in strings. 196 // Quick conversion for unpadded integers in strings.
195 const intptr_t len = value.Length(); 197 const intptr_t len = value.Length();
(...skipping 86 matching lines...) Expand 10 before | Expand all | Expand 10 after
282 ASSERT(value.IsBigint()); 284 ASSERT(value.IsBigint());
283 } 285 }
284 return Integer::null(); 286 return Integer::null();
285 } 287 }
286 288
287 289
288 DEFINE_NATIVE_ENTRY(Smi_bitAndFromSmi, 2) { 290 DEFINE_NATIVE_ENTRY(Smi_bitAndFromSmi, 2) {
289 const Smi& left = Smi::CheckedHandle(arguments->NativeArgAt(0)); 291 const Smi& left = Smi::CheckedHandle(arguments->NativeArgAt(0));
290 GET_NON_NULL_NATIVE_ARGUMENT(Smi, right, arguments->NativeArgAt(1)); 292 GET_NON_NULL_NATIVE_ARGUMENT(Smi, right, arguments->NativeArgAt(1));
291 if (FLAG_trace_intrinsified_natives) { 293 if (FLAG_trace_intrinsified_natives) {
292 OS::Print("Smi_bitAndFromSmi %s & %s\n", 294 OS::Print("Smi_bitAndFromSmi %s & %s\n", left.ToCString(),
293 left.ToCString(), right.ToCString()); 295 right.ToCString());
294 } 296 }
295 const Smi& left_value = Smi::Cast(left); 297 const Smi& left_value = Smi::Cast(left);
296 const Smi& right_value = Smi::Cast(right); 298 const Smi& right_value = Smi::Cast(right);
297 return Smi::New(left_value.Value() & right_value.Value()); 299 return Smi::New(left_value.Value() & right_value.Value());
298 } 300 }
299 301
300 302
301 DEFINE_NATIVE_ENTRY(Smi_shrFromInt, 2) { 303 DEFINE_NATIVE_ENTRY(Smi_shrFromInt, 2) {
302 const Smi& amount = Smi::CheckedHandle(arguments->NativeArgAt(0)); 304 const Smi& amount = Smi::CheckedHandle(arguments->NativeArgAt(0));
303 GET_NON_NULL_NATIVE_ARGUMENT(Integer, value, arguments->NativeArgAt(1)); 305 GET_NON_NULL_NATIVE_ARGUMENT(Integer, value, arguments->NativeArgAt(1));
304 ASSERT(CheckInteger(amount)); 306 ASSERT(CheckInteger(amount));
305 ASSERT(CheckInteger(value)); 307 ASSERT(CheckInteger(value));
306 const Integer& result = Integer::Handle( 308 const Integer& result =
307 ShiftOperationHelper(Token::kSHR, value, amount)); 309 Integer::Handle(ShiftOperationHelper(Token::kSHR, value, amount));
308 // A null result indicates that a bigint operation is required. 310 // A null result indicates that a bigint operation is required.
309 return result.IsNull() ? result.raw() : result.AsValidInteger(); 311 return result.IsNull() ? result.raw() : result.AsValidInteger();
310 } 312 }
311 313
312 314
313
314 DEFINE_NATIVE_ENTRY(Smi_shlFromInt, 2) { 315 DEFINE_NATIVE_ENTRY(Smi_shlFromInt, 2) {
315 const Smi& amount = Smi::CheckedHandle(arguments->NativeArgAt(0)); 316 const Smi& amount = Smi::CheckedHandle(arguments->NativeArgAt(0));
316 GET_NON_NULL_NATIVE_ARGUMENT(Integer, value, arguments->NativeArgAt(1)); 317 GET_NON_NULL_NATIVE_ARGUMENT(Integer, value, arguments->NativeArgAt(1));
317 ASSERT(CheckInteger(amount)); 318 ASSERT(CheckInteger(amount));
318 ASSERT(CheckInteger(value)); 319 ASSERT(CheckInteger(value));
319 if (FLAG_trace_intrinsified_natives) { 320 if (FLAG_trace_intrinsified_natives) {
320 OS::Print("Smi_shlFromInt: %s << %s\n", 321 OS::Print("Smi_shlFromInt: %s << %s\n", value.ToCString(),
321 value.ToCString(), amount.ToCString()); 322 amount.ToCString());
322 } 323 }
323 const Integer& result = Integer::Handle( 324 const Integer& result =
324 ShiftOperationHelper(Token::kSHL, value, amount)); 325 Integer::Handle(ShiftOperationHelper(Token::kSHL, value, amount));
325 // A null result indicates that a bigint operation is required. 326 // A null result indicates that a bigint operation is required.
326 return result.IsNull() ? result.raw() : result.AsValidInteger(); 327 return result.IsNull() ? result.raw() : result.AsValidInteger();
327 } 328 }
328 329
329 330
330 DEFINE_NATIVE_ENTRY(Smi_bitNegate, 1) { 331 DEFINE_NATIVE_ENTRY(Smi_bitNegate, 1) {
331 const Smi& operand = Smi::CheckedHandle(arguments->NativeArgAt(0)); 332 const Smi& operand = Smi::CheckedHandle(arguments->NativeArgAt(0));
332 if (FLAG_trace_intrinsified_natives) { 333 if (FLAG_trace_intrinsified_natives) {
333 OS::Print("Smi_bitNegate: %s\n", operand.ToCString()); 334 OS::Print("Smi_bitNegate: %s\n", operand.ToCString());
334 } 335 }
(...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after
410 DEFINE_NATIVE_ENTRY(Bigint_allocate, 4) { 411 DEFINE_NATIVE_ENTRY(Bigint_allocate, 4) {
411 // First arg is null type arguments, since class Bigint is not parameterized. 412 // First arg is null type arguments, since class Bigint is not parameterized.
412 const Bool& neg = Bool::CheckedHandle(arguments->NativeArgAt(1)); 413 const Bool& neg = Bool::CheckedHandle(arguments->NativeArgAt(1));
413 const Smi& used = Smi::CheckedHandle(arguments->NativeArgAt(2)); 414 const Smi& used = Smi::CheckedHandle(arguments->NativeArgAt(2));
414 const TypedData& digits = TypedData::CheckedHandle(arguments->NativeArgAt(3)); 415 const TypedData& digits = TypedData::CheckedHandle(arguments->NativeArgAt(3));
415 ASSERT(!digits.IsNull()); 416 ASSERT(!digits.IsNull());
416 return Bigint::New(neg.value(), used.Value(), digits); 417 return Bigint::New(neg.value(), used.Value(), digits);
417 } 418 }
418 419
419 } // namespace dart 420 } // namespace dart
OLDNEW
« no previous file with comments | « runtime/lib/growable_array.cc ('k') | runtime/lib/invocation_mirror.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698