Index: runtime/lib/double.cc |
diff --git a/runtime/lib/double.cc b/runtime/lib/double.cc |
index 85d8d2bee256185a7e596fd010116519437617f6..b0e3ca68b35734b8561fa66f2c6eb3c3b20ac33b 100644 |
--- a/runtime/lib/double.cc |
+++ b/runtime/lib/double.cc |
@@ -7,6 +7,7 @@ |
#include "vm/bootstrap_natives.h" |
#include "vm/bigint_operations.h" |
+#include "vm/double_conversion.h" |
Ivan Posva
2011/12/02 21:09:29
Hard to review if the file is not here.
floitsch
2011/12/03 13:45:58
Done.
|
#include "vm/exceptions.h" |
#include "vm/native_entry.h" |
#include "vm/object.h" |
@@ -184,6 +185,33 @@ DEFINE_NATIVE_ENTRY(Double_toInt, 1) { |
} |
+DEFINE_NATIVE_ENTRY(Double_toStringAsFixed, 2) { |
+ const Double& arg = Double::CheckedHandle(arguments->At(0)); |
+ GET_NATIVE_ARGUMENT(Smi, fraction_digits, arguments->At(1)); |
+ double d = arg.value(); |
+ int fraction_digits_value = fraction_digits.Value(); |
+ String& result = String::Handle(); |
+ bool succeeded = DoubleToStringAsFixed(d, fraction_digits_value, result); |
+ if (!succeeded) { |
+ GrowableArray<const Object*> args; |
+ args.Add(&String::ZoneHandle(String::New( |
+ "Illegal arguments to double.toStringAsFixed"))); |
+ Exceptions::ThrowByType(Exceptions::kIllegalArgument, args); |
+ } |
+ arguments->SetReturn(result); |
+} |
+ |
+ |
+DEFINE_NATIVE_ENTRY(Double_toStringAsExponential, 2) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+DEFINE_NATIVE_ENTRY(Double_toStringAsPrecision, 2) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
DEFINE_NATIVE_ENTRY(Double_isInfinite, 1) { |
const Double& arg = Double::CheckedHandle(arguments->At(0)); |
if (isinf(arg.value())) { |