From 14ff2110ce74944cc6ff9f922f55e940bc4285ad Mon Sep 17 00:00:00 2001 From: Daco Harkes Date: Thu, 13 Dec 2018 19:29:26 +0000 Subject: [PATCH] [vm] refactor native entry and native entry type arguments Change-Id: I03efbbf4340de1c8f23c60854ed991671ca2b647 Reviewed-on: https://dart-review.googlesource.com/c/87077 Commit-Queue: Daco Harkes Reviewed-by: Samir Jindel --- runtime/lib/array.cc | 14 +-- runtime/lib/async.cc | 2 +- runtime/lib/bool.cc | 2 +- runtime/lib/class_id.cc | 2 +- runtime/lib/date.cc | 8 +- runtime/lib/developer.cc | 22 ++--- runtime/lib/double.cc | 54 +++++------ runtime/lib/errors.cc | 10 +- runtime/lib/function.cc | 8 +- runtime/lib/growable_array.cc | 18 ++-- runtime/lib/identical.cc | 2 +- runtime/lib/integers.cc | 38 ++++---- runtime/lib/isolate.cc | 30 +++--- runtime/lib/linked_hash_map.cc | 20 ++-- runtime/lib/math.cc | 30 +++--- runtime/lib/mirrors.cc | 100 ++++++++++---------- runtime/lib/object.cc | 51 +++++----- runtime/lib/profiler.cc | 10 +- runtime/lib/regexp.cc | 14 +-- runtime/lib/simd128.cc | 166 ++++++++++++++++----------------- runtime/lib/stacktrace.cc | 8 +- runtime/lib/stopwatch.cc | 4 +- runtime/lib/string.cc | 38 ++++---- runtime/lib/timeline.cc | 16 ++-- runtime/lib/typed_data.cc | 10 +- runtime/lib/uri.cc | 2 +- runtime/lib/vmservice.cc | 22 ++--- runtime/lib/weak_property.cc | 8 +- runtime/vm/native_arguments.h | 24 ++++- runtime/vm/native_entry.h | 4 +- 30 files changed, 380 insertions(+), 357 deletions(-) diff --git a/runtime/lib/array.cc b/runtime/lib/array.cc index 33227454a97..d143a9821a2 100644 --- a/runtime/lib/array.cc +++ b/runtime/lib/array.cc @@ -10,19 +10,19 @@ namespace dart { -DEFINE_NATIVE_ENTRY(List_new, 2) { +DEFINE_NATIVE_ENTRY(List_new, 0, 2) { // This function is handled by flow-graph builder. UNREACHABLE(); return Object::null(); } -DEFINE_NATIVE_ENTRY(List_allocate, 2) { +DEFINE_NATIVE_ENTRY(List_allocate, 0, 2) { // Implemented in FlowGraphBuilder::VisitNativeBody. UNREACHABLE(); return Object::null(); } -DEFINE_NATIVE_ENTRY(List_getIndexed, 2) { +DEFINE_NATIVE_ENTRY(List_getIndexed, 0, 2) { const Array& array = Array::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, index, arguments->NativeArgAt(1)); if ((index.Value() < 0) || (index.Value() >= array.Length())) { @@ -31,7 +31,7 @@ DEFINE_NATIVE_ENTRY(List_getIndexed, 2) { return array.At(index.Value()); } -DEFINE_NATIVE_ENTRY(List_setIndexed, 3) { +DEFINE_NATIVE_ENTRY(List_setIndexed, 0, 3) { const Array& array = Array::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, index, arguments->NativeArgAt(1)); const Instance& value = @@ -43,13 +43,13 @@ DEFINE_NATIVE_ENTRY(List_setIndexed, 3) { return Object::null(); } -DEFINE_NATIVE_ENTRY(List_getLength, 1) { +DEFINE_NATIVE_ENTRY(List_getLength, 0, 1) { const Array& array = Array::CheckedHandle(zone, arguments->NativeArgAt(0)); return Smi::New(array.Length()); } // ObjectArray src, int start, int count, bool needTypeArgument. -DEFINE_NATIVE_ENTRY(List_slice, 4) { +DEFINE_NATIVE_ENTRY(List_slice, 0, 4) { const Array& src = Array::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, start, arguments->NativeArgAt(1)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, count, arguments->NativeArgAt(2)); @@ -70,7 +70,7 @@ DEFINE_NATIVE_ENTRY(List_slice, 4) { } // Private factory, expects correct arguments. -DEFINE_NATIVE_ENTRY(ImmutableList_from, 4) { +DEFINE_NATIVE_ENTRY(ImmutableList_from, 0, 4) { // Ignore first argument of a thsi factory (type argument). const Array& from_array = Array::CheckedHandle(zone, arguments->NativeArgAt(1)); diff --git a/runtime/lib/async.cc b/runtime/lib/async.cc index 2799419ed8b..5a11f345907 100644 --- a/runtime/lib/async.cc +++ b/runtime/lib/async.cc @@ -11,7 +11,7 @@ namespace dart { -DEFINE_NATIVE_ENTRY(AsyncStarMoveNext_debuggerStepCheck, 1) { +DEFINE_NATIVE_ENTRY(AsyncStarMoveNext_debuggerStepCheck, 0, 1) { #if !defined(PRODUCT) GET_NON_NULL_NATIVE_ARGUMENT(Closure, async_op, arguments->NativeArgAt(0)); Debugger* debugger = isolate->debugger(); diff --git a/runtime/lib/bool.cc b/runtime/lib/bool.cc index dc2b00f7800..c52fd7199a6 100644 --- a/runtime/lib/bool.cc +++ b/runtime/lib/bool.cc @@ -16,7 +16,7 @@ namespace dart { -DEFINE_NATIVE_ENTRY(Bool_fromEnvironment, 3) { +DEFINE_NATIVE_ENTRY(Bool_fromEnvironment, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(String, name, arguments->NativeArgAt(1)); GET_NATIVE_ARGUMENT(Bool, default_value, arguments->NativeArgAt(2)); // Call the embedder to supply us with the environment. diff --git a/runtime/lib/class_id.cc b/runtime/lib/class_id.cc index 2d9f67d3def..c0f5295bd82 100644 --- a/runtime/lib/class_id.cc +++ b/runtime/lib/class_id.cc @@ -7,7 +7,7 @@ namespace dart { -DEFINE_NATIVE_ENTRY(ClassID_getID, 1) { +DEFINE_NATIVE_ENTRY(ClassID_getID, 0, 1) { const Instance& instance = Instance::CheckedHandle(zone, arguments->NativeArgAt(0)); return Smi::New(instance.GetClassId()); diff --git a/runtime/lib/date.cc b/runtime/lib/date.cc index 3f694d35616..e605c051692 100644 --- a/runtime/lib/date.cc +++ b/runtime/lib/date.cc @@ -14,7 +14,7 @@ namespace dart { static int64_t kMaxAllowedSeconds = kMaxInt32; -DEFINE_NATIVE_ENTRY(DateTime_timeZoneName, 1) { +DEFINE_NATIVE_ENTRY(DateTime_timeZoneName, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Integer, dart_seconds, arguments->NativeArgAt(0)); int64_t seconds = dart_seconds.AsInt64Value(); @@ -25,7 +25,7 @@ DEFINE_NATIVE_ENTRY(DateTime_timeZoneName, 1) { return String::New(name); } -DEFINE_NATIVE_ENTRY(DateTime_timeZoneOffsetInSeconds, 1) { +DEFINE_NATIVE_ENTRY(DateTime_timeZoneOffsetInSeconds, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Integer, dart_seconds, arguments->NativeArgAt(0)); int64_t seconds = dart_seconds.AsInt64Value(); @@ -36,12 +36,12 @@ DEFINE_NATIVE_ENTRY(DateTime_timeZoneOffsetInSeconds, 1) { return Integer::New(offset); } -DEFINE_NATIVE_ENTRY(DateTime_localTimeZoneAdjustmentInSeconds, 0) { +DEFINE_NATIVE_ENTRY(DateTime_localTimeZoneAdjustmentInSeconds, 0, 0) { int adjustment = OS::GetLocalTimeZoneAdjustmentInSeconds(); return Integer::New(adjustment); } -DEFINE_NATIVE_ENTRY(DateTime_currentTimeMicros, 0) { +DEFINE_NATIVE_ENTRY(DateTime_currentTimeMicros, 0, 0) { return Integer::New(OS::GetCurrentTimeMicros()); } diff --git a/runtime/lib/developer.cc b/runtime/lib/developer.cc index e8056b477e8..defe8849086 100644 --- a/runtime/lib/developer.cc +++ b/runtime/lib/developer.cc @@ -19,7 +19,7 @@ namespace dart { // Native implementations for the dart:developer library. -DEFINE_NATIVE_ENTRY(Developer_debugger, 2) { +DEFINE_NATIVE_ENTRY(Developer_debugger, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Bool, when, arguments->NativeArgAt(0)); #if !defined(PRODUCT) GET_NATIVE_ARGUMENT(String, msg, arguments->NativeArgAt(1)); @@ -34,7 +34,7 @@ DEFINE_NATIVE_ENTRY(Developer_debugger, 2) { return when.raw(); } -DEFINE_NATIVE_ENTRY(Developer_inspect, 1) { +DEFINE_NATIVE_ENTRY(Developer_inspect, 0, 1) { GET_NATIVE_ARGUMENT(Instance, inspectee, arguments->NativeArgAt(0)); #ifndef PRODUCT if (FLAG_support_service) { @@ -44,7 +44,7 @@ DEFINE_NATIVE_ENTRY(Developer_inspect, 1) { return inspectee.raw(); } -DEFINE_NATIVE_ENTRY(Developer_log, 8) { +DEFINE_NATIVE_ENTRY(Developer_log, 0, 8) { #if defined(PRODUCT) return Object::null(); #else @@ -66,7 +66,7 @@ DEFINE_NATIVE_ENTRY(Developer_log, 8) { #endif // PRODUCT } -DEFINE_NATIVE_ENTRY(Developer_postEvent, 2) { +DEFINE_NATIVE_ENTRY(Developer_postEvent, 0, 2) { #if defined(PRODUCT) return Object::null(); #else @@ -80,7 +80,7 @@ DEFINE_NATIVE_ENTRY(Developer_postEvent, 2) { #endif // PRODUCT } -DEFINE_NATIVE_ENTRY(Developer_lookupExtension, 1) { +DEFINE_NATIVE_ENTRY(Developer_lookupExtension, 0, 1) { #if defined(PRODUCT) return Object::null(); #else @@ -92,7 +92,7 @@ DEFINE_NATIVE_ENTRY(Developer_lookupExtension, 1) { #endif // PRODUCT } -DEFINE_NATIVE_ENTRY(Developer_registerExtension, 2) { +DEFINE_NATIVE_ENTRY(Developer_registerExtension, 0, 2) { #if defined(PRODUCT) return Object::null(); #else @@ -112,7 +112,7 @@ DEFINE_NATIVE_ENTRY(Developer_registerExtension, 2) { #endif // PRODUCT } -DEFINE_NATIVE_ENTRY(Developer_getServiceMajorVersion, 0) { +DEFINE_NATIVE_ENTRY(Developer_getServiceMajorVersion, 0, 0) { #if defined(PRODUCT) return Smi::New(0); #else @@ -120,7 +120,7 @@ DEFINE_NATIVE_ENTRY(Developer_getServiceMajorVersion, 0) { #endif } -DEFINE_NATIVE_ENTRY(Developer_getServiceMinorVersion, 0) { +DEFINE_NATIVE_ENTRY(Developer_getServiceMinorVersion, 0, 0) { #if defined(PRODUCT) return Smi::New(0); #else @@ -134,7 +134,7 @@ static void SendNull(const SendPort& port) { Message::kNormalPriority)); } -DEFINE_NATIVE_ENTRY(Developer_getServerInfo, 1) { +DEFINE_NATIVE_ENTRY(Developer_getServerInfo, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(SendPort, port, arguments->NativeArgAt(0)); #if defined(PRODUCT) SendNull(port); @@ -149,7 +149,7 @@ DEFINE_NATIVE_ENTRY(Developer_getServerInfo, 1) { #endif } -DEFINE_NATIVE_ENTRY(Developer_webServerControl, 2) { +DEFINE_NATIVE_ENTRY(Developer_webServerControl, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(SendPort, port, arguments->NativeArgAt(0)); #if defined(PRODUCT) SendNull(port); @@ -165,7 +165,7 @@ DEFINE_NATIVE_ENTRY(Developer_webServerControl, 2) { #endif } -DEFINE_NATIVE_ENTRY(Developer_getIsolateIDFromSendPort, 1) { +DEFINE_NATIVE_ENTRY(Developer_getIsolateIDFromSendPort, 0, 1) { #if defined(PRODUCT) return Object::null(); #else diff --git a/runtime/lib/double.cc b/runtime/lib/double.cc index eb24241dfb0..fb2f90323ee 100644 --- a/runtime/lib/double.cc +++ b/runtime/lib/double.cc @@ -17,7 +17,7 @@ namespace dart { -DEFINE_NATIVE_ENTRY(Double_doubleFromInteger, 2) { +DEFINE_NATIVE_ENTRY(Double_doubleFromInteger, 0, 2) { ASSERT( TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)).IsNull()); const Integer& value = @@ -28,7 +28,7 @@ DEFINE_NATIVE_ENTRY(Double_doubleFromInteger, 2) { return Double::New(value.AsDoubleValue()); } -DEFINE_NATIVE_ENTRY(Double_add, 2) { +DEFINE_NATIVE_ENTRY(Double_add, 0, 2) { double left = Double::CheckedHandle(zone, arguments->NativeArgAt(0)).value(); GET_NON_NULL_NATIVE_ARGUMENT(Double, right_object, arguments->NativeArgAt(1)); double right = right_object.value(); @@ -38,7 +38,7 @@ DEFINE_NATIVE_ENTRY(Double_add, 2) { return Double::New(left + right); } -DEFINE_NATIVE_ENTRY(Double_sub, 2) { +DEFINE_NATIVE_ENTRY(Double_sub, 0, 2) { double left = Double::CheckedHandle(zone, arguments->NativeArgAt(0)).value(); GET_NON_NULL_NATIVE_ARGUMENT(Double, right_object, arguments->NativeArgAt(1)); double right = right_object.value(); @@ -48,7 +48,7 @@ DEFINE_NATIVE_ENTRY(Double_sub, 2) { return Double::New(left - right); } -DEFINE_NATIVE_ENTRY(Double_mul, 2) { +DEFINE_NATIVE_ENTRY(Double_mul, 0, 2) { double left = Double::CheckedHandle(zone, arguments->NativeArgAt(0)).value(); GET_NON_NULL_NATIVE_ARGUMENT(Double, right_object, arguments->NativeArgAt(1)); double right = right_object.value(); @@ -58,7 +58,7 @@ DEFINE_NATIVE_ENTRY(Double_mul, 2) { return Double::New(left * right); } -DEFINE_NATIVE_ENTRY(Double_div, 2) { +DEFINE_NATIVE_ENTRY(Double_div, 0, 2) { double left = Double::CheckedHandle(zone, arguments->NativeArgAt(0)).value(); GET_NON_NULL_NATIVE_ARGUMENT(Double, right_object, arguments->NativeArgAt(1)); double right = right_object.value(); @@ -85,7 +85,7 @@ static RawInteger* DoubleToInteger(double val, const char* error_msg) { return Integer::New(ival); } -DEFINE_NATIVE_ENTRY(Double_hashCode, 1) { +DEFINE_NATIVE_ENTRY(Double_hashCode, 0, 1) { double val = Double::CheckedHandle(zone, arguments->NativeArgAt(0)).value(); if (FLAG_trace_intrinsified_natives) { OS::PrintErr("Double_hashCode %f\n", val); @@ -102,7 +102,7 @@ DEFINE_NATIVE_ENTRY(Double_hashCode, 1) { return Smi::New(((uval >> 32) ^ (uval)) & kSmiMax); } -DEFINE_NATIVE_ENTRY(Double_trunc_div, 2) { +DEFINE_NATIVE_ENTRY(Double_trunc_div, 0, 2) { double left = Double::CheckedHandle(zone, arguments->NativeArgAt(0)).value(); GET_NON_NULL_NATIVE_ARGUMENT(Double, right_object, arguments->NativeArgAt(1)); double right = right_object.value(); @@ -113,21 +113,21 @@ DEFINE_NATIVE_ENTRY(Double_trunc_div, 2) { "Result of truncating division is Infinity or NaN"); } -DEFINE_NATIVE_ENTRY(Double_modulo, 2) { +DEFINE_NATIVE_ENTRY(Double_modulo, 0, 2) { double left = Double::CheckedHandle(zone, arguments->NativeArgAt(0)).value(); GET_NON_NULL_NATIVE_ARGUMENT(Double, right_object, arguments->NativeArgAt(1)); double right = right_object.value(); return Double::New(DartModulo(left, right)); } -DEFINE_NATIVE_ENTRY(Double_remainder, 2) { +DEFINE_NATIVE_ENTRY(Double_remainder, 0, 2) { double left = Double::CheckedHandle(zone, arguments->NativeArgAt(0)).value(); GET_NON_NULL_NATIVE_ARGUMENT(Double, right_object, arguments->NativeArgAt(1)); double right = right_object.value(); return Double::New(fmod_ieee(left, right)); } -DEFINE_NATIVE_ENTRY(Double_greaterThan, 2) { +DEFINE_NATIVE_ENTRY(Double_greaterThan, 0, 2) { const Double& left = Double::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Double, right, arguments->NativeArgAt(1)); bool result = right.IsNull() ? false : (left.value() > right.value()); @@ -138,13 +138,13 @@ DEFINE_NATIVE_ENTRY(Double_greaterThan, 2) { return Bool::Get(result).raw(); } -DEFINE_NATIVE_ENTRY(Double_greaterThanFromInteger, 2) { +DEFINE_NATIVE_ENTRY(Double_greaterThanFromInteger, 0, 2) { const Double& right = Double::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1)); return Bool::Get(left.AsDoubleValue() > right.value()).raw(); } -DEFINE_NATIVE_ENTRY(Double_equal, 2) { +DEFINE_NATIVE_ENTRY(Double_equal, 0, 2) { const Double& left = Double::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Double, right, arguments->NativeArgAt(1)); bool result = right.IsNull() ? false : (left.value() == right.value()); @@ -155,28 +155,28 @@ DEFINE_NATIVE_ENTRY(Double_equal, 2) { return Bool::Get(result).raw(); } -DEFINE_NATIVE_ENTRY(Double_equalToInteger, 2) { +DEFINE_NATIVE_ENTRY(Double_equalToInteger, 0, 2) { const Double& left = Double::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, right, arguments->NativeArgAt(1)); return Bool::Get(left.value() == right.AsDoubleValue()).raw(); } -DEFINE_NATIVE_ENTRY(Double_round, 1) { +DEFINE_NATIVE_ENTRY(Double_round, 0, 1) { const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0)); return Double::New(round(arg.value())); } -DEFINE_NATIVE_ENTRY(Double_floor, 1) { +DEFINE_NATIVE_ENTRY(Double_floor, 0, 1) { const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0)); return Double::New(floor(arg.value())); } -DEFINE_NATIVE_ENTRY(Double_ceil, 1) { +DEFINE_NATIVE_ENTRY(Double_ceil, 0, 1) { const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0)); return Double::New(ceil(arg.value())); } -DEFINE_NATIVE_ENTRY(Double_truncate, 1) { +DEFINE_NATIVE_ENTRY(Double_truncate, 0, 1) { const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0)); return Double::New(trunc(arg.value())); } @@ -186,12 +186,12 @@ DEFINE_NATIVE_ENTRY(Double_truncate, 1) { #pragma GCC diagnostic ignored "-Wold-style-cast" #endif -DEFINE_NATIVE_ENTRY(Double_toInt, 1) { +DEFINE_NATIVE_ENTRY(Double_toInt, 0, 1) { const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0)); return DoubleToInteger(arg.value(), "Infinity or NaN toInt"); } -DEFINE_NATIVE_ENTRY(Double_parse, 3) { +DEFINE_NATIVE_ENTRY(Double_parse, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(String, value, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, startValue, arguments->NativeArgAt(1)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, endValue, arguments->NativeArgAt(2)); @@ -210,12 +210,12 @@ DEFINE_NATIVE_ENTRY(Double_parse, 3) { return Object::null(); } -DEFINE_NATIVE_ENTRY(Double_toString, 1) { +DEFINE_NATIVE_ENTRY(Double_toString, 0, 1) { const Number& number = Number::CheckedHandle(zone, arguments->NativeArgAt(0)); return number.ToString(Heap::kNew); } -DEFINE_NATIVE_ENTRY(Double_toStringAsFixed, 2) { +DEFINE_NATIVE_ENTRY(Double_toStringAsFixed, 0, 2) { // The boundaries are exclusive. static const double kLowerBoundary = -1e21; static const double kUpperBoundary = 1e21; @@ -234,7 +234,7 @@ DEFINE_NATIVE_ENTRY(Double_toStringAsFixed, 2) { } } -DEFINE_NATIVE_ENTRY(Double_toStringAsExponential, 2) { +DEFINE_NATIVE_ENTRY(Double_toStringAsExponential, 0, 2) { const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, fraction_digits, arguments->NativeArgAt(1)); double d = arg.value(); @@ -249,7 +249,7 @@ DEFINE_NATIVE_ENTRY(Double_toStringAsExponential, 2) { } } -DEFINE_NATIVE_ENTRY(Double_toStringAsPrecision, 2) { +DEFINE_NATIVE_ENTRY(Double_toStringAsPrecision, 0, 2) { const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, precision, arguments->NativeArgAt(1)); double d = arg.value(); @@ -263,24 +263,24 @@ DEFINE_NATIVE_ENTRY(Double_toStringAsPrecision, 2) { } } -DEFINE_NATIVE_ENTRY(Double_getIsInfinite, 1) { +DEFINE_NATIVE_ENTRY(Double_getIsInfinite, 0, 1) { const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0)); return Bool::Get(isinf(arg.value())).raw(); } -DEFINE_NATIVE_ENTRY(Double_getIsNaN, 1) { +DEFINE_NATIVE_ENTRY(Double_getIsNaN, 0, 1) { const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0)); return Bool::Get(isnan(arg.value())).raw(); } -DEFINE_NATIVE_ENTRY(Double_getIsNegative, 1) { +DEFINE_NATIVE_ENTRY(Double_getIsNegative, 0, 1) { const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0)); // Include negative zero, infinity. double dval = arg.value(); return Bool::Get(signbit(dval) && !isnan(dval)).raw(); } -DEFINE_NATIVE_ENTRY(Double_flipSignBit, 1) { +DEFINE_NATIVE_ENTRY(Double_flipSignBit, 0, 1) { const Double& arg = Double::CheckedHandle(zone, arguments->NativeArgAt(0)); const double in_val = arg.value(); const int64_t bits = bit_cast(in_val) ^ kSignBitDouble; diff --git a/runtime/lib/errors.cc b/runtime/lib/errors.cc index dc136fd74b0..54e61eb60a3 100644 --- a/runtime/lib/errors.cc +++ b/runtime/lib/errors.cc @@ -68,7 +68,7 @@ static RawScript* FindScript(DartFrameIterator* iterator) { // Arg1: index of the first token after the failed assertion. // Arg2: Message object or null. // Return value: none, throws an exception. -DEFINE_NATIVE_ENTRY(AssertionError_throwNew, 3) { +DEFINE_NATIVE_ENTRY(AssertionError_throwNew, 0, 3) { // No need to type check the arguments. This function can only be called // internally from the VM. const TokenPosition assertion_start = TokenPosition( @@ -113,7 +113,7 @@ DEFINE_NATIVE_ENTRY(AssertionError_throwNew, 3) { // Arg2: dst type. // Arg3: dst name. // Return value: none, throws an exception. -DEFINE_NATIVE_ENTRY(TypeError_throwNew, 4) { +DEFINE_NATIVE_ENTRY(TypeError_throwNew, 0, 4) { // No need to type check the arguments. This function can only be called // internally from the VM. const TokenPosition location = TokenPosition( @@ -134,7 +134,7 @@ DEFINE_NATIVE_ENTRY(TypeError_throwNew, 4) { // Allocate and throw a new FallThroughError. // Arg0: index of the case clause token into which we fall through. // Return value: none, throws an exception. -DEFINE_NATIVE_ENTRY(FallThroughError_throwNew, 1) { +DEFINE_NATIVE_ENTRY(FallThroughError_throwNew, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Smi, smi_pos, arguments->NativeArgAt(0)); TokenPosition fallthrough_pos = TokenPosition(smi_pos.Value()); @@ -159,7 +159,7 @@ DEFINE_NATIVE_ENTRY(FallThroughError_throwNew, 1) { // Arg0: Token position of allocation statement. // Arg1: class name of the abstract class that cannot be instantiated. // Return value: none, throws an exception. -DEFINE_NATIVE_ENTRY(AbstractClassInstantiationError_throwNew, 2) { +DEFINE_NATIVE_ENTRY(AbstractClassInstantiationError_throwNew, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Smi, smi_pos, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(String, class_name, arguments->NativeArgAt(1)); TokenPosition error_pos = TokenPosition(smi_pos.Value()); @@ -183,7 +183,7 @@ DEFINE_NATIVE_ENTRY(AbstractClassInstantiationError_throwNew, 2) { } // Rethrow an error with a stacktrace. -DEFINE_NATIVE_ENTRY(Async_rethrow, 2) { +DEFINE_NATIVE_ENTRY(Async_rethrow, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, error, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Instance, stacktrace, arguments->NativeArgAt(1)); Exceptions::ReThrow(thread, error, stacktrace); diff --git a/runtime/lib/function.cc b/runtime/lib/function.cc index 0a502601ff0..43112381189 100644 --- a/runtime/lib/function.cc +++ b/runtime/lib/function.cc @@ -13,7 +13,7 @@ namespace dart { -DEFINE_NATIVE_ENTRY(Function_apply, 2) { +DEFINE_NATIVE_ENTRY(Function_apply, 0, 2) { const int kTypeArgsLen = 0; // TODO(regis): Add support for generic function. const Array& fun_arguments = Array::CheckedHandle(zone, arguments->NativeArgAt(0)); @@ -30,7 +30,7 @@ DEFINE_NATIVE_ENTRY(Function_apply, 2) { return result.raw(); } -DEFINE_NATIVE_ENTRY(Closure_equals, 2) { +DEFINE_NATIVE_ENTRY(Closure_equals, 0, 2) { const Closure& receiver = Closure::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NATIVE_ARGUMENT(Instance, other, arguments->NativeArgAt(1)); @@ -65,13 +65,13 @@ DEFINE_NATIVE_ENTRY(Closure_equals, 2) { return Bool::False().raw(); } -DEFINE_NATIVE_ENTRY(Closure_computeHash, 1) { +DEFINE_NATIVE_ENTRY(Closure_computeHash, 0, 1) { const Closure& receiver = Closure::CheckedHandle(zone, arguments->NativeArgAt(0)); return Smi::New(receiver.ComputeHash()); } -DEFINE_NATIVE_ENTRY(Closure_clone, 1) { +DEFINE_NATIVE_ENTRY(Closure_clone, 0, 1) { const Closure& receiver = Closure::CheckedHandle(zone, arguments->NativeArgAt(0)); const TypeArguments& instantiator_type_arguments = diff --git a/runtime/lib/growable_array.cc b/runtime/lib/growable_array.cc index 1d57b7ac7ff..71d9f2a4c51 100644 --- a/runtime/lib/growable_array.cc +++ b/runtime/lib/growable_array.cc @@ -11,7 +11,7 @@ namespace dart { -DEFINE_NATIVE_ENTRY(GrowableList_allocate, 2) { +DEFINE_NATIVE_ENTRY(GrowableList_allocate, 0, 2) { const TypeArguments& type_arguments = TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Array, data, arguments->NativeArgAt(1)); @@ -27,7 +27,7 @@ DEFINE_NATIVE_ENTRY(GrowableList_allocate, 2) { return new_array.raw(); } -DEFINE_NATIVE_ENTRY(GrowableList_getIndexed, 2) { +DEFINE_NATIVE_ENTRY(GrowableList_getIndexed, 0, 2) { const GrowableObjectArray& array = GrowableObjectArray::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, index, arguments->NativeArgAt(1)); @@ -38,7 +38,7 @@ DEFINE_NATIVE_ENTRY(GrowableList_getIndexed, 2) { return obj.raw(); } -DEFINE_NATIVE_ENTRY(GrowableList_setIndexed, 3) { +DEFINE_NATIVE_ENTRY(GrowableList_setIndexed, 0, 3) { const GrowableObjectArray& array = GrowableObjectArray::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, index, arguments->NativeArgAt(1)); @@ -50,19 +50,19 @@ DEFINE_NATIVE_ENTRY(GrowableList_setIndexed, 3) { return Object::null(); } -DEFINE_NATIVE_ENTRY(GrowableList_getLength, 1) { +DEFINE_NATIVE_ENTRY(GrowableList_getLength, 0, 1) { const GrowableObjectArray& array = GrowableObjectArray::CheckedHandle(zone, arguments->NativeArgAt(0)); return Smi::New(array.Length()); } -DEFINE_NATIVE_ENTRY(GrowableList_getCapacity, 1) { +DEFINE_NATIVE_ENTRY(GrowableList_getCapacity, 0, 1) { const GrowableObjectArray& array = GrowableObjectArray::CheckedHandle(zone, arguments->NativeArgAt(0)); return Smi::New(array.Capacity()); } -DEFINE_NATIVE_ENTRY(GrowableList_setLength, 2) { +DEFINE_NATIVE_ENTRY(GrowableList_setLength, 0, 2) { const GrowableObjectArray& array = GrowableObjectArray::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(1)); @@ -71,7 +71,7 @@ DEFINE_NATIVE_ENTRY(GrowableList_setLength, 2) { return Object::null(); } -DEFINE_NATIVE_ENTRY(GrowableList_setData, 2) { +DEFINE_NATIVE_ENTRY(GrowableList_setData, 0, 2) { const GrowableObjectArray& array = GrowableObjectArray::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Array, data, arguments->NativeArgAt(1)); @@ -80,13 +80,13 @@ DEFINE_NATIVE_ENTRY(GrowableList_setData, 2) { return Object::null(); } -DEFINE_NATIVE_ENTRY(Internal_makeListFixedLength, 1) { +DEFINE_NATIVE_ENTRY(Internal_makeListFixedLength, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(GrowableObjectArray, array, arguments->NativeArgAt(0)); return Array::MakeFixedLength(array, /* unique = */ true); } -DEFINE_NATIVE_ENTRY(Internal_makeFixedListUnmodifiable, 1) { +DEFINE_NATIVE_ENTRY(Internal_makeFixedListUnmodifiable, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Array, array, arguments->NativeArgAt(0)); array.MakeImmutable(); return array.raw(); diff --git a/runtime/lib/identical.cc b/runtime/lib/identical.cc index bbb47bd4826..c0d2b96d6f6 100644 --- a/runtime/lib/identical.cc +++ b/runtime/lib/identical.cc @@ -8,7 +8,7 @@ namespace dart { -DEFINE_NATIVE_ENTRY(Identical_comparison, 2) { +DEFINE_NATIVE_ENTRY(Identical_comparison, 0, 2) { GET_NATIVE_ARGUMENT(Instance, a, arguments->NativeArgAt(0)); GET_NATIVE_ARGUMENT(Instance, b, arguments->NativeArgAt(1)); const bool is_identical = a.IsIdenticalTo(b); diff --git a/runtime/lib/integers.cc b/runtime/lib/integers.cc index 1c8cf7cf139..c66299fa771 100644 --- a/runtime/lib/integers.cc +++ b/runtime/lib/integers.cc @@ -28,7 +28,7 @@ static bool CheckInteger(const Integer& i) { return true; } -DEFINE_NATIVE_ENTRY(Integer_bitAndFromInteger, 2) { +DEFINE_NATIVE_ENTRY(Integer_bitAndFromInteger, 0, 2) { const Integer& right = Integer::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1)); @@ -41,7 +41,7 @@ DEFINE_NATIVE_ENTRY(Integer_bitAndFromInteger, 2) { return left.BitOp(Token::kBIT_AND, right); } -DEFINE_NATIVE_ENTRY(Integer_bitOrFromInteger, 2) { +DEFINE_NATIVE_ENTRY(Integer_bitOrFromInteger, 0, 2) { const Integer& right = Integer::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1)); @@ -54,7 +54,7 @@ DEFINE_NATIVE_ENTRY(Integer_bitOrFromInteger, 2) { return left.BitOp(Token::kBIT_OR, right); } -DEFINE_NATIVE_ENTRY(Integer_bitXorFromInteger, 2) { +DEFINE_NATIVE_ENTRY(Integer_bitXorFromInteger, 0, 2) { const Integer& right = Integer::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1)); @@ -67,7 +67,7 @@ DEFINE_NATIVE_ENTRY(Integer_bitXorFromInteger, 2) { return left.BitOp(Token::kBIT_XOR, right); } -DEFINE_NATIVE_ENTRY(Integer_addFromInteger, 2) { +DEFINE_NATIVE_ENTRY(Integer_addFromInteger, 0, 2) { const Integer& right_int = Integer::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1)); @@ -80,7 +80,7 @@ DEFINE_NATIVE_ENTRY(Integer_addFromInteger, 2) { return left_int.ArithmeticOp(Token::kADD, right_int); } -DEFINE_NATIVE_ENTRY(Integer_subFromInteger, 2) { +DEFINE_NATIVE_ENTRY(Integer_subFromInteger, 0, 2) { const Integer& right_int = Integer::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1)); @@ -93,7 +93,7 @@ DEFINE_NATIVE_ENTRY(Integer_subFromInteger, 2) { return left_int.ArithmeticOp(Token::kSUB, right_int); } -DEFINE_NATIVE_ENTRY(Integer_mulFromInteger, 2) { +DEFINE_NATIVE_ENTRY(Integer_mulFromInteger, 0, 2) { const Integer& right_int = Integer::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1)); @@ -106,7 +106,7 @@ DEFINE_NATIVE_ENTRY(Integer_mulFromInteger, 2) { return left_int.ArithmeticOp(Token::kMUL, right_int); } -DEFINE_NATIVE_ENTRY(Integer_truncDivFromInteger, 2) { +DEFINE_NATIVE_ENTRY(Integer_truncDivFromInteger, 0, 2) { const Integer& right_int = Integer::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1)); @@ -116,7 +116,7 @@ DEFINE_NATIVE_ENTRY(Integer_truncDivFromInteger, 2) { return left_int.ArithmeticOp(Token::kTRUNCDIV, right_int); } -DEFINE_NATIVE_ENTRY(Integer_moduloFromInteger, 2) { +DEFINE_NATIVE_ENTRY(Integer_moduloFromInteger, 0, 2) { const Integer& right_int = Integer::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, left_int, arguments->NativeArgAt(1)); @@ -133,7 +133,7 @@ DEFINE_NATIVE_ENTRY(Integer_moduloFromInteger, 2) { return left_int.ArithmeticOp(Token::kMOD, right_int); } -DEFINE_NATIVE_ENTRY(Integer_greaterThanFromInteger, 2) { +DEFINE_NATIVE_ENTRY(Integer_greaterThanFromInteger, 0, 2) { const Integer& right = Integer::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, left, arguments->NativeArgAt(1)); @@ -146,7 +146,7 @@ DEFINE_NATIVE_ENTRY(Integer_greaterThanFromInteger, 2) { return Bool::Get(left.CompareWith(right) == 1).raw(); } -DEFINE_NATIVE_ENTRY(Integer_equalToInteger, 2) { +DEFINE_NATIVE_ENTRY(Integer_equalToInteger, 0, 2) { const Integer& left = Integer::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, right, arguments->NativeArgAt(1)); ASSERT(CheckInteger(left)); @@ -179,12 +179,12 @@ static RawInteger* ParseInteger(const String& value) { return Integer::New(value); } -DEFINE_NATIVE_ENTRY(Integer_parse, 1) { +DEFINE_NATIVE_ENTRY(Integer_parse, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(String, value, arguments->NativeArgAt(0)); return ParseInteger(value); } -DEFINE_NATIVE_ENTRY(Integer_fromEnvironment, 3) { +DEFINE_NATIVE_ENTRY(Integer_fromEnvironment, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(String, name, arguments->NativeArgAt(1)); GET_NATIVE_ARGUMENT(Integer, default_value, arguments->NativeArgAt(2)); // Call the embedder to supply us with the environment. @@ -211,7 +211,7 @@ static RawInteger* ShiftOperationHelper(Token::Kind kind, return value.ShiftOp(kind, amount, Heap::kNew); } -DEFINE_NATIVE_ENTRY(Integer_shrFromInteger, 2) { +DEFINE_NATIVE_ENTRY(Integer_shrFromInteger, 0, 2) { const Integer& amount = Integer::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, value, arguments->NativeArgAt(1)); @@ -224,7 +224,7 @@ DEFINE_NATIVE_ENTRY(Integer_shrFromInteger, 2) { return ShiftOperationHelper(Token::kSHR, value, amount); } -DEFINE_NATIVE_ENTRY(Integer_shlFromInteger, 2) { +DEFINE_NATIVE_ENTRY(Integer_shlFromInteger, 0, 2) { const Integer& amount = Integer::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, value, arguments->NativeArgAt(1)); @@ -237,7 +237,7 @@ DEFINE_NATIVE_ENTRY(Integer_shlFromInteger, 2) { return ShiftOperationHelper(Token::kSHL, value, amount); } -DEFINE_NATIVE_ENTRY(Smi_bitAndFromSmi, 2) { +DEFINE_NATIVE_ENTRY(Smi_bitAndFromSmi, 0, 2) { const Smi& left = Smi::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, right, arguments->NativeArgAt(1)); if (FLAG_trace_intrinsified_natives) { @@ -249,7 +249,7 @@ DEFINE_NATIVE_ENTRY(Smi_bitAndFromSmi, 2) { return Smi::New(left_value.Value() & right_value.Value()); } -DEFINE_NATIVE_ENTRY(Smi_bitNegate, 1) { +DEFINE_NATIVE_ENTRY(Smi_bitNegate, 0, 1) { const Smi& operand = Smi::CheckedHandle(zone, arguments->NativeArgAt(0)); if (FLAG_trace_intrinsified_natives) { OS::PrintErr("Smi_bitNegate: %s\n", operand.ToCString()); @@ -259,7 +259,7 @@ DEFINE_NATIVE_ENTRY(Smi_bitNegate, 1) { return Smi::New(result); } -DEFINE_NATIVE_ENTRY(Smi_bitLength, 1) { +DEFINE_NATIVE_ENTRY(Smi_bitLength, 0, 1) { const Smi& operand = Smi::CheckedHandle(zone, arguments->NativeArgAt(0)); if (FLAG_trace_intrinsified_natives) { OS::PrintErr("Smi_bitLength: %s\n", operand.ToCString()); @@ -272,7 +272,7 @@ DEFINE_NATIVE_ENTRY(Smi_bitLength, 1) { // Mint natives. -DEFINE_NATIVE_ENTRY(Mint_bitNegate, 1) { +DEFINE_NATIVE_ENTRY(Mint_bitNegate, 0, 1) { const Mint& operand = Mint::CheckedHandle(zone, arguments->NativeArgAt(0)); ASSERT(CheckInteger(operand)); if (FLAG_trace_intrinsified_natives) { @@ -282,7 +282,7 @@ DEFINE_NATIVE_ENTRY(Mint_bitNegate, 1) { return Integer::New(result); } -DEFINE_NATIVE_ENTRY(Mint_bitLength, 1) { +DEFINE_NATIVE_ENTRY(Mint_bitLength, 0, 1) { const Mint& operand = Mint::CheckedHandle(zone, arguments->NativeArgAt(0)); ASSERT(CheckInteger(operand)); if (FLAG_trace_intrinsified_natives) { diff --git a/runtime/lib/isolate.cc b/runtime/lib/isolate.cc index bd5265272ee..608ced82b14 100644 --- a/runtime/lib/isolate.cc +++ b/runtime/lib/isolate.cc @@ -25,20 +25,20 @@ namespace dart { -DEFINE_NATIVE_ENTRY(CapabilityImpl_factory, 1) { +DEFINE_NATIVE_ENTRY(CapabilityImpl_factory, 0, 1) { ASSERT( TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)).IsNull()); uint64_t id = isolate->random()->NextUInt64(); return Capability::New(id); } -DEFINE_NATIVE_ENTRY(CapabilityImpl_equals, 2) { +DEFINE_NATIVE_ENTRY(CapabilityImpl_equals, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Capability, recv, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Capability, other, arguments->NativeArgAt(1)); return (recv.Id() == other.Id()) ? Bool::True().raw() : Bool::False().raw(); } -DEFINE_NATIVE_ENTRY(CapabilityImpl_get_hashcode, 1) { +DEFINE_NATIVE_ENTRY(CapabilityImpl_get_hashcode, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Capability, cap, arguments->NativeArgAt(0)); int64_t id = cap.Id(); int32_t hi = static_cast(id >> 32); @@ -47,36 +47,36 @@ DEFINE_NATIVE_ENTRY(CapabilityImpl_get_hashcode, 1) { return Smi::New(hash); } -DEFINE_NATIVE_ENTRY(RawReceivePortImpl_factory, 1) { +DEFINE_NATIVE_ENTRY(RawReceivePortImpl_factory, 0, 1) { ASSERT( TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)).IsNull()); Dart_Port port_id = PortMap::CreatePort(isolate->message_handler()); return ReceivePort::New(port_id, false /* not control port */); } -DEFINE_NATIVE_ENTRY(RawReceivePortImpl_get_id, 1) { +DEFINE_NATIVE_ENTRY(RawReceivePortImpl_get_id, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(ReceivePort, port, arguments->NativeArgAt(0)); return Integer::New(port.Id()); } -DEFINE_NATIVE_ENTRY(RawReceivePortImpl_get_sendport, 1) { +DEFINE_NATIVE_ENTRY(RawReceivePortImpl_get_sendport, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(ReceivePort, port, arguments->NativeArgAt(0)); return port.send_port(); } -DEFINE_NATIVE_ENTRY(RawReceivePortImpl_closeInternal, 1) { +DEFINE_NATIVE_ENTRY(RawReceivePortImpl_closeInternal, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(ReceivePort, port, arguments->NativeArgAt(0)); Dart_Port id = port.Id(); PortMap::ClosePort(id); return Integer::New(id); } -DEFINE_NATIVE_ENTRY(SendPortImpl_get_id, 1) { +DEFINE_NATIVE_ENTRY(SendPortImpl_get_id, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(SendPort, port, arguments->NativeArgAt(0)); return Integer::New(port.Id()); } -DEFINE_NATIVE_ENTRY(SendPortImpl_get_hashcode, 1) { +DEFINE_NATIVE_ENTRY(SendPortImpl_get_hashcode, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(SendPort, port, arguments->NativeArgAt(0)); int64_t id = port.Id(); int32_t hi = static_cast(id >> 32); @@ -85,7 +85,7 @@ DEFINE_NATIVE_ENTRY(SendPortImpl_get_hashcode, 1) { return Smi::New(hash); } -DEFINE_NATIVE_ENTRY(SendPortImpl_sendInternal_, 2) { +DEFINE_NATIVE_ENTRY(SendPortImpl_sendInternal_, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(SendPort, port, arguments->NativeArgAt(0)); // TODO(iposva): Allow for arbitrary messages to be sent. GET_NON_NULL_NATIVE_ARGUMENT(Instance, obj, arguments->NativeArgAt(1)); @@ -182,7 +182,7 @@ static const char* String2UTF8(const String& str) { return result; } -DEFINE_NATIVE_ENTRY(Isolate_spawnFunction, 10) { +DEFINE_NATIVE_ENTRY(Isolate_spawnFunction, 0, 10) { GET_NON_NULL_NATIVE_ARGUMENT(SendPort, port, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(String, script_uri, arguments->NativeArgAt(1)); GET_NON_NULL_NATIVE_ARGUMENT(Instance, closure, arguments->NativeArgAt(2)); @@ -281,7 +281,7 @@ static const char* CanonicalizeUri(Thread* thread, return result; } -DEFINE_NATIVE_ENTRY(Isolate_spawnUri, 12) { +DEFINE_NATIVE_ENTRY(Isolate_spawnUri, 0, 12) { GET_NON_NULL_NATIVE_ARGUMENT(SendPort, port, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(String, uri, arguments->NativeArgAt(1)); @@ -371,7 +371,7 @@ DEFINE_NATIVE_ENTRY(Isolate_spawnUri, 12) { return Object::null(); } -DEFINE_NATIVE_ENTRY(Isolate_getPortAndCapabilitiesOfCurrentIsolate, 0) { +DEFINE_NATIVE_ENTRY(Isolate_getPortAndCapabilitiesOfCurrentIsolate, 0, 0) { const Array& result = Array::Handle(Array::New(3)); result.SetAt(0, SendPort::Handle(SendPort::New(isolate->main_port()))); result.SetAt( @@ -381,13 +381,13 @@ DEFINE_NATIVE_ENTRY(Isolate_getPortAndCapabilitiesOfCurrentIsolate, 0) { return result.raw(); } -DEFINE_NATIVE_ENTRY(Isolate_getCurrentRootUriStr, 0) { +DEFINE_NATIVE_ENTRY(Isolate_getCurrentRootUriStr, 0, 0) { const Library& root_lib = Library::Handle(zone, isolate->object_store()->root_library()); return root_lib.url(); } -DEFINE_NATIVE_ENTRY(Isolate_sendOOB, 2) { +DEFINE_NATIVE_ENTRY(Isolate_sendOOB, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(SendPort, port, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Array, msg, arguments->NativeArgAt(1)); diff --git a/runtime/lib/linked_hash_map.cc b/runtime/lib/linked_hash_map.cc index cd096587b1a..89ad2bb9371 100644 --- a/runtime/lib/linked_hash_map.cc +++ b/runtime/lib/linked_hash_map.cc @@ -12,13 +12,13 @@ namespace dart { -DEFINE_NATIVE_ENTRY(LinkedHashMap_getIndex, 1) { +DEFINE_NATIVE_ENTRY(LinkedHashMap_getIndex, 0, 1) { const LinkedHashMap& map = LinkedHashMap::CheckedHandle(zone, arguments->NativeArgAt(0)); return map.index(); } -DEFINE_NATIVE_ENTRY(LinkedHashMap_setIndex, 2) { +DEFINE_NATIVE_ENTRY(LinkedHashMap_setIndex, 0, 2) { const LinkedHashMap& map = LinkedHashMap::CheckedHandle(zone, arguments->NativeArgAt(0)); const TypedData& index = @@ -27,13 +27,13 @@ DEFINE_NATIVE_ENTRY(LinkedHashMap_setIndex, 2) { return Object::null(); } -DEFINE_NATIVE_ENTRY(LinkedHashMap_getData, 1) { +DEFINE_NATIVE_ENTRY(LinkedHashMap_getData, 0, 1) { const LinkedHashMap& map = LinkedHashMap::CheckedHandle(zone, arguments->NativeArgAt(0)); return map.data(); } -DEFINE_NATIVE_ENTRY(LinkedHashMap_setData, 2) { +DEFINE_NATIVE_ENTRY(LinkedHashMap_setData, 0, 2) { const LinkedHashMap& map = LinkedHashMap::CheckedHandle(zone, arguments->NativeArgAt(0)); const Array& data = Array::CheckedHandle(zone, arguments->NativeArgAt(1)); @@ -41,13 +41,13 @@ DEFINE_NATIVE_ENTRY(LinkedHashMap_setData, 2) { return Object::null(); } -DEFINE_NATIVE_ENTRY(LinkedHashMap_getHashMask, 1) { +DEFINE_NATIVE_ENTRY(LinkedHashMap_getHashMask, 0, 1) { const LinkedHashMap& map = LinkedHashMap::CheckedHandle(zone, arguments->NativeArgAt(0)); return map.hash_mask(); } -DEFINE_NATIVE_ENTRY(LinkedHashMap_setHashMask, 2) { +DEFINE_NATIVE_ENTRY(LinkedHashMap_setHashMask, 0, 2) { const LinkedHashMap& map = LinkedHashMap::CheckedHandle(zone, arguments->NativeArgAt(0)); const Smi& hashMask = Smi::CheckedHandle(zone, arguments->NativeArgAt(1)); @@ -55,13 +55,13 @@ DEFINE_NATIVE_ENTRY(LinkedHashMap_setHashMask, 2) { return Object::null(); } -DEFINE_NATIVE_ENTRY(LinkedHashMap_getDeletedKeys, 1) { +DEFINE_NATIVE_ENTRY(LinkedHashMap_getDeletedKeys, 0, 1) { const LinkedHashMap& map = LinkedHashMap::CheckedHandle(zone, arguments->NativeArgAt(0)); return map.deleted_keys(); } -DEFINE_NATIVE_ENTRY(LinkedHashMap_setDeletedKeys, 2) { +DEFINE_NATIVE_ENTRY(LinkedHashMap_setDeletedKeys, 0, 2) { const LinkedHashMap& map = LinkedHashMap::CheckedHandle(zone, arguments->NativeArgAt(0)); const Smi& deletedKeys = Smi::CheckedHandle(zone, arguments->NativeArgAt(1)); @@ -69,13 +69,13 @@ DEFINE_NATIVE_ENTRY(LinkedHashMap_setDeletedKeys, 2) { return Object::null(); } -DEFINE_NATIVE_ENTRY(LinkedHashMap_getUsedData, 1) { +DEFINE_NATIVE_ENTRY(LinkedHashMap_getUsedData, 0, 1) { const LinkedHashMap& map = LinkedHashMap::CheckedHandle(zone, arguments->NativeArgAt(0)); return map.used_data(); } -DEFINE_NATIVE_ENTRY(LinkedHashMap_setUsedData, 2) { +DEFINE_NATIVE_ENTRY(LinkedHashMap_setUsedData, 0, 2) { const LinkedHashMap& map = LinkedHashMap::CheckedHandle(zone, arguments->NativeArgAt(0)); const Smi& usedData = Smi::CheckedHandle(zone, arguments->NativeArgAt(1)); diff --git a/runtime/lib/math.cc b/runtime/lib/math.cc index e3ef92669f4..b4a5bfd0615 100644 --- a/runtime/lib/math.cc +++ b/runtime/lib/math.cc @@ -13,58 +13,58 @@ namespace dart { -DEFINE_NATIVE_ENTRY(Math_sqrt, 1) { +DEFINE_NATIVE_ENTRY(Math_sqrt, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0)); return Double::New(sqrt(operand.value())); } -DEFINE_NATIVE_ENTRY(Math_sin, 1) { +DEFINE_NATIVE_ENTRY(Math_sin, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0)); return Double::New(sin(operand.value())); } -DEFINE_NATIVE_ENTRY(Math_cos, 1) { +DEFINE_NATIVE_ENTRY(Math_cos, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0)); return Double::New(cos(operand.value())); } -DEFINE_NATIVE_ENTRY(Math_tan, 1) { +DEFINE_NATIVE_ENTRY(Math_tan, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0)); return Double::New(tan(operand.value())); } -DEFINE_NATIVE_ENTRY(Math_asin, 1) { +DEFINE_NATIVE_ENTRY(Math_asin, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0)); return Double::New(asin(operand.value())); } -DEFINE_NATIVE_ENTRY(Math_acos, 1) { +DEFINE_NATIVE_ENTRY(Math_acos, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0)); return Double::New(acos(operand.value())); } -DEFINE_NATIVE_ENTRY(Math_atan, 1) { +DEFINE_NATIVE_ENTRY(Math_atan, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0)); return Double::New(atan(operand.value())); } -DEFINE_NATIVE_ENTRY(Math_atan2, 2) { +DEFINE_NATIVE_ENTRY(Math_atan2, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Double, operand1, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Double, operand2, arguments->NativeArgAt(1)); return Double::New(atan2_ieee(operand1.value(), operand2.value())); } -DEFINE_NATIVE_ENTRY(Math_exp, 1) { +DEFINE_NATIVE_ENTRY(Math_exp, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0)); return Double::New(exp(operand.value())); } -DEFINE_NATIVE_ENTRY(Math_log, 1) { +DEFINE_NATIVE_ENTRY(Math_log, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Double, operand, arguments->NativeArgAt(0)); return Double::New(log(operand.value())); } -DEFINE_NATIVE_ENTRY(Math_doublePow, 2) { +DEFINE_NATIVE_ENTRY(Math_doublePow, 0, 2) { const double operand = Double::CheckedHandle(zone, arguments->NativeArgAt(0)).value(); GET_NON_NULL_NATIVE_ARGUMENT(Double, exponent_object, @@ -94,7 +94,7 @@ static RawTypedData* GetRandomStateArray(const Instance& receiver) { // ((_A * (_state[_kSTATE_LO])) + _state[_kSTATE_HI]) & (1 << 64) - 1); // _state[_kSTATE_LO] = state & (1 << 32) - 1); // _state[_kSTATE_HI] = state >> 32; -DEFINE_NATIVE_ENTRY(Random_nextState, 1) { +DEFINE_NATIVE_ENTRY(Random_nextState, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, receiver, arguments->NativeArgAt(0)); const TypedData& array = TypedData::Handle(GetRandomStateArray(receiver)); const uint64_t state_lo = array.GetUint32(0); @@ -143,7 +143,7 @@ uint64_t mix64(uint64_t n) { // result[_kSTATE_LO] = seed & ((1 << 32) - 1); // result[_kSTATE_HI] = seed >> 32; // return result; -DEFINE_NATIVE_ENTRY(Random_setupSeed, 1) { +DEFINE_NATIVE_ENTRY(Random_setupSeed, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Integer, seed_int, arguments->NativeArgAt(0)); uint64_t seed = mix64(static_cast(seed_int.AsInt64Value())); @@ -153,14 +153,14 @@ DEFINE_NATIVE_ENTRY(Random_setupSeed, 1) { return CreateRandomState(zone, seed); } -DEFINE_NATIVE_ENTRY(Random_initialSeed, 0) { +DEFINE_NATIVE_ENTRY(Random_initialSeed, 0, 0) { Random* rnd = isolate->random(); uint64_t seed = rnd->NextUInt32(); seed |= (static_cast(rnd->NextUInt32()) << 32); return CreateRandomState(zone, seed); } -DEFINE_NATIVE_ENTRY(SecureRandom_getBytes, 1) { +DEFINE_NATIVE_ENTRY(SecureRandom_getBytes, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Smi, count, arguments->NativeArgAt(0)); const intptr_t n = count.Value(); ASSERT((n > 0) && (n <= 8)); diff --git a/runtime/lib/mirrors.cc b/runtime/lib/mirrors.cc index d29f4f1c25a..37756f218d4 100644 --- a/runtime/lib/mirrors.cc +++ b/runtime/lib/mirrors.cc @@ -427,7 +427,7 @@ static RawInstance* CreateLibraryDependencyMirror(Thread* thread, return CreateMirror(Symbols::_LocalLibraryDependencyMirror(), args); } -DEFINE_NATIVE_ENTRY(LibraryMirror_fromPrefix, 1) { +DEFINE_NATIVE_ENTRY(LibraryMirror_fromPrefix, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(LibraryPrefix, prefix, arguments->NativeArgAt(0)); const Library& deferred_lib = Library::Handle(prefix.GetLibrary(0)); @@ -437,7 +437,7 @@ DEFINE_NATIVE_ENTRY(LibraryMirror_fromPrefix, 1) { return CreateLibraryMirror(thread, deferred_lib); } -DEFINE_NATIVE_ENTRY(LibraryMirror_libraryDependencies, 2) { +DEFINE_NATIVE_ENTRY(LibraryMirror_libraryDependencies, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, lib_mirror, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(1)); const Library& lib = Library::Handle(ref.GetLibraryReferent()); @@ -597,7 +597,7 @@ static RawAbstractType* InstantiateType(const AbstractType& type, return result.Canonicalize(); } -DEFINE_NATIVE_ENTRY(MirrorSystem_libraries, 0) { +DEFINE_NATIVE_ENTRY(MirrorSystem_libraries, 0, 0) { const GrowableObjectArray& libraries = GrowableObjectArray::Handle(zone, isolate->object_store()->libraries()); @@ -617,7 +617,7 @@ DEFINE_NATIVE_ENTRY(MirrorSystem_libraries, 0) { return library_mirrors.raw(); } -DEFINE_NATIVE_ENTRY(MirrorSystem_isolate, 0) { +DEFINE_NATIVE_ENTRY(MirrorSystem_isolate, 0, 0) { VerifyMethodKindShifts(); return CreateIsolateMirror(); @@ -629,7 +629,7 @@ static void ThrowLanguageError(const char* message) { Exceptions::PropagateError(error); } -DEFINE_NATIVE_ENTRY(IsolateMirror_loadUri, 1) { +DEFINE_NATIVE_ENTRY(IsolateMirror_loadUri, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(String, uri, arguments->NativeArgAt(0)); if (!isolate->HasTagHandler()) { @@ -708,7 +708,7 @@ DEFINE_NATIVE_ENTRY(IsolateMirror_loadUri, 1) { FATAL("Non-library from tag handler"); } -DEFINE_NATIVE_ENTRY(Mirrors_makeLocalClassMirror, 1) { +DEFINE_NATIVE_ENTRY(Mirrors_makeLocalClassMirror, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, type, arguments->NativeArgAt(0)); ASSERT(type.IsFinalized()); ASSERT(type.HasTypeClass()); @@ -723,12 +723,12 @@ DEFINE_NATIVE_ENTRY(Mirrors_makeLocalClassMirror, 1) { Object::null_instance()); } -DEFINE_NATIVE_ENTRY(Mirrors_makeLocalTypeMirror, 1) { +DEFINE_NATIVE_ENTRY(Mirrors_makeLocalTypeMirror, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, type, arguments->NativeArgAt(0)); return CreateTypeMirror(type); } -DEFINE_NATIVE_ENTRY(Mirrors_instantiateGenericType, 2) { +DEFINE_NATIVE_ENTRY(Mirrors_instantiateGenericType, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, type, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Array, args, arguments->NativeArgAt(1)); @@ -779,20 +779,20 @@ DEFINE_NATIVE_ENTRY(Mirrors_instantiateGenericType, 2) { return instantiated_type.raw(); } -DEFINE_NATIVE_ENTRY(Mirrors_mangleName, 2) { +DEFINE_NATIVE_ENTRY(Mirrors_mangleName, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(String, name, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(1)); const Library& lib = Library::Handle(ref.GetLibraryReferent()); return lib.IsPrivate(name) ? lib.PrivateName(name) : name.raw(); } -DEFINE_NATIVE_ENTRY(MirrorReference_equals, 2) { +DEFINE_NATIVE_ENTRY(MirrorReference_equals, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, a, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, b, arguments->NativeArgAt(1)); return Bool::Get(a.referent() == b.referent()).raw(); } -DEFINE_NATIVE_ENTRY(DeclarationMirror_metadata, 1) { +DEFINE_NATIVE_ENTRY(DeclarationMirror_metadata, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, reflectee, arguments->NativeArgAt(0)); Object& decl = Object::Handle(); if (reflectee.IsMirrorReference()) { @@ -836,7 +836,7 @@ DEFINE_NATIVE_ENTRY(DeclarationMirror_metadata, 1) { return metadata.raw(); } -DEFINE_NATIVE_ENTRY(FunctionTypeMirror_call_method, 2) { +DEFINE_NATIVE_ENTRY(FunctionTypeMirror_call_method, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, owner_mirror, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(1)); @@ -847,14 +847,14 @@ DEFINE_NATIVE_ENTRY(FunctionTypeMirror_call_method, 2) { return CreateMethodMirror(func, owner_mirror, AbstractType::Handle()); } -DEFINE_NATIVE_ENTRY(FunctionTypeMirror_parameters, 2) { +DEFINE_NATIVE_ENTRY(FunctionTypeMirror_parameters, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, owner, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(1)); const Function& func = Function::Handle(ref.GetFunctionReferent()); return CreateParameterMirrorList(func, owner); } -DEFINE_NATIVE_ENTRY(FunctionTypeMirror_return_type, 1) { +DEFINE_NATIVE_ENTRY(FunctionTypeMirror_return_type, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(0)); const Function& func = Function::Handle(ref.GetFunctionReferent()); ASSERT(!func.IsNull()); @@ -863,7 +863,7 @@ DEFINE_NATIVE_ENTRY(FunctionTypeMirror_return_type, 1) { return type.Canonicalize(); } -DEFINE_NATIVE_ENTRY(ClassMirror_libraryUri, 1) { +DEFINE_NATIVE_ENTRY(ClassMirror_libraryUri, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(0)); const Class& klass = Class::Handle(ref.GetClassReferent()); const Library& library = Library::Handle(klass.library()); @@ -871,7 +871,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_libraryUri, 1) { return library.url(); } -DEFINE_NATIVE_ENTRY(ClassMirror_supertype, 1) { +DEFINE_NATIVE_ENTRY(ClassMirror_supertype, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, type, arguments->NativeArgAt(0)); ASSERT(type.IsFinalized()); const Class& cls = Class::Handle(type.type_class()); @@ -880,7 +880,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_supertype, 1) { return super_type.raw(); } -DEFINE_NATIVE_ENTRY(ClassMirror_supertype_instantiated, 1) { +DEFINE_NATIVE_ENTRY(ClassMirror_supertype_instantiated, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, type, arguments->NativeArgAt(0)); ASSERT(type.IsFinalized()); const Class& cls = Class::Handle(type.type_class()); @@ -888,7 +888,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_supertype_instantiated, 1) { return InstantiateType(super_type, type); } -DEFINE_NATIVE_ENTRY(ClassMirror_interfaces, 1) { +DEFINE_NATIVE_ENTRY(ClassMirror_interfaces, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, type, arguments->NativeArgAt(0)); ASSERT(type.IsFinalized()); const Class& cls = Class::Handle(type.type_class()); @@ -900,7 +900,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_interfaces, 1) { return cls.interfaces(); } -DEFINE_NATIVE_ENTRY(ClassMirror_interfaces_instantiated, 1) { +DEFINE_NATIVE_ENTRY(ClassMirror_interfaces_instantiated, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, type, arguments->NativeArgAt(0)); ASSERT(type.IsFinalized()); const Class& cls = Class::Handle(type.type_class()); @@ -922,7 +922,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_interfaces_instantiated, 1) { return interfaces_inst.raw(); } -DEFINE_NATIVE_ENTRY(ClassMirror_mixin, 1) { +DEFINE_NATIVE_ENTRY(ClassMirror_mixin, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, type, arguments->NativeArgAt(0)); ASSERT(type.IsFinalized()); const Class& cls = Class::Handle(type.type_class()); @@ -937,7 +937,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_mixin, 1) { return mixin_type.raw(); } -DEFINE_NATIVE_ENTRY(ClassMirror_mixin_instantiated, 2) { +DEFINE_NATIVE_ENTRY(ClassMirror_mixin_instantiated, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, type, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, instantiator, arguments->NativeArgAt(1)); @@ -957,7 +957,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_mixin_instantiated, 2) { return InstantiateType(mixin_type, instantiator); } -DEFINE_NATIVE_ENTRY(ClassMirror_members, 3) { +DEFINE_NATIVE_ENTRY(ClassMirror_members, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, owner_mirror, arguments->NativeArgAt(0)); GET_NATIVE_ARGUMENT(AbstractType, owner_instantiator, @@ -1005,7 +1005,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_members, 3) { return member_mirrors.raw(); } -DEFINE_NATIVE_ENTRY(ClassMirror_constructors, 3) { +DEFINE_NATIVE_ENTRY(ClassMirror_constructors, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, owner_mirror, arguments->NativeArgAt(0)); GET_NATIVE_ARGUMENT(AbstractType, owner_instantiator, @@ -1038,7 +1038,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_constructors, 3) { return constructor_mirrors.raw(); } -DEFINE_NATIVE_ENTRY(LibraryMirror_members, 2) { +DEFINE_NATIVE_ENTRY(LibraryMirror_members, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, owner_mirror, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(1)); @@ -1090,7 +1090,7 @@ DEFINE_NATIVE_ENTRY(LibraryMirror_members, 2) { return member_mirrors.raw(); } -DEFINE_NATIVE_ENTRY(ClassMirror_type_variables, 1) { +DEFINE_NATIVE_ENTRY(ClassMirror_type_variables, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(0)); const Class& klass = Class::Handle(ref.GetClassReferent()); const Error& error = Error::Handle(zone, klass.EnsureIsFinalized(thread)); @@ -1101,7 +1101,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_type_variables, 1) { return CreateTypeVariableList(klass); } -DEFINE_NATIVE_ENTRY(ClassMirror_type_arguments, 1) { +DEFINE_NATIVE_ENTRY(ClassMirror_type_arguments, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, type, arguments->NativeArgAt(0)); const Class& cls = Class::Handle(type.type_class()); @@ -1138,7 +1138,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_type_arguments, 1) { return result.raw(); } -DEFINE_NATIVE_ENTRY(TypeVariableMirror_owner, 1) { +DEFINE_NATIVE_ENTRY(TypeVariableMirror_owner, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(TypeParameter, param, arguments->NativeArgAt(0)); Class& owner = Class::Handle(param.parameterized_class()); AbstractType& type = AbstractType::Handle(); @@ -1156,12 +1156,12 @@ DEFINE_NATIVE_ENTRY(TypeVariableMirror_owner, 1) { Instance::null_instance()); } -DEFINE_NATIVE_ENTRY(TypeVariableMirror_upper_bound, 1) { +DEFINE_NATIVE_ENTRY(TypeVariableMirror_upper_bound, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(TypeParameter, param, arguments->NativeArgAt(0)); return param.bound(); } -DEFINE_NATIVE_ENTRY(TypedefMirror_declaration, 1) { +DEFINE_NATIVE_ENTRY(TypedefMirror_declaration, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Type, type, arguments->NativeArgAt(0)); ASSERT(type.IsFunctionType()); const Class& cls = Class::Handle(type.type_class()); @@ -1171,7 +1171,7 @@ DEFINE_NATIVE_ENTRY(TypedefMirror_declaration, 1) { Object::null_instance()); } -DEFINE_NATIVE_ENTRY(InstanceMirror_invoke, 5) { +DEFINE_NATIVE_ENTRY(InstanceMirror_invoke, 0, 5) { // Argument 0 is the mirror, which is unused by the native. It exists // because this native is an instance method in order to be polymorphic // with its cousins. @@ -1183,7 +1183,7 @@ DEFINE_NATIVE_ENTRY(InstanceMirror_invoke, 5) { RETURN_OR_PROPAGATE(reflectee.Invoke(function_name, args, arg_names)); } -DEFINE_NATIVE_ENTRY(InstanceMirror_invokeGetter, 3) { +DEFINE_NATIVE_ENTRY(InstanceMirror_invokeGetter, 0, 3) { // Argument 0 is the mirror, which is unused by the native. It exists // because this native is an instance method in order to be polymorphic // with its cousins. @@ -1192,7 +1192,7 @@ DEFINE_NATIVE_ENTRY(InstanceMirror_invokeGetter, 3) { RETURN_OR_PROPAGATE(reflectee.InvokeGetter(getter_name)); } -DEFINE_NATIVE_ENTRY(InstanceMirror_invokeSetter, 4) { +DEFINE_NATIVE_ENTRY(InstanceMirror_invokeSetter, 0, 4) { // Argument 0 is the mirror, which is unused by the native. It exists // because this native is an instance method in order to be polymorphic // with its cousins. @@ -1202,7 +1202,7 @@ DEFINE_NATIVE_ENTRY(InstanceMirror_invokeSetter, 4) { RETURN_OR_PROPAGATE(reflectee.InvokeSetter(setter_name, value)); } -DEFINE_NATIVE_ENTRY(InstanceMirror_computeType, 1) { +DEFINE_NATIVE_ENTRY(InstanceMirror_computeType, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, instance, arguments->NativeArgAt(0)); const AbstractType& type = AbstractType::Handle(instance.GetType(Heap::kNew)); // The static type of null is specified to be the bottom type, however, the @@ -1210,7 +1210,7 @@ DEFINE_NATIVE_ENTRY(InstanceMirror_computeType, 1) { return type.Canonicalize(); } -DEFINE_NATIVE_ENTRY(ClosureMirror_function, 1) { +DEFINE_NATIVE_ENTRY(ClosureMirror_function, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, closure, arguments->NativeArgAt(0)); ASSERT(!closure.IsNull()); @@ -1244,7 +1244,7 @@ DEFINE_NATIVE_ENTRY(ClosureMirror_function, 1) { return Instance::null(); } -DEFINE_NATIVE_ENTRY(ClassMirror_invoke, 5) { +DEFINE_NATIVE_ENTRY(ClassMirror_invoke, 0, 5) { // Argument 0 is the mirror, which is unused by the native. It exists // because this native is an instance method in order to be polymorphic // with its cousins. @@ -1257,7 +1257,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_invoke, 5) { RETURN_OR_PROPAGATE(klass.Invoke(function_name, args, arg_names)); } -DEFINE_NATIVE_ENTRY(ClassMirror_invokeGetter, 3) { +DEFINE_NATIVE_ENTRY(ClassMirror_invokeGetter, 0, 3) { // Argument 0 is the mirror, which is unused by the native. It exists // because this native is an instance method in order to be polymorphic // with its cousins. @@ -1272,7 +1272,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_invokeGetter, 3) { RETURN_OR_PROPAGATE(klass.InvokeGetter(getter_name, true)); } -DEFINE_NATIVE_ENTRY(ClassMirror_invokeSetter, 4) { +DEFINE_NATIVE_ENTRY(ClassMirror_invokeSetter, 0, 4) { // Argument 0 is the mirror, which is unused by the native. It exists // because this native is an instance method in order to be polymorphic // with its cousins. @@ -1283,7 +1283,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_invokeSetter, 4) { RETURN_OR_PROPAGATE(klass.InvokeSetter(setter_name, value)); } -DEFINE_NATIVE_ENTRY(ClassMirror_invokeConstructor, 5) { +DEFINE_NATIVE_ENTRY(ClassMirror_invokeConstructor, 0, 5) { GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(0)); const Class& klass = Class::Handle(ref.GetClassReferent()); GET_NATIVE_ARGUMENT(Type, type, arguments->NativeArgAt(1)); @@ -1437,7 +1437,7 @@ DEFINE_NATIVE_ENTRY(ClassMirror_invokeConstructor, 5) { } } -DEFINE_NATIVE_ENTRY(LibraryMirror_invoke, 5) { +DEFINE_NATIVE_ENTRY(LibraryMirror_invoke, 0, 5) { // Argument 0 is the mirror, which is unused by the native. It exists // because this native is an instance method in order to be polymorphic // with its cousins. @@ -1450,7 +1450,7 @@ DEFINE_NATIVE_ENTRY(LibraryMirror_invoke, 5) { RETURN_OR_PROPAGATE(library.Invoke(function_name, args, arg_names)); } -DEFINE_NATIVE_ENTRY(LibraryMirror_invokeGetter, 3) { +DEFINE_NATIVE_ENTRY(LibraryMirror_invokeGetter, 0, 3) { // Argument 0 is the mirror, which is unused by the native. It exists // because this native is an instance method in order to be polymorphic // with its cousins. @@ -1460,7 +1460,7 @@ DEFINE_NATIVE_ENTRY(LibraryMirror_invokeGetter, 3) { RETURN_OR_PROPAGATE(library.InvokeGetter(getter_name, true)); } -DEFINE_NATIVE_ENTRY(LibraryMirror_invokeSetter, 4) { +DEFINE_NATIVE_ENTRY(LibraryMirror_invokeSetter, 0, 4) { // Argument 0 is the mirror, which is unused by the native. It exists // because this native is an instance method in order to be polymorphic // with its cousins. @@ -1471,7 +1471,7 @@ DEFINE_NATIVE_ENTRY(LibraryMirror_invokeSetter, 4) { RETURN_OR_PROPAGATE(library.InvokeSetter(setter_name, value)); } -DEFINE_NATIVE_ENTRY(MethodMirror_owner, 2) { +DEFINE_NATIVE_ENTRY(MethodMirror_owner, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(0)); GET_NATIVE_ARGUMENT(AbstractType, instantiator, arguments->NativeArgAt(1)); const Function& func = Function::Handle(ref.GetFunctionReferent()); @@ -1488,14 +1488,14 @@ DEFINE_NATIVE_ENTRY(MethodMirror_owner, 2) { return CreateClassMirror(owner, type, Bool::True(), Object::null_instance()); } -DEFINE_NATIVE_ENTRY(MethodMirror_parameters, 2) { +DEFINE_NATIVE_ENTRY(MethodMirror_parameters, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, owner, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(1)); const Function& func = Function::Handle(ref.GetFunctionReferent()); return CreateParameterMirrorList(func, owner); } -DEFINE_NATIVE_ENTRY(MethodMirror_return_type, 2) { +DEFINE_NATIVE_ENTRY(MethodMirror_return_type, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(0)); const Function& func = Function::Handle(ref.GetFunctionReferent()); GET_NATIVE_ARGUMENT(AbstractType, instantiator, arguments->NativeArgAt(1)); @@ -1506,7 +1506,7 @@ DEFINE_NATIVE_ENTRY(MethodMirror_return_type, 2) { return InstantiateType(type, instantiator); } -DEFINE_NATIVE_ENTRY(MethodMirror_source, 1) { +DEFINE_NATIVE_ENTRY(MethodMirror_source, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(0)); const Function& func = Function::Handle(ref.GetFunctionReferent()); return func.GetSource(); @@ -1522,7 +1522,7 @@ static RawInstance* CreateSourceLocation(const String& uri, return CreateMirror(Symbols::_SourceLocation(), args); } -DEFINE_NATIVE_ENTRY(DeclarationMirror_location, 1) { +DEFINE_NATIVE_ENTRY(DeclarationMirror_location, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, reflectee, arguments->NativeArgAt(0)); Object& decl = Object::Handle(zone); if (reflectee.IsMirrorReference()) { @@ -1600,7 +1600,7 @@ DEFINE_NATIVE_ENTRY(DeclarationMirror_location, 1) { return CreateSourceLocation(uri, from_line, from_col); } -DEFINE_NATIVE_ENTRY(TypedefMirror_referent, 1) { +DEFINE_NATIVE_ENTRY(TypedefMirror_referent, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Type, type, arguments->NativeArgAt(0)); ASSERT(type.IsFunctionType()); const Class& cls = Class::Handle(type.type_class()); @@ -1612,7 +1612,7 @@ DEFINE_NATIVE_ENTRY(TypedefMirror_referent, 1) { return CreateFunctionTypeMirror(referent_type); } -DEFINE_NATIVE_ENTRY(ParameterMirror_type, 3) { +DEFINE_NATIVE_ENTRY(ParameterMirror_type, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, pos, arguments->NativeArgAt(1)); GET_NATIVE_ARGUMENT(AbstractType, instantiator, arguments->NativeArgAt(2)); @@ -1623,7 +1623,7 @@ DEFINE_NATIVE_ENTRY(ParameterMirror_type, 3) { return InstantiateType(type, instantiator); } -DEFINE_NATIVE_ENTRY(VariableMirror_type, 2) { +DEFINE_NATIVE_ENTRY(VariableMirror_type, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(MirrorReference, ref, arguments->NativeArgAt(0)); const Field& field = Field::Handle(ref.GetFieldReferent()); GET_NATIVE_ARGUMENT(AbstractType, instantiator, arguments->NativeArgAt(1)); @@ -1631,7 +1631,7 @@ DEFINE_NATIVE_ENTRY(VariableMirror_type, 2) { return InstantiateType(type, instantiator); } -DEFINE_NATIVE_ENTRY(TypeMirror_subtypeTest, 2) { +DEFINE_NATIVE_ENTRY(TypeMirror_subtypeTest, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, a, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(AbstractType, b, arguments->NativeArgAt(1)); return Bool::Get(a.IsSubtypeOf(b, Heap::kNew)).raw(); diff --git a/runtime/lib/object.cc b/runtime/lib/object.cc index ca598f3bb46..44ef533c96f 100644 --- a/runtime/lib/object.cc +++ b/runtime/lib/object.cc @@ -15,7 +15,7 @@ namespace dart { -DEFINE_NATIVE_ENTRY(DartAsync_fatal, 1) { +DEFINE_NATIVE_ENTRY(DartAsync_fatal, 0, 1) { // The dart:async library code entered an unrecoverable state. const Instance& instance = Instance::CheckedHandle(zone, arguments->NativeArgAt(0)); @@ -25,13 +25,13 @@ DEFINE_NATIVE_ENTRY(DartAsync_fatal, 1) { return Object::null(); } -DEFINE_NATIVE_ENTRY(Object_equals, 1) { +DEFINE_NATIVE_ENTRY(Object_equals, 0, 1) { // Implemented in the flow graph builder. UNREACHABLE(); return Object::null(); } -DEFINE_NATIVE_ENTRY(Object_getHash, 1) { +DEFINE_NATIVE_ENTRY(Object_getHash, 0, 1) { // Please note that no handle is created for the argument. // This is safe since the argument is only used in a tail call. // The performance benefit is more than 5% when using hashCode. @@ -44,7 +44,7 @@ DEFINE_NATIVE_ENTRY(Object_getHash, 1) { #endif } -DEFINE_NATIVE_ENTRY(Object_setHash, 2) { +DEFINE_NATIVE_ENTRY(Object_setHash, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Smi, hash, arguments->NativeArgAt(1)); #if defined(HASH_IN_OBJECT_HEADER) Object::SetCachedHash(arguments->NativeArgAt(0), hash.Value()); @@ -57,7 +57,7 @@ DEFINE_NATIVE_ENTRY(Object_setHash, 2) { return Object::null(); } -DEFINE_NATIVE_ENTRY(Object_toString, 1) { +DEFINE_NATIVE_ENTRY(Object_toString, 0, 1) { const Instance& instance = Instance::CheckedHandle(zone, arguments->NativeArgAt(0)); if (instance.IsString()) { @@ -70,7 +70,7 @@ DEFINE_NATIVE_ENTRY(Object_toString, 1) { return String::New(c_str); } -DEFINE_NATIVE_ENTRY(Object_runtimeType, 1) { +DEFINE_NATIVE_ENTRY(Object_runtimeType, 0, 1) { const Instance& instance = Instance::CheckedHandle(zone, arguments->NativeArgAt(0)); if (instance.IsString()) { @@ -83,7 +83,7 @@ DEFINE_NATIVE_ENTRY(Object_runtimeType, 1) { return instance.GetType(Heap::kNew); } -DEFINE_NATIVE_ENTRY(Object_haveSameRuntimeType, 2) { +DEFINE_NATIVE_ENTRY(Object_haveSameRuntimeType, 0, 2) { const Instance& left = Instance::CheckedHandle(zone, arguments->NativeArgAt(0)); const Instance& right = @@ -131,7 +131,7 @@ DEFINE_NATIVE_ENTRY(Object_haveSameRuntimeType, 2) { .raw(); } -DEFINE_NATIVE_ENTRY(Object_instanceOf, 4) { +DEFINE_NATIVE_ENTRY(Object_instanceOf, 0, 4) { const Instance& instance = Instance::CheckedHandle(zone, arguments->NativeArgAt(0)); const TypeArguments& instantiator_type_arguments = @@ -156,7 +156,7 @@ DEFINE_NATIVE_ENTRY(Object_instanceOf, 4) { return Bool::Get(is_instance_of).raw(); } -DEFINE_NATIVE_ENTRY(Object_simpleInstanceOf, 2) { +DEFINE_NATIVE_ENTRY(Object_simpleInstanceOf, 0, 2) { // This native is only called when the right hand side passes // SimpleInstanceOfType and it is a non-negative test. const Instance& instance = @@ -170,13 +170,13 @@ DEFINE_NATIVE_ENTRY(Object_simpleInstanceOf, 2) { return Bool::Get(is_instance_of).raw(); } -DEFINE_NATIVE_ENTRY(AbstractType_toString, 1) { +DEFINE_NATIVE_ENTRY(AbstractType_toString, 0, 1) { const AbstractType& type = AbstractType::CheckedHandle(zone, arguments->NativeArgAt(0)); return type.UserVisibleName(); } -DEFINE_NATIVE_ENTRY(Type_getHashCode, 1) { +DEFINE_NATIVE_ENTRY(Type_getHashCode, 0, 1) { const Type& type = Type::CheckedHandle(zone, arguments->NativeArgAt(0)); intptr_t hash_val = type.Hash(); ASSERT(hash_val > 0); @@ -184,21 +184,21 @@ DEFINE_NATIVE_ENTRY(Type_getHashCode, 1) { return Smi::New(hash_val); } -DEFINE_NATIVE_ENTRY(LibraryPrefix_invalidateDependentCode, 1) { +DEFINE_NATIVE_ENTRY(LibraryPrefix_invalidateDependentCode, 0, 1) { const LibraryPrefix& prefix = LibraryPrefix::CheckedHandle(zone, arguments->NativeArgAt(0)); prefix.InvalidateDependentCode(); return Bool::Get(true).raw(); } -DEFINE_NATIVE_ENTRY(LibraryPrefix_load, 1) { +DEFINE_NATIVE_ENTRY(LibraryPrefix_load, 0, 1) { const LibraryPrefix& prefix = LibraryPrefix::CheckedHandle(zone, arguments->NativeArgAt(0)); bool hasCompleted = prefix.LoadLibrary(); return Bool::Get(hasCompleted).raw(); } -DEFINE_NATIVE_ENTRY(LibraryPrefix_loadError, 1) { +DEFINE_NATIVE_ENTRY(LibraryPrefix_loadError, 0, 1) { const LibraryPrefix& prefix = LibraryPrefix::CheckedHandle(zone, arguments->NativeArgAt(0)); // Currently all errors are Dart instances, e.g. I/O errors @@ -209,13 +209,13 @@ DEFINE_NATIVE_ENTRY(LibraryPrefix_loadError, 1) { return error.raw(); } -DEFINE_NATIVE_ENTRY(LibraryPrefix_isLoaded, 1) { +DEFINE_NATIVE_ENTRY(LibraryPrefix_isLoaded, 0, 1) { const LibraryPrefix& prefix = LibraryPrefix::CheckedHandle(zone, arguments->NativeArgAt(0)); return Bool::Get(prefix.is_loaded()).raw(); } -DEFINE_NATIVE_ENTRY(Internal_inquireIs64Bit, 0) { +DEFINE_NATIVE_ENTRY(Internal_inquireIs64Bit, 0, 0) { #if defined(ARCH_IS_64_BIT) return Bool::True().raw(); #else @@ -223,7 +223,7 @@ DEFINE_NATIVE_ENTRY(Internal_inquireIs64Bit, 0) { #endif // defined(ARCH_IS_64_BIT) } -DEFINE_NATIVE_ENTRY(Internal_unsafeCast, 1) { +DEFINE_NATIVE_ENTRY(Internal_unsafeCast, 0, 1) { UNREACHABLE(); // Should be erased at Kernel translation time. return arguments->NativeArgAt(0); } @@ -270,7 +270,8 @@ static bool ExtractInterfaceTypeArgs(Zone* zone, } } -DEFINE_NATIVE_ENTRY(Internal_extractTypeArguments, 2) { +// for documentation see pkg/dart_internal/lib/extract_type_arguments.dart +DEFINE_NATIVE_ENTRY(Internal_extractTypeArguments, 0, 2) { const Instance& instance = Instance::CheckedHandle(zone, arguments->NativeArgAt(0)); const Instance& extract = @@ -278,11 +279,9 @@ DEFINE_NATIVE_ENTRY(Internal_extractTypeArguments, 2) { Class& interface_cls = Class::Handle(zone); intptr_t num_type_args = 0; - const TypeArguments& function_type_args = - TypeArguments::Handle(zone, arguments->NativeTypeArgs()); - if (function_type_args.Length() == 1) { + if (arguments->NativeTypeArgCount() >= 1) { const AbstractType& function_type_arg = - AbstractType::Handle(zone, function_type_args.TypeAt(0)); + AbstractType::Handle(zone, arguments->NativeTypeArgAt(0)); if (function_type_arg.IsType() && (function_type_arg.arguments() == TypeArguments::null())) { interface_cls = function_type_arg.type_class(); @@ -358,7 +357,7 @@ DEFINE_NATIVE_ENTRY(Internal_extractTypeArguments, 2) { return result.raw(); } -DEFINE_NATIVE_ENTRY(Internal_prependTypeArguments, 4) { +DEFINE_NATIVE_ENTRY(Internal_prependTypeArguments, 0, 4) { const TypeArguments& function_type_arguments = TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)); const TypeArguments& parent_type_arguments = @@ -373,7 +372,7 @@ DEFINE_NATIVE_ENTRY(Internal_prependTypeArguments, 4) { // closure. // Arg0: Closure object // Arg1: Type arguments to function -DEFINE_NATIVE_ENTRY(Internal_boundsCheckForPartialInstantiation, 2) { +DEFINE_NATIVE_ENTRY(Internal_boundsCheckForPartialInstantiation, 0, 2) { const Closure& closure = Closure::CheckedHandle(zone, arguments->NativeArgAt(0)); const Function& target = Function::Handle(zone, closure.function()); @@ -430,7 +429,7 @@ DEFINE_NATIVE_ENTRY(Internal_boundsCheckForPartialInstantiation, 2) { return Object::null(); } -DEFINE_NATIVE_ENTRY(InvocationMirror_unpackTypeArguments, 2) { +DEFINE_NATIVE_ENTRY(InvocationMirror_unpackTypeArguments, 0, 2) { const TypeArguments& type_arguments = TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)); const Smi& num_type_arguments = @@ -453,7 +452,7 @@ DEFINE_NATIVE_ENTRY(InvocationMirror_unpackTypeArguments, 2) { return type_list.raw(); } -DEFINE_NATIVE_ENTRY(NoSuchMethodError_existingMethodSignature, 3) { +DEFINE_NATIVE_ENTRY(NoSuchMethodError_existingMethodSignature, 0, 3) { const Instance& receiver = Instance::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(String, method_name, arguments->NativeArgAt(1)); diff --git a/runtime/lib/profiler.cc b/runtime/lib/profiler.cc index 009a2d39717..3d6d84e61c8 100644 --- a/runtime/lib/profiler.cc +++ b/runtime/lib/profiler.cc @@ -15,19 +15,19 @@ namespace dart { // Native implementations of the profiler parts of the dart:developer library. -DEFINE_NATIVE_ENTRY(UserTag_new, 2) { +DEFINE_NATIVE_ENTRY(UserTag_new, 0, 2) { ASSERT( TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)).IsNull()); GET_NON_NULL_NATIVE_ARGUMENT(String, tag_label, arguments->NativeArgAt(1)); return UserTag::New(tag_label); } -DEFINE_NATIVE_ENTRY(UserTag_label, 1) { +DEFINE_NATIVE_ENTRY(UserTag_label, 0, 1) { const UserTag& self = UserTag::CheckedHandle(zone, arguments->NativeArgAt(0)); return self.label(); } -DEFINE_NATIVE_ENTRY(UserTag_makeCurrent, 1) { +DEFINE_NATIVE_ENTRY(UserTag_makeCurrent, 0, 1) { const UserTag& self = UserTag::CheckedHandle(zone, arguments->NativeArgAt(0)); if (FLAG_trace_intrinsified_natives) { OS::PrintErr("UserTag_makeCurrent: %s\n", self.ToCString()); @@ -37,14 +37,14 @@ DEFINE_NATIVE_ENTRY(UserTag_makeCurrent, 1) { return old.raw(); } -DEFINE_NATIVE_ENTRY(UserTag_defaultTag, 0) { +DEFINE_NATIVE_ENTRY(UserTag_defaultTag, 0, 0) { if (FLAG_trace_intrinsified_natives) { OS::PrintErr("UserTag_defaultTag\n"); } return isolate->default_tag(); } -DEFINE_NATIVE_ENTRY(Profiler_getCurrentTag, 0) { +DEFINE_NATIVE_ENTRY(Profiler_getCurrentTag, 0, 0) { if (FLAG_trace_intrinsified_natives) { OS::PrintErr("Profiler_getCurrentTag\n"); } diff --git a/runtime/lib/regexp.cc b/runtime/lib/regexp.cc index 8c25731273f..aa58c5f3eda 100644 --- a/runtime/lib/regexp.cc +++ b/runtime/lib/regexp.cc @@ -14,7 +14,7 @@ namespace dart { -DEFINE_NATIVE_ENTRY(RegExp_factory, 4) { +DEFINE_NATIVE_ENTRY(RegExp_factory, 0, 4) { ASSERT( TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)).IsNull()); GET_NON_NULL_NATIVE_ARGUMENT(String, pattern, arguments->NativeArgAt(1)); @@ -35,25 +35,25 @@ DEFINE_NATIVE_ENTRY(RegExp_factory, 4) { return RegExpEngine::CreateRegExp(thread, pattern, multi_line, ignore_case); } -DEFINE_NATIVE_ENTRY(RegExp_getPattern, 1) { +DEFINE_NATIVE_ENTRY(RegExp_getPattern, 0, 1) { const RegExp& regexp = RegExp::CheckedHandle(zone, arguments->NativeArgAt(0)); ASSERT(!regexp.IsNull()); return regexp.pattern(); } -DEFINE_NATIVE_ENTRY(RegExp_getIsMultiLine, 1) { +DEFINE_NATIVE_ENTRY(RegExp_getIsMultiLine, 0, 1) { const RegExp& regexp = RegExp::CheckedHandle(zone, arguments->NativeArgAt(0)); ASSERT(!regexp.IsNull()); return Bool::Get(regexp.is_multi_line()).raw(); } -DEFINE_NATIVE_ENTRY(RegExp_getIsCaseSensitive, 1) { +DEFINE_NATIVE_ENTRY(RegExp_getIsCaseSensitive, 0, 1) { const RegExp& regexp = RegExp::CheckedHandle(zone, arguments->NativeArgAt(0)); ASSERT(!regexp.IsNull()); return Bool::Get(!regexp.is_ignore_case()).raw(); } -DEFINE_NATIVE_ENTRY(RegExp_getGroupCount, 1) { +DEFINE_NATIVE_ENTRY(RegExp_getGroupCount, 0, 1) { const RegExp& regexp = RegExp::CheckedHandle(zone, arguments->NativeArgAt(0)); ASSERT(!regexp.IsNull()); if (regexp.is_initialized()) { @@ -87,12 +87,12 @@ static RawObject* ExecuteMatch(Zone* zone, /*sticky=*/sticky, zone); } -DEFINE_NATIVE_ENTRY(RegExp_ExecuteMatch, 3) { +DEFINE_NATIVE_ENTRY(RegExp_ExecuteMatch, 0, 3) { // This function is intrinsified. See Intrinsifier::RegExp_ExecuteMatch. return ExecuteMatch(zone, arguments, /*sticky=*/false); } -DEFINE_NATIVE_ENTRY(RegExp_ExecuteMatchSticky, 3) { +DEFINE_NATIVE_ENTRY(RegExp_ExecuteMatchSticky, 0, 3) { // This function is intrinsified. See Intrinsifier::RegExp_ExecuteMatchSticky. return ExecuteMatch(zone, arguments, /*sticky=*/true); } diff --git a/runtime/lib/simd128.cc b/runtime/lib/simd128.cc index 41f06028d9a..356853b76a3 100644 --- a/runtime/lib/simd128.cc +++ b/runtime/lib/simd128.cc @@ -18,7 +18,7 @@ static void ThrowMaskRangeException(int64_t m) { } } -DEFINE_NATIVE_ENTRY(Float32x4_fromDoubles, 5) { +DEFINE_NATIVE_ENTRY(Float32x4_fromDoubles, 0, 5) { ASSERT( TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)).IsNull()); GET_NON_NULL_NATIVE_ARGUMENT(Double, x, arguments->NativeArgAt(1)); @@ -32,7 +32,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_fromDoubles, 5) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_splat, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_splat, 0, 2) { ASSERT( TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)).IsNull()); GET_NON_NULL_NATIVE_ARGUMENT(Double, v, arguments->NativeArgAt(1)); @@ -40,25 +40,25 @@ DEFINE_NATIVE_ENTRY(Float32x4_splat, 2) { return Float32x4::New(_v, _v, _v, _v); } -DEFINE_NATIVE_ENTRY(Float32x4_zero, 1) { +DEFINE_NATIVE_ENTRY(Float32x4_zero, 0, 1) { ASSERT( TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)).IsNull()); return Float32x4::New(0.0f, 0.0f, 0.0f, 0.0f); } -DEFINE_NATIVE_ENTRY(Float32x4_fromInt32x4Bits, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_fromInt32x4Bits, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, v, arguments->NativeArgAt(1)); return Float32x4::New(v.value()); } -DEFINE_NATIVE_ENTRY(Float32x4_fromFloat64x2, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_fromFloat64x2, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, v, arguments->NativeArgAt(1)); float _x = static_cast(v.x()); float _y = static_cast(v.y()); return Float32x4::New(_x, _y, 0.0f, 0.0f); } -DEFINE_NATIVE_ENTRY(Float32x4_add, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_add, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, other, arguments->NativeArgAt(1)); float _x = self.x() + other.x(); @@ -68,7 +68,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_add, 2) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_negate, 1) { +DEFINE_NATIVE_ENTRY(Float32x4_negate, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); float _x = -self.x(); float _y = -self.y(); @@ -77,7 +77,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_negate, 1) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_sub, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_sub, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, other, arguments->NativeArgAt(1)); float _x = self.x() - other.x(); @@ -87,7 +87,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_sub, 2) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_mul, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_mul, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, other, arguments->NativeArgAt(1)); float _x = self.x() * other.x(); @@ -97,7 +97,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_mul, 2) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_div, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_div, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, other, arguments->NativeArgAt(1)); float _x = self.x() / other.x(); @@ -107,7 +107,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_div, 2) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_cmplt, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_cmplt, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, a, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, b, arguments->NativeArgAt(1)); uint32_t _x = a.x() < b.x() ? 0xFFFFFFFF : 0x0; @@ -117,7 +117,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_cmplt, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_cmplte, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_cmplte, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, a, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, b, arguments->NativeArgAt(1)); uint32_t _x = a.x() <= b.x() ? 0xFFFFFFFF : 0x0; @@ -127,7 +127,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_cmplte, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_cmpgt, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_cmpgt, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, a, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, b, arguments->NativeArgAt(1)); uint32_t _x = a.x() > b.x() ? 0xFFFFFFFF : 0x0; @@ -137,7 +137,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_cmpgt, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_cmpgte, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_cmpgte, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, a, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, b, arguments->NativeArgAt(1)); uint32_t _x = a.x() >= b.x() ? 0xFFFFFFFF : 0x0; @@ -147,7 +147,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_cmpgte, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_cmpequal, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_cmpequal, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, a, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, b, arguments->NativeArgAt(1)); uint32_t _x = a.x() == b.x() ? 0xFFFFFFFF : 0x0; @@ -157,7 +157,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_cmpequal, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_cmpnequal, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_cmpnequal, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, a, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, b, arguments->NativeArgAt(1)); uint32_t _x = a.x() != b.x() ? 0xFFFFFFFF : 0x0; @@ -167,7 +167,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_cmpnequal, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_scale, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_scale, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Double, scale, arguments->NativeArgAt(1)); float _s = static_cast(scale.value()); @@ -178,7 +178,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_scale, 2) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_abs, 1) { +DEFINE_NATIVE_ENTRY(Float32x4_abs, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); float _x = fabsf(self.x()); float _y = fabsf(self.y()); @@ -187,7 +187,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_abs, 1) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_clamp, 3) { +DEFINE_NATIVE_ENTRY(Float32x4_clamp, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, lo, arguments->NativeArgAt(1)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, hi, arguments->NativeArgAt(2)); @@ -204,31 +204,31 @@ DEFINE_NATIVE_ENTRY(Float32x4_clamp, 3) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_getX, 1) { +DEFINE_NATIVE_ENTRY(Float32x4_getX, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); double value = static_cast(self.x()); return Double::New(value); } -DEFINE_NATIVE_ENTRY(Float32x4_getY, 1) { +DEFINE_NATIVE_ENTRY(Float32x4_getY, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); double value = static_cast(self.y()); return Double::New(value); } -DEFINE_NATIVE_ENTRY(Float32x4_getZ, 1) { +DEFINE_NATIVE_ENTRY(Float32x4_getZ, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); double value = static_cast(self.z()); return Double::New(value); } -DEFINE_NATIVE_ENTRY(Float32x4_getW, 1) { +DEFINE_NATIVE_ENTRY(Float32x4_getW, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); double value = static_cast(self.w()); return Double::New(value); } -DEFINE_NATIVE_ENTRY(Float32x4_getSignMask, 1) { +DEFINE_NATIVE_ENTRY(Float32x4_getSignMask, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); uint32_t mx = (bit_cast(self.x()) & 0x80000000) >> 31; uint32_t my = (bit_cast(self.y()) & 0x80000000) >> 31; @@ -238,7 +238,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_getSignMask, 1) { return Integer::New(value); } -DEFINE_NATIVE_ENTRY(Int32x4_getSignMask, 1) { +DEFINE_NATIVE_ENTRY(Int32x4_getSignMask, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); uint32_t mx = (self.x() & 0x80000000) >> 31; uint32_t my = (self.y() & 0x80000000) >> 31; @@ -248,7 +248,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_getSignMask, 1) { return Integer::New(value); } -DEFINE_NATIVE_ENTRY(Float32x4_shuffle, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_shuffle, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, mask, arguments->NativeArgAt(1)); int64_t m = mask.AsInt64Value(); @@ -261,7 +261,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_shuffle, 2) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_shuffleMix, 3) { +DEFINE_NATIVE_ENTRY(Float32x4_shuffleMix, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, other, arguments->NativeArgAt(1)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, mask, arguments->NativeArgAt(2)); @@ -276,7 +276,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_shuffleMix, 3) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_setX, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_setX, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Double, x, arguments->NativeArgAt(1)); float _x = static_cast(x.value()); @@ -286,7 +286,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_setX, 2) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_setY, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_setY, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Double, y, arguments->NativeArgAt(1)); float _x = self.x(); @@ -296,7 +296,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_setY, 2) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_setZ, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_setZ, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Double, z, arguments->NativeArgAt(1)); float _x = self.x(); @@ -306,7 +306,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_setZ, 2) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_setW, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_setW, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Double, w, arguments->NativeArgAt(1)); float _x = self.x(); @@ -316,7 +316,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_setW, 2) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_min, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_min, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, other, arguments->NativeArgAt(1)); float _x = self.x() < other.x() ? self.x() : other.x(); @@ -326,7 +326,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_min, 2) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_max, 2) { +DEFINE_NATIVE_ENTRY(Float32x4_max, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, other, arguments->NativeArgAt(1)); float _x = self.x() > other.x() ? self.x() : other.x(); @@ -336,7 +336,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_max, 2) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_sqrt, 1) { +DEFINE_NATIVE_ENTRY(Float32x4_sqrt, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); float _x = sqrtf(self.x()); float _y = sqrtf(self.y()); @@ -345,7 +345,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_sqrt, 1) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_reciprocal, 1) { +DEFINE_NATIVE_ENTRY(Float32x4_reciprocal, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); float _x = 1.0f / self.x(); float _y = 1.0f / self.y(); @@ -354,7 +354,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_reciprocal, 1) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Float32x4_reciprocalSqrt, 1) { +DEFINE_NATIVE_ENTRY(Float32x4_reciprocalSqrt, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, self, arguments->NativeArgAt(0)); float _x = sqrtf(1.0f / self.x()); float _y = sqrtf(1.0f / self.y()); @@ -363,7 +363,7 @@ DEFINE_NATIVE_ENTRY(Float32x4_reciprocalSqrt, 1) { return Float32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_fromInts, 5) { +DEFINE_NATIVE_ENTRY(Int32x4_fromInts, 0, 5) { ASSERT( TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)).IsNull()); GET_NON_NULL_NATIVE_ARGUMENT(Integer, x, arguments->NativeArgAt(1)); @@ -377,7 +377,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_fromInts, 5) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_fromBools, 5) { +DEFINE_NATIVE_ENTRY(Int32x4_fromBools, 0, 5) { ASSERT( TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)).IsNull()); GET_NON_NULL_NATIVE_ARGUMENT(Bool, x, arguments->NativeArgAt(1)); @@ -391,12 +391,12 @@ DEFINE_NATIVE_ENTRY(Int32x4_fromBools, 5) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_fromFloat32x4Bits, 2) { +DEFINE_NATIVE_ENTRY(Int32x4_fromFloat32x4Bits, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, v, arguments->NativeArgAt(1)); return Int32x4::New(v.value()); } -DEFINE_NATIVE_ENTRY(Int32x4_or, 2) { +DEFINE_NATIVE_ENTRY(Int32x4_or, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, other, arguments->NativeArgAt(1)); int32_t _x = self.x() | other.x(); @@ -406,7 +406,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_or, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_and, 2) { +DEFINE_NATIVE_ENTRY(Int32x4_and, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, other, arguments->NativeArgAt(1)); int32_t _x = self.x() & other.x(); @@ -416,7 +416,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_and, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_xor, 2) { +DEFINE_NATIVE_ENTRY(Int32x4_xor, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, other, arguments->NativeArgAt(1)); int32_t _x = self.x() ^ other.x(); @@ -426,7 +426,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_xor, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_add, 2) { +DEFINE_NATIVE_ENTRY(Int32x4_add, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, other, arguments->NativeArgAt(1)); int32_t _x = self.x() + other.x(); @@ -436,7 +436,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_add, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_sub, 2) { +DEFINE_NATIVE_ENTRY(Int32x4_sub, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, other, arguments->NativeArgAt(1)); int32_t _x = self.x() - other.x(); @@ -446,31 +446,31 @@ DEFINE_NATIVE_ENTRY(Int32x4_sub, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_getX, 1) { +DEFINE_NATIVE_ENTRY(Int32x4_getX, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); int32_t value = self.x(); return Integer::New(value); } -DEFINE_NATIVE_ENTRY(Int32x4_getY, 1) { +DEFINE_NATIVE_ENTRY(Int32x4_getY, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); int32_t value = self.y(); return Integer::New(value); } -DEFINE_NATIVE_ENTRY(Int32x4_getZ, 1) { +DEFINE_NATIVE_ENTRY(Int32x4_getZ, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); int32_t value = self.z(); return Integer::New(value); } -DEFINE_NATIVE_ENTRY(Int32x4_getW, 1) { +DEFINE_NATIVE_ENTRY(Int32x4_getW, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); int32_t value = self.w(); return Integer::New(value); } -DEFINE_NATIVE_ENTRY(Int32x4_shuffle, 2) { +DEFINE_NATIVE_ENTRY(Int32x4_shuffle, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, mask, arguments->NativeArgAt(1)); int64_t m = mask.AsInt64Value(); @@ -483,7 +483,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_shuffle, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_shuffleMix, 3) { +DEFINE_NATIVE_ENTRY(Int32x4_shuffleMix, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, zw, arguments->NativeArgAt(1)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, mask, arguments->NativeArgAt(2)); @@ -498,7 +498,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_shuffleMix, 3) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_setX, 2) { +DEFINE_NATIVE_ENTRY(Int32x4_setX, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, x, arguments->NativeArgAt(1)); int32_t _x = static_cast(x.AsInt64Value() & 0xFFFFFFFF); @@ -508,7 +508,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_setX, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_setY, 2) { +DEFINE_NATIVE_ENTRY(Int32x4_setY, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, y, arguments->NativeArgAt(1)); int32_t _x = self.x(); @@ -518,7 +518,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_setY, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_setZ, 2) { +DEFINE_NATIVE_ENTRY(Int32x4_setZ, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, z, arguments->NativeArgAt(1)); int32_t _x = self.x(); @@ -528,7 +528,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_setZ, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_setW, 2) { +DEFINE_NATIVE_ENTRY(Int32x4_setW, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, w, arguments->NativeArgAt(1)); int32_t _x = self.x(); @@ -538,31 +538,31 @@ DEFINE_NATIVE_ENTRY(Int32x4_setW, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_getFlagX, 1) { +DEFINE_NATIVE_ENTRY(Int32x4_getFlagX, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); int32_t value = self.x(); return Bool::Get(value != 0).raw(); } -DEFINE_NATIVE_ENTRY(Int32x4_getFlagY, 1) { +DEFINE_NATIVE_ENTRY(Int32x4_getFlagY, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); int32_t value = self.y(); return Bool::Get(value != 0).raw(); } -DEFINE_NATIVE_ENTRY(Int32x4_getFlagZ, 1) { +DEFINE_NATIVE_ENTRY(Int32x4_getFlagZ, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); int32_t value = self.z(); return Bool::Get(value != 0).raw(); } -DEFINE_NATIVE_ENTRY(Int32x4_getFlagW, 1) { +DEFINE_NATIVE_ENTRY(Int32x4_getFlagW, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); int32_t value = self.w(); return Bool::Get(value != 0).raw(); } -DEFINE_NATIVE_ENTRY(Int32x4_setFlagX, 2) { +DEFINE_NATIVE_ENTRY(Int32x4_setFlagX, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Bool, flagX, arguments->NativeArgAt(1)); int32_t _x = self.x(); @@ -573,7 +573,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_setFlagX, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_setFlagY, 2) { +DEFINE_NATIVE_ENTRY(Int32x4_setFlagY, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Bool, flagY, arguments->NativeArgAt(1)); int32_t _x = self.x(); @@ -584,7 +584,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_setFlagY, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_setFlagZ, 2) { +DEFINE_NATIVE_ENTRY(Int32x4_setFlagZ, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Bool, flagZ, arguments->NativeArgAt(1)); int32_t _x = self.x(); @@ -595,7 +595,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_setFlagZ, 2) { return Int32x4::New(_x, _y, _z, _w); } -DEFINE_NATIVE_ENTRY(Int32x4_setFlagW, 2) { +DEFINE_NATIVE_ENTRY(Int32x4_setFlagW, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Bool, flagW, arguments->NativeArgAt(1)); int32_t _x = self.x(); @@ -615,7 +615,7 @@ union float32_int32 { float32_int32(int32_t v) { u = v; } }; -DEFINE_NATIVE_ENTRY(Int32x4_select, 3) { +DEFINE_NATIVE_ENTRY(Int32x4_select, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(Int32x4, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, tv, arguments->NativeArgAt(1)); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, fv, arguments->NativeArgAt(2)); @@ -640,7 +640,7 @@ DEFINE_NATIVE_ENTRY(Int32x4_select, 3) { return Float32x4::New(tempX.f, tempY.f, tempZ.f, tempW.f); } -DEFINE_NATIVE_ENTRY(Float64x2_fromDoubles, 3) { +DEFINE_NATIVE_ENTRY(Float64x2_fromDoubles, 0, 3) { ASSERT( TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)).IsNull()); GET_NON_NULL_NATIVE_ARGUMENT(Double, x, arguments->NativeArgAt(1)); @@ -648,20 +648,20 @@ DEFINE_NATIVE_ENTRY(Float64x2_fromDoubles, 3) { return Float64x2::New(x.value(), y.value()); } -DEFINE_NATIVE_ENTRY(Float64x2_splat, 2) { +DEFINE_NATIVE_ENTRY(Float64x2_splat, 0, 2) { ASSERT( TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)).IsNull()); GET_NON_NULL_NATIVE_ARGUMENT(Double, v, arguments->NativeArgAt(1)); return Float64x2::New(v.value(), v.value()); } -DEFINE_NATIVE_ENTRY(Float64x2_zero, 1) { +DEFINE_NATIVE_ENTRY(Float64x2_zero, 0, 1) { ASSERT( TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)).IsNull()); return Float64x2::New(0.0, 0.0); } -DEFINE_NATIVE_ENTRY(Float64x2_fromFloat32x4, 2) { +DEFINE_NATIVE_ENTRY(Float64x2_fromFloat32x4, 0, 2) { ASSERT( TypeArguments::CheckedHandle(zone, arguments->NativeArgAt(0)).IsNull()); GET_NON_NULL_NATIVE_ARGUMENT(Float32x4, v, arguments->NativeArgAt(1)); @@ -670,7 +670,7 @@ DEFINE_NATIVE_ENTRY(Float64x2_fromFloat32x4, 2) { return Float64x2::New(_x, _y); } -DEFINE_NATIVE_ENTRY(Float64x2_add, 2) { +DEFINE_NATIVE_ENTRY(Float64x2_add, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, other, arguments->NativeArgAt(1)); double _x = self.x() + other.x(); @@ -678,14 +678,14 @@ DEFINE_NATIVE_ENTRY(Float64x2_add, 2) { return Float64x2::New(_x, _y); } -DEFINE_NATIVE_ENTRY(Float64x2_negate, 1) { +DEFINE_NATIVE_ENTRY(Float64x2_negate, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); double _x = -self.x(); double _y = -self.y(); return Float64x2::New(_x, _y); } -DEFINE_NATIVE_ENTRY(Float64x2_sub, 2) { +DEFINE_NATIVE_ENTRY(Float64x2_sub, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, other, arguments->NativeArgAt(1)); double _x = self.x() - other.x(); @@ -693,7 +693,7 @@ DEFINE_NATIVE_ENTRY(Float64x2_sub, 2) { return Float64x2::New(_x, _y); } -DEFINE_NATIVE_ENTRY(Float64x2_mul, 2) { +DEFINE_NATIVE_ENTRY(Float64x2_mul, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, other, arguments->NativeArgAt(1)); double _x = self.x() * other.x(); @@ -701,7 +701,7 @@ DEFINE_NATIVE_ENTRY(Float64x2_mul, 2) { return Float64x2::New(_x, _y); } -DEFINE_NATIVE_ENTRY(Float64x2_div, 2) { +DEFINE_NATIVE_ENTRY(Float64x2_div, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, other, arguments->NativeArgAt(1)); double _x = self.x() / other.x(); @@ -709,7 +709,7 @@ DEFINE_NATIVE_ENTRY(Float64x2_div, 2) { return Float64x2::New(_x, _y); } -DEFINE_NATIVE_ENTRY(Float64x2_scale, 2) { +DEFINE_NATIVE_ENTRY(Float64x2_scale, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Double, scale, arguments->NativeArgAt(1)); double _s = scale.value(); @@ -718,14 +718,14 @@ DEFINE_NATIVE_ENTRY(Float64x2_scale, 2) { return Float64x2::New(_x, _y); } -DEFINE_NATIVE_ENTRY(Float64x2_abs, 1) { +DEFINE_NATIVE_ENTRY(Float64x2_abs, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); double _x = fabs(self.x()); double _y = fabs(self.y()); return Float64x2::New(_x, _y); } -DEFINE_NATIVE_ENTRY(Float64x2_clamp, 3) { +DEFINE_NATIVE_ENTRY(Float64x2_clamp, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, lo, arguments->NativeArgAt(1)); GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, hi, arguments->NativeArgAt(2)); @@ -738,17 +738,17 @@ DEFINE_NATIVE_ENTRY(Float64x2_clamp, 3) { return Float64x2::New(_x, _y); } -DEFINE_NATIVE_ENTRY(Float64x2_getX, 1) { +DEFINE_NATIVE_ENTRY(Float64x2_getX, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); return Double::New(self.x()); } -DEFINE_NATIVE_ENTRY(Float64x2_getY, 1) { +DEFINE_NATIVE_ENTRY(Float64x2_getY, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); return Double::New(self.y()); } -DEFINE_NATIVE_ENTRY(Float64x2_getSignMask, 1) { +DEFINE_NATIVE_ENTRY(Float64x2_getSignMask, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); uint32_t mx = (bit_cast(self.x()) & 0x8000000000000000LL) >> 63; uint32_t my = (bit_cast(self.y()) & 0x8000000000000000LL) >> 63; @@ -756,7 +756,7 @@ DEFINE_NATIVE_ENTRY(Float64x2_getSignMask, 1) { return Integer::New(value); } -DEFINE_NATIVE_ENTRY(Float64x2_setX, 2) { +DEFINE_NATIVE_ENTRY(Float64x2_setX, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Double, x, arguments->NativeArgAt(1)); double _x = x.value(); @@ -764,7 +764,7 @@ DEFINE_NATIVE_ENTRY(Float64x2_setX, 2) { return Float64x2::New(_x, _y); } -DEFINE_NATIVE_ENTRY(Float64x2_setY, 2) { +DEFINE_NATIVE_ENTRY(Float64x2_setY, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Double, y, arguments->NativeArgAt(1)); double _x = self.x(); @@ -772,7 +772,7 @@ DEFINE_NATIVE_ENTRY(Float64x2_setY, 2) { return Float64x2::New(_x, _y); } -DEFINE_NATIVE_ENTRY(Float64x2_min, 2) { +DEFINE_NATIVE_ENTRY(Float64x2_min, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, other, arguments->NativeArgAt(1)); double _x = self.x() < other.x() ? self.x() : other.x(); @@ -780,7 +780,7 @@ DEFINE_NATIVE_ENTRY(Float64x2_min, 2) { return Float64x2::New(_x, _y); } -DEFINE_NATIVE_ENTRY(Float64x2_max, 2) { +DEFINE_NATIVE_ENTRY(Float64x2_max, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, other, arguments->NativeArgAt(1)); double _x = self.x() > other.x() ? self.x() : other.x(); @@ -788,7 +788,7 @@ DEFINE_NATIVE_ENTRY(Float64x2_max, 2) { return Float64x2::New(_x, _y); } -DEFINE_NATIVE_ENTRY(Float64x2_sqrt, 1) { +DEFINE_NATIVE_ENTRY(Float64x2_sqrt, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Float64x2, self, arguments->NativeArgAt(0)); double _x = sqrt(self.x()); double _y = sqrt(self.y()); diff --git a/runtime/lib/stacktrace.cc b/runtime/lib/stacktrace.cc index c84b78b588b..0a412f20e71 100644 --- a/runtime/lib/stacktrace.cc +++ b/runtime/lib/stacktrace.cc @@ -102,11 +102,11 @@ RawStackTrace* GetStackTraceForException() { return CurrentStackTrace(thread, false, 0); } -DEFINE_NATIVE_ENTRY(StackTrace_current, 0) { +DEFINE_NATIVE_ENTRY(StackTrace_current, 0, 0) { return CurrentStackTrace(thread, false); } -DEFINE_NATIVE_ENTRY(StackTrace_asyncStackTraceHelper, 1) { +DEFINE_NATIVE_ENTRY(StackTrace_asyncStackTraceHelper, 0, 1) { if (!FLAG_causal_async_stacks) { return Object::null(); } @@ -120,12 +120,12 @@ DEFINE_NATIVE_ENTRY(StackTrace_asyncStackTraceHelper, 1) { return CurrentStackTrace(thread, true); } -DEFINE_NATIVE_ENTRY(StackTrace_clearAsyncThreadStackTrace, 0) { +DEFINE_NATIVE_ENTRY(StackTrace_clearAsyncThreadStackTrace, 0, 0) { thread->clear_async_stack_trace(); return Object::null(); } -DEFINE_NATIVE_ENTRY(StackTrace_setAsyncThreadStackTrace, 1) { +DEFINE_NATIVE_ENTRY(StackTrace_setAsyncThreadStackTrace, 0, 1) { if (!FLAG_causal_async_stacks) { return Object::null(); } diff --git a/runtime/lib/stopwatch.cc b/runtime/lib/stopwatch.cc index 8adb201649d..d569cb61249 100644 --- a/runtime/lib/stopwatch.cc +++ b/runtime/lib/stopwatch.cc @@ -9,11 +9,11 @@ namespace dart { -DEFINE_NATIVE_ENTRY(Stopwatch_now, 0) { +DEFINE_NATIVE_ENTRY(Stopwatch_now, 0, 0) { return Integer::New(OS::GetCurrentMonotonicTicks()); } -DEFINE_NATIVE_ENTRY(Stopwatch_frequency, 0) { +DEFINE_NATIVE_ENTRY(Stopwatch_frequency, 0, 0) { return Integer::New(OS::GetCurrentMonotonicFrequency()); } diff --git a/runtime/lib/string.cc b/runtime/lib/string.cc index 2aa299d5760..5592f208d96 100644 --- a/runtime/lib/string.cc +++ b/runtime/lib/string.cc @@ -16,7 +16,7 @@ namespace dart { -DEFINE_NATIVE_ENTRY(String_fromEnvironment, 3) { +DEFINE_NATIVE_ENTRY(String_fromEnvironment, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(String, name, arguments->NativeArgAt(1)); GET_NATIVE_ARGUMENT(String, default_value, arguments->NativeArgAt(2)); // Call the embedder to supply us with the environment. @@ -28,7 +28,7 @@ DEFINE_NATIVE_ENTRY(String_fromEnvironment, 3) { return default_value.raw(); } -DEFINE_NATIVE_ENTRY(StringBase_createFromCodePoints, 3) { +DEFINE_NATIVE_ENTRY(StringBase_createFromCodePoints, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, list, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, start_obj, arguments->NativeArgAt(1)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, end_obj, arguments->NativeArgAt(2)); @@ -89,7 +89,7 @@ DEFINE_NATIVE_ENTRY(StringBase_createFromCodePoints, 3) { return TwoByteString::New(utf16_len, utf32_array, array_len, Heap::kNew); } -DEFINE_NATIVE_ENTRY(StringBase_substringUnchecked, 3) { +DEFINE_NATIVE_ENTRY(StringBase_substringUnchecked, 0, 3) { const String& receiver = String::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, start_obj, arguments->NativeArgAt(1)); @@ -160,7 +160,7 @@ static bool CheckSlicesOneByte(const String& base, return true; } -DEFINE_NATIVE_ENTRY(StringBase_joinReplaceAllResult, 4) { +DEFINE_NATIVE_ENTRY(StringBase_joinReplaceAllResult, 0, 4) { const String& base = String::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(GrowableObjectArray, matches_growable, arguments->NativeArgAt(1)); @@ -245,7 +245,7 @@ DEFINE_NATIVE_ENTRY(StringBase_joinReplaceAllResult, 4) { return result.raw(); } -DEFINE_NATIVE_ENTRY(OneByteString_substringUnchecked, 3) { +DEFINE_NATIVE_ENTRY(OneByteString_substringUnchecked, 0, 3) { const String& receiver = String::CheckedHandle(zone, arguments->NativeArgAt(0)); ASSERT(receiver.IsOneByteString()); @@ -258,7 +258,7 @@ DEFINE_NATIVE_ENTRY(OneByteString_substringUnchecked, 3) { } // This is high-performance code. -DEFINE_NATIVE_ENTRY(OneByteString_splitWithCharCode, 2) { +DEFINE_NATIVE_ENTRY(OneByteString_splitWithCharCode, 0, 2) { const String& receiver = String::CheckedHandle(zone, arguments->NativeArgAt(0)); ASSERT(receiver.IsOneByteString()); @@ -286,12 +286,12 @@ DEFINE_NATIVE_ENTRY(OneByteString_splitWithCharCode, 2) { return result.raw(); } -DEFINE_NATIVE_ENTRY(OneByteString_allocate, 1) { +DEFINE_NATIVE_ENTRY(OneByteString_allocate, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Smi, length_obj, arguments->NativeArgAt(0)); return OneByteString::New(length_obj.Value(), Heap::kNew); } -DEFINE_NATIVE_ENTRY(OneByteString_allocateFromOneByteList, 3) { +DEFINE_NATIVE_ENTRY(OneByteString_allocateFromOneByteList, 0, 3) { Instance& list = Instance::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, start_obj, arguments->NativeArgAt(1)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, end_obj, arguments->NativeArgAt(2)); @@ -377,7 +377,7 @@ DEFINE_NATIVE_ENTRY(OneByteString_allocateFromOneByteList, 3) { return Object::null(); } -DEFINE_NATIVE_ENTRY(OneByteString_setAt, 3) { +DEFINE_NATIVE_ENTRY(OneByteString_setAt, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(String, receiver, arguments->NativeArgAt(0)); ASSERT(receiver.IsOneByteString()); GET_NON_NULL_NATIVE_ARGUMENT(Smi, index_obj, arguments->NativeArgAt(1)); @@ -387,7 +387,7 @@ DEFINE_NATIVE_ENTRY(OneByteString_setAt, 3) { return Object::null(); } -DEFINE_NATIVE_ENTRY(TwoByteString_allocateFromTwoByteList, 3) { +DEFINE_NATIVE_ENTRY(TwoByteString_allocateFromTwoByteList, 0, 3) { Instance& list = Instance::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, start_obj, arguments->NativeArgAt(1)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, end_obj, arguments->NativeArgAt(2)); @@ -472,7 +472,7 @@ DEFINE_NATIVE_ENTRY(TwoByteString_allocateFromTwoByteList, 3) { return Object::null(); } -DEFINE_NATIVE_ENTRY(String_getHashCode, 1) { +DEFINE_NATIVE_ENTRY(String_getHashCode, 0, 1) { const String& receiver = String::CheckedHandle(zone, arguments->NativeArgAt(0)); intptr_t hash_val = receiver.Hash(); @@ -481,7 +481,7 @@ DEFINE_NATIVE_ENTRY(String_getHashCode, 1) { return Smi::New(hash_val); } -DEFINE_NATIVE_ENTRY(String_getLength, 1) { +DEFINE_NATIVE_ENTRY(String_getLength, 0, 1) { const String& receiver = String::CheckedHandle(zone, arguments->NativeArgAt(0)); return Smi::New(receiver.Length()); @@ -500,7 +500,7 @@ static uint16_t StringValueAt(const String& str, const Integer& index) { return 0; } -DEFINE_NATIVE_ENTRY(String_charAt, 2) { +DEFINE_NATIVE_ENTRY(String_charAt, 0, 2) { const String& receiver = String::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, index, arguments->NativeArgAt(1)); @@ -509,7 +509,7 @@ DEFINE_NATIVE_ENTRY(String_charAt, 2) { } // Returns the 16-bit UTF-16 code unit at the given index. -DEFINE_NATIVE_ENTRY(String_codeUnitAt, 2) { +DEFINE_NATIVE_ENTRY(String_codeUnitAt, 0, 2) { const String& receiver = String::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Integer, index, arguments->NativeArgAt(1)); @@ -517,28 +517,28 @@ DEFINE_NATIVE_ENTRY(String_codeUnitAt, 2) { return Smi::New(static_cast(value)); } -DEFINE_NATIVE_ENTRY(String_concat, 2) { +DEFINE_NATIVE_ENTRY(String_concat, 0, 2) { const String& receiver = String::CheckedHandle(zone, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(String, b, arguments->NativeArgAt(1)); return String::Concat(receiver, b); } -DEFINE_NATIVE_ENTRY(String_toLowerCase, 1) { +DEFINE_NATIVE_ENTRY(String_toLowerCase, 0, 1) { const String& receiver = String::CheckedHandle(zone, arguments->NativeArgAt(0)); ASSERT(!receiver.IsNull()); return String::ToLowerCase(receiver); } -DEFINE_NATIVE_ENTRY(String_toUpperCase, 1) { +DEFINE_NATIVE_ENTRY(String_toUpperCase, 0, 1) { const String& receiver = String::CheckedHandle(zone, arguments->NativeArgAt(0)); ASSERT(!receiver.IsNull()); return String::ToUpperCase(receiver); } -DEFINE_NATIVE_ENTRY(String_concatRange, 3) { +DEFINE_NATIVE_ENTRY(String_concatRange, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, argument, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, start, arguments->NativeArgAt(1)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, end, arguments->NativeArgAt(2)); @@ -573,7 +573,7 @@ DEFINE_NATIVE_ENTRY(String_concatRange, 3) { return String::ConcatAllRange(strings, start_ix, end_ix, Heap::kNew); } -DEFINE_NATIVE_ENTRY(StringBuffer_createStringFromUint16Array, 3) { +DEFINE_NATIVE_ENTRY(StringBuffer_createStringFromUint16Array, 0, 3) { GET_NON_NULL_NATIVE_ARGUMENT(TypedData, codeUnits, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(1)); GET_NON_NULL_NATIVE_ARGUMENT(Bool, isLatin1, arguments->NativeArgAt(2)); diff --git a/runtime/lib/timeline.cc b/runtime/lib/timeline.cc index 5fb597bb1d2..3e68d996fc8 100644 --- a/runtime/lib/timeline.cc +++ b/runtime/lib/timeline.cc @@ -15,7 +15,7 @@ namespace dart { // Native implementations for the dart:developer library. -DEFINE_NATIVE_ENTRY(Timeline_isDartStreamEnabled, 0) { +DEFINE_NATIVE_ENTRY(Timeline_isDartStreamEnabled, 0, 0) { #ifndef PRODUCT if (!FLAG_support_timeline) { return Bool::False().raw(); @@ -27,7 +27,7 @@ DEFINE_NATIVE_ENTRY(Timeline_isDartStreamEnabled, 0) { return Bool::False().raw(); } -DEFINE_NATIVE_ENTRY(Timeline_getNextAsyncId, 0) { +DEFINE_NATIVE_ENTRY(Timeline_getNextAsyncId, 0, 0) { if (!FLAG_support_timeline) { return Integer::New(0); } @@ -38,15 +38,15 @@ DEFINE_NATIVE_ENTRY(Timeline_getNextAsyncId, 0) { return Integer::New(recorder->GetNextAsyncId()); } -DEFINE_NATIVE_ENTRY(Timeline_getTraceClock, 0) { +DEFINE_NATIVE_ENTRY(Timeline_getTraceClock, 0, 0) { return Integer::New(OS::GetCurrentMonotonicMicros(), Heap::kNew); } -DEFINE_NATIVE_ENTRY(Timeline_getThreadCpuClock, 0) { +DEFINE_NATIVE_ENTRY(Timeline_getThreadCpuClock, 0, 0) { return Integer::New(OS::GetCurrentThreadCPUMicros(), Heap::kNew); } -DEFINE_NATIVE_ENTRY(Timeline_reportTaskEvent, 6) { +DEFINE_NATIVE_ENTRY(Timeline_reportTaskEvent, 0, 6) { #ifndef PRODUCT if (!FLAG_support_timeline) { return Object::null(); @@ -76,7 +76,7 @@ DEFINE_NATIVE_ENTRY(Timeline_reportTaskEvent, 6) { return Object::null(); } -DEFINE_NATIVE_ENTRY(Timeline_reportCompleteEvent, 5) { +DEFINE_NATIVE_ENTRY(Timeline_reportCompleteEvent, 0, 5) { #ifndef PRODUCT if (!FLAG_support_timeline) { return Object::null(); @@ -105,7 +105,7 @@ DEFINE_NATIVE_ENTRY(Timeline_reportCompleteEvent, 5) { return Object::null(); } -DEFINE_NATIVE_ENTRY(Timeline_reportFlowEvent, 7) { +DEFINE_NATIVE_ENTRY(Timeline_reportFlowEvent, 0, 7) { #ifndef PRODUCT if (!FLAG_support_timeline) { return Object::null(); @@ -137,7 +137,7 @@ DEFINE_NATIVE_ENTRY(Timeline_reportFlowEvent, 7) { return Object::null(); } -DEFINE_NATIVE_ENTRY(Timeline_reportInstantEvent, 4) { +DEFINE_NATIVE_ENTRY(Timeline_reportInstantEvent, 0, 4) { #ifndef PRODUCT if (!FLAG_support_timeline) { return Object::null(); diff --git a/runtime/lib/typed_data.cc b/runtime/lib/typed_data.cc index 36e480a0c79..4a373fc2ff7 100644 --- a/runtime/lib/typed_data.cc +++ b/runtime/lib/typed_data.cc @@ -37,7 +37,7 @@ static void LengthCheck(intptr_t len, intptr_t max) { } } -DEFINE_NATIVE_ENTRY(TypedData_length, 1) { +DEFINE_NATIVE_ENTRY(TypedData_length, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, instance, arguments->NativeArgAt(0)); if (instance.IsTypedData()) { const TypedData& array = TypedData::Cast(instance); @@ -105,7 +105,7 @@ static bool IsUint8(intptr_t cid) { } } -DEFINE_NATIVE_ENTRY(TypedData_setRange, 7) { +DEFINE_NATIVE_ENTRY(TypedData_setRange, 0, 7) { const Instance& dst = Instance::CheckedHandle(zone, arguments->NativeArgAt(0)); const Smi& dst_start = Smi::CheckedHandle(zone, arguments->NativeArgAt(1)); @@ -158,7 +158,7 @@ DEFINE_NATIVE_ENTRY(TypedData_setRange, 7) { // // Argument 0 is type arguments and is ignored. #define TYPED_DATA_NEW(name) \ - DEFINE_NATIVE_ENTRY(TypedData_##name##_new, 2) { \ + DEFINE_NATIVE_ENTRY(TypedData_##name##_new, 0, 2) { \ GET_NON_NULL_NATIVE_ARGUMENT(Smi, length, arguments->NativeArgAt(1)); \ intptr_t cid = kTypedData##name##Cid; \ intptr_t len = length.Value(); \ @@ -172,7 +172,7 @@ DEFINE_NATIVE_ENTRY(TypedData_setRange, 7) { CLASS_LIST_TYPED_DATA(TYPED_DATA_NEW_NATIVE) #define TYPED_DATA_GETTER(getter, object, ctor, access_size) \ - DEFINE_NATIVE_ENTRY(TypedData_##getter, 2) { \ + DEFINE_NATIVE_ENTRY(TypedData_##getter, 0, 2) { \ GET_NON_NULL_NATIVE_ARGUMENT(Instance, instance, \ arguments->NativeArgAt(0)); \ GET_NON_NULL_NATIVE_ARGUMENT(Smi, offsetInBytes, \ @@ -197,7 +197,7 @@ CLASS_LIST_TYPED_DATA(TYPED_DATA_NEW_NATIVE) #define TYPED_DATA_SETTER(setter, object, get_object_value, access_size, \ access_type) \ - DEFINE_NATIVE_ENTRY(TypedData_##setter, 3) { \ + DEFINE_NATIVE_ENTRY(TypedData_##setter, 0, 3) { \ GET_NON_NULL_NATIVE_ARGUMENT(Instance, instance, \ arguments->NativeArgAt(0)); \ GET_NON_NULL_NATIVE_ARGUMENT(Smi, offsetInBytes, \ diff --git a/runtime/lib/uri.cc b/runtime/lib/uri.cc index 2f5dba116ef..4f1ef814294 100644 --- a/runtime/lib/uri.cc +++ b/runtime/lib/uri.cc @@ -8,7 +8,7 @@ namespace dart { -DEFINE_NATIVE_ENTRY(Uri_isWindowsPlatform, 0) { +DEFINE_NATIVE_ENTRY(Uri_isWindowsPlatform, 0, 0) { #if defined(HOST_OS_WINDOWS) return Bool::True().raw(); #else diff --git a/runtime/lib/vmservice.cc b/runtime/lib/vmservice.cc index aa87514578d..deec036dcd8 100644 --- a/runtime/lib/vmservice.cc +++ b/runtime/lib/vmservice.cc @@ -78,7 +78,7 @@ class RegisterRunningIsolatesVisitor : public IsolateVisitor { }; #endif // !PRODUCT -DEFINE_NATIVE_ENTRY(VMService_SendIsolateServiceMessage, 2) { +DEFINE_NATIVE_ENTRY(VMService_SendIsolateServiceMessage, 0, 2) { #ifndef PRODUCT if (!FLAG_support_service) { return Bool::Get(false).raw(); @@ -101,7 +101,7 @@ DEFINE_NATIVE_ENTRY(VMService_SendIsolateServiceMessage, 2) { #endif } -DEFINE_NATIVE_ENTRY(VMService_SendRootServiceMessage, 1) { +DEFINE_NATIVE_ENTRY(VMService_SendRootServiceMessage, 0, 1) { #ifndef PRODUCT GET_NON_NULL_NATIVE_ARGUMENT(Array, message, arguments->NativeArgAt(0)); if (FLAG_support_service) { @@ -111,7 +111,7 @@ DEFINE_NATIVE_ENTRY(VMService_SendRootServiceMessage, 1) { return Object::null(); } -DEFINE_NATIVE_ENTRY(VMService_SendObjectRootServiceMessage, 1) { +DEFINE_NATIVE_ENTRY(VMService_SendObjectRootServiceMessage, 0, 1) { #ifndef PRODUCT GET_NON_NULL_NATIVE_ARGUMENT(Array, message, arguments->NativeArgAt(0)); if (FLAG_support_service) { @@ -121,7 +121,7 @@ DEFINE_NATIVE_ENTRY(VMService_SendObjectRootServiceMessage, 1) { return Object::null(); } -DEFINE_NATIVE_ENTRY(VMService_OnStart, 0) { +DEFINE_NATIVE_ENTRY(VMService_OnStart, 0, 0) { #ifndef PRODUCT if (FLAG_trace_service) { OS::PrintErr("vm-service: Booting dart:vmservice library.\n"); @@ -141,7 +141,7 @@ DEFINE_NATIVE_ENTRY(VMService_OnStart, 0) { return Object::null(); } -DEFINE_NATIVE_ENTRY(VMService_OnExit, 0) { +DEFINE_NATIVE_ENTRY(VMService_OnExit, 0, 0) { #ifndef PRODUCT if (FLAG_trace_service) { OS::PrintErr("vm-service: processed exit message.\n"); @@ -153,7 +153,7 @@ DEFINE_NATIVE_ENTRY(VMService_OnExit, 0) { return Object::null(); } -DEFINE_NATIVE_ENTRY(VMService_OnServerAddressChange, 1) { +DEFINE_NATIVE_ENTRY(VMService_OnServerAddressChange, 0, 1) { #ifndef PRODUCT if (!FLAG_support_service) { return Object::null(); @@ -168,7 +168,7 @@ DEFINE_NATIVE_ENTRY(VMService_OnServerAddressChange, 1) { return Object::null(); } -DEFINE_NATIVE_ENTRY(VMService_ListenStream, 1) { +DEFINE_NATIVE_ENTRY(VMService_ListenStream, 0, 1) { #ifndef PRODUCT GET_NON_NULL_NATIVE_ARGUMENT(String, stream_id, arguments->NativeArgAt(0)); bool result = false; @@ -181,7 +181,7 @@ DEFINE_NATIVE_ENTRY(VMService_ListenStream, 1) { #endif } -DEFINE_NATIVE_ENTRY(VMService_CancelStream, 1) { +DEFINE_NATIVE_ENTRY(VMService_CancelStream, 0, 1) { #ifndef PRODUCT GET_NON_NULL_NATIVE_ARGUMENT(String, stream_id, arguments->NativeArgAt(0)); if (FLAG_support_service) { @@ -191,7 +191,7 @@ DEFINE_NATIVE_ENTRY(VMService_CancelStream, 1) { return Object::null(); } -DEFINE_NATIVE_ENTRY(VMService_RequestAssets, 0) { +DEFINE_NATIVE_ENTRY(VMService_RequestAssets, 0, 0) { #ifndef PRODUCT if (!FLAG_support_service) { return Object::null(); @@ -381,7 +381,7 @@ static void FilenameFinalizer(void* isolate_callback_data, #endif -DEFINE_NATIVE_ENTRY(VMService_DecodeAssets, 1) { +DEFINE_NATIVE_ENTRY(VMService_DecodeAssets, 0, 1) { #ifndef PRODUCT if (!FLAG_support_service) { return Object::null(); @@ -439,7 +439,7 @@ DEFINE_NATIVE_ENTRY(VMService_DecodeAssets, 1) { #endif } -DEFINE_NATIVE_ENTRY(VMService_spawnUriNotify, 2) { +DEFINE_NATIVE_ENTRY(VMService_spawnUriNotify, 0, 2) { #ifndef PRODUCT if (!FLAG_support_service) { return Object::null(); diff --git a/runtime/lib/weak_property.cc b/runtime/lib/weak_property.cc index 069f77d363f..8715b6d9acb 100644 --- a/runtime/lib/weak_property.cc +++ b/runtime/lib/weak_property.cc @@ -10,7 +10,7 @@ namespace dart { -DEFINE_NATIVE_ENTRY(WeakProperty_new, 2) { +DEFINE_NATIVE_ENTRY(WeakProperty_new, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(Instance, key, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Instance, value, arguments->NativeArgAt(1)); const WeakProperty& weak_property = WeakProperty::Handle(WeakProperty::New()); @@ -19,19 +19,19 @@ DEFINE_NATIVE_ENTRY(WeakProperty_new, 2) { return weak_property.raw(); } -DEFINE_NATIVE_ENTRY(WeakProperty_getKey, 1) { +DEFINE_NATIVE_ENTRY(WeakProperty_getKey, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(WeakProperty, weak_property, arguments->NativeArgAt(0)); return weak_property.key(); } -DEFINE_NATIVE_ENTRY(WeakProperty_getValue, 1) { +DEFINE_NATIVE_ENTRY(WeakProperty_getValue, 0, 1) { GET_NON_NULL_NATIVE_ARGUMENT(WeakProperty, weak_property, arguments->NativeArgAt(0)); return weak_property.value(); } -DEFINE_NATIVE_ENTRY(WeakProperty_setValue, 2) { +DEFINE_NATIVE_ENTRY(WeakProperty_setValue, 0, 2) { GET_NON_NULL_NATIVE_ARGUMENT(WeakProperty, weak_property, arguments->NativeArgAt(0)); GET_NON_NULL_NATIVE_ARGUMENT(Instance, value, arguments->NativeArgAt(1)); diff --git a/runtime/vm/native_arguments.h b/runtime/vm/native_arguments.h index 7c2a30ab08c..251740e08ad 100644 --- a/runtime/vm/native_arguments.h +++ b/runtime/vm/native_arguments.h @@ -131,11 +131,33 @@ class NativeArguments { return ArgAt(actual_index); } - RawTypeArguments* NativeTypeArgs() { + RawTypeArguments* NativeTypeArgs() const { ASSERT(ToGenericFunction()); return TypeArguments::RawCast(ArgAt(0)); } + int NativeTypeArgCount() const { + if (ToGenericFunction()) { + TypeArguments& type_args = TypeArguments::Handle(NativeTypeArgs()); + if (type_args.IsNull()) { + // null vector represents infinite list of dynamics + return INT_MAX; + } + return type_args.Length(); + } + return 0; + } + + RawAbstractType* NativeTypeArgAt(int index) const { + ASSERT((index >= 0) && (index < NativeTypeArgCount())); + TypeArguments& type_args = TypeArguments::Handle(NativeTypeArgs()); + if (type_args.IsNull()) { + // null vector represents infinite list of dynamics + return Type::dynamic_type().raw(); + } + return TypeArguments::Handle(NativeTypeArgs()).TypeAt(index); + } + void SetReturn(const Object& value) const { *retval_ = value.raw(); } RawObject* ReturnValue() const { diff --git a/runtime/vm/native_entry.h b/runtime/vm/native_entry.h index 0d7a930011f..b98e2f4efe4 100644 --- a/runtime/vm/native_entry.h +++ b/runtime/vm/native_entry.h @@ -61,7 +61,7 @@ typedef void (*NativeFunctionWrapper)(Dart_NativeArguments args, #define SET_NATIVE_RETVAL(arguments, value) arguments->SetReturnUnsafe(value); #endif -#define DEFINE_NATIVE_ENTRY(name, argument_count) \ +#define DEFINE_NATIVE_ENTRY(name, type_argument_count, argument_count) \ static RawObject* DN_Helper##name(Isolate* isolate, Thread* thread, \ Zone* zone, NativeArguments* arguments); \ void NATIVE_ENTRY_FUNCTION(name)(Dart_NativeArguments args) { \ @@ -71,6 +71,8 @@ typedef void (*NativeFunctionWrapper)(Dart_NativeArguments args, /* Tell MemorySanitizer 'arguments' is initialized by generated code. */ \ MSAN_UNPOISON(arguments, sizeof(*arguments)); \ ASSERT(arguments->NativeArgCount() == argument_count); \ + /* Note: a longer type arguments vector may be passed */ \ + ASSERT(arguments->NativeTypeArgCount() >= type_argument_count); \ TRACE_NATIVE_CALL("%s", "" #name); \ { \ Thread* thread = arguments->thread(); \