Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
third_party
dart-lang
sdk
runtime
lib
math.cc
Go to the documentation of this file.
1
// Copyright (c) 2011, the Dart project authors. Please see the AUTHORS file
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.
4
5
#include <ctype.h>
// isspace.
6
7
#include "
vm/bootstrap_natives.h
"
8
9
#include "
vm/exceptions.h
"
10
#include "
vm/native_entry.h
"
11
#include "
vm/object.h
"
12
#include "
vm/symbols.h
"
13
14
namespace
dart
{
15
16
DEFINE_NATIVE_ENTRY
(Math_doublePow, 0, 2) {
17
const
double
operand =
18
Double::CheckedHandle(zone, arguments->NativeArgAt(0)).value();
19
GET_NON_NULL_NATIVE_ARGUMENT
(
Double
, exponent_object,
20
arguments->NativeArgAt(1));
21
const
double
exponent = exponent_object.value();
22
return
Double::New
(pow(operand, exponent));
23
}
24
25
DEFINE_NATIVE_ENTRY
(Random_initialSeed, 0, 0) {
26
Random
* rnd = isolate->random();
27
uint64_t seed = rnd->
NextUInt32
();
28
seed |= (
static_cast<
uint64_t
>
(rnd->
NextUInt32
()) << 32);
29
return
Integer::New
(seed);
30
}
31
32
DEFINE_NATIVE_ENTRY
(SecureRandom_getBytes, 0, 1) {
33
GET_NON_NULL_NATIVE_ARGUMENT
(
Smi
,
count
, arguments->NativeArgAt(0));
34
const
intptr_t n =
count
.Value();
35
ASSERT
((n > 0) && (n <= 8));
36
uint8_t
buffer
[8];
37
Dart_EntropySource
entropy_source =
Dart::entropy_source_callback
();
38
if
((entropy_source ==
nullptr
) || !entropy_source(
buffer
, n)) {
39
const
String
&
error
=
String::Handle
(
String::New
(
40
"No source of cryptographically secure random numbers available."
));
41
const
Array
&
args
=
Array::Handle
(
Array::New
(1));
42
args
.SetAt(0,
error
);
43
Exceptions::ThrowByType
(
Exceptions::kUnsupported
,
args
);
44
}
45
uint64_t
result
= 0;
46
for
(intptr_t i = 0; i < n; i++) {
47
result
= (
result
<< 8) |
buffer
[i];
48
}
49
return
Integer::New
(
result
);
50
}
51
52
}
// namespace dart
count
int count
Definition
FontMgrTest.cpp:50
bootstrap_natives.h
dart::Array
Definition
object.h:10794
dart::Array::New
static ArrayPtr New(intptr_t len, Heap::Space space=Heap::kNew)
Definition
object.h:10933
dart::Dart::entropy_source_callback
static Dart_EntropySource entropy_source_callback()
Definition
dart.h:135
dart::Double
Definition
object.h:10092
dart::Double::New
static DoublePtr New(double d, Heap::Space space=Heap::kNew)
Definition
object.cc:23481
dart::Exceptions::ThrowByType
static DART_NORETURN void ThrowByType(ExceptionType type, const Array &arguments)
Definition
exceptions.cc:1052
dart::Exceptions::kUnsupported
@ kUnsupported
Definition
exceptions.h:63
dart::Integer::New
static IntegerPtr New(const String &str, Heap::Space space=Heap::kNew)
Definition
object.cc:23063
dart::Object::Handle
static Object & Handle()
Definition
object.h:407
dart::Random
Definition
random.h:18
dart::Random::NextUInt32
uint32_t NextUInt32()
Definition
random.cc:73
dart::Smi
Definition
object.h:9963
dart::String
Definition
object.h:10137
dart::String::New
static StringPtr New(const char *cstr, Heap::Space space=Heap::kNew)
Definition
object.cc:23777
Dart_EntropySource
bool(* Dart_EntropySource)(uint8_t *buffer, intptr_t length)
Definition
dart_api.h:821
ASSERT
#define ASSERT(E)
Definition
entrypoints_verification_test.cc:25
exceptions.h
args
G_BEGIN_DECLS G_MODULE_EXPORT FlValue * args
Definition
fl_event_channel.h:89
buffer
static const uint8_t buffer[]
Definition
fl_pixel_buffer_texture_test.cc:44
error
const uint8_t uint32_t uint32_t GError ** error
Definition
fl_pixel_buffer_texture_test.cc:40
result
GAsyncResult * result
Definition
fl_text_input_plugin.cc:106
dart
Definition
dart_vm.cc:33
native_entry.h
DEFINE_NATIVE_ENTRY
#define DEFINE_NATIVE_ENTRY(name, type_argument_count, argument_count)
Definition
native_entry.h:39
GET_NON_NULL_NATIVE_ARGUMENT
#define GET_NON_NULL_NATIVE_ARGUMENT(type, name, value)
Definition
native_entry.h:74
object.h
symbols.h
Generated on Fri Apr 26 2024 06:14:44 for Flutter Engine by
1.9.8