Index: runtime/vm/intrinsifier_arm64.cc |
=================================================================== |
--- runtime/vm/intrinsifier_arm64.cc (revision 0) |
+++ runtime/vm/intrinsifier_arm64.cc (revision 0) |
@@ -0,0 +1,408 @@ |
+// Copyright (c) 2014, the Dart project authors. Please see the AUTHORS file |
+// for details. All rights reserved. Use of this source code is governed by a |
+// BSD-style license that can be found in the LICENSE file. |
+ |
+#include "vm/globals.h" // Needed here to get TARGET_ARCH_ARM64. |
+#if defined(TARGET_ARCH_ARM64) |
+ |
+#include "vm/intrinsifier.h" |
+ |
+#include "vm/assembler.h" |
+#include "vm/flow_graph_compiler.h" |
+#include "vm/object.h" |
+#include "vm/object_store.h" |
+#include "vm/symbols.h" |
+ |
+namespace dart { |
+ |
+#define __ assembler-> |
+ |
+void Intrinsifier::List_Allocate(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Array_getLength(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::ImmutableList_getLength(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Array_getIndexed(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::ImmutableList_getIndexed(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Array_setIndexed(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+// Allocate a GrowableObjectArray using the backing array specified. |
+// On stack: type argument (+1), data (+0). |
+void Intrinsifier::GrowableList_Allocate(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::GrowableList_getLength(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::GrowableList_getCapacity(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::GrowableList_getIndexed(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+// Set value into growable object array at specified index. |
+// On stack: growable array (+2), index (+1), value (+0). |
+void Intrinsifier::GrowableList_setIndexed(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+// Set length of growable object array. The length cannot |
+// be greater than the length of the data container. |
+// On stack: growable array (+1), length (+0). |
+void Intrinsifier::GrowableList_setLength(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+// Set data of growable object array. |
+// On stack: growable array (+1), data (+0). |
+void Intrinsifier::GrowableList_setData(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::GrowableList_add(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+// Gets the length of a TypedData. |
+void Intrinsifier::TypedData_getLength(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+#define TYPED_DATA_ALLOCATOR(clazz) \ |
+void Intrinsifier::TypedData_##clazz##_new(Assembler* assembler) { \ |
+ UNIMPLEMENTED(); \ |
+} \ |
+void Intrinsifier::TypedData_##clazz##_factory(Assembler* assembler) { \ |
+ UNIMPLEMENTED(); \ |
+} |
+CLASS_LIST_TYPED_DATA(TYPED_DATA_ALLOCATOR) |
+#undef TYPED_DATA_ALLOCATOR |
+ |
+ |
+void Intrinsifier::Integer_addFromInteger(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_add(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_subFromInteger(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_sub(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_mulFromInteger(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_mul(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+// Implementation: |
+// res = left % right; |
+// if (res < 0) { |
+// if (right < 0) { |
+// res = res - right; |
+// } else { |
+// res = res + right; |
+// } |
+// } |
+void Intrinsifier::Integer_moduloFromInteger(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_truncDivide(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_negate(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_bitAndFromInteger(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_bitAnd(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_bitOrFromInteger(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_bitOr(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_bitXorFromInteger(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_bitXor(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_shl(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_greaterThanFromInt(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_lessThan(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_greaterThan(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_lessEqualThan(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_greaterEqualThan(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+// This is called for Smi, Mint and Bigint receivers. The right argument |
+// can be Smi, Mint, Bigint or double. |
+void Intrinsifier::Integer_equalToInteger(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_equal(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Integer_sar(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Smi_bitNegate(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Smi_bitLength(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Double_greaterThan(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Double_greaterEqualThan(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Double_lessThan(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Double_equal(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Double_lessEqualThan(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Double_add(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Double_mul(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Double_sub(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Double_div(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+// Left is double right is integer (Bigint, Mint or Smi) |
+void Intrinsifier::Double_mulFromInteger(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Double_fromInteger(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Double_getIsNaN(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Double_getIsNegative(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Double_toInt(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Math_sqrt(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+// var state = ((_A * (_state[kSTATE_LO])) + _state[kSTATE_HI]) & _MASK_64; |
+// _state[kSTATE_LO] = state & _MASK_32; |
+// _state[kSTATE_HI] = state >> 32; |
+void Intrinsifier::Random_nextState(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::Object_equal(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::String_getHashCode(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::String_getLength(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::String_codeUnitAt(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::String_getIsEmpty(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::OneByteString_getHashCode(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+// Arg0: OneByteString (receiver). |
+// Arg1: Start index as Smi. |
+// Arg2: End index as Smi. |
+// The indexes must be valid. |
+void Intrinsifier::OneByteString_substringUnchecked(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::OneByteString_setAt(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::OneByteString_allocate(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+// TODO(srdjan): Add combinations (one-byte/two-byte/external strings). |
+void StringEquality(Assembler* assembler, intptr_t string_cid) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::OneByteString_equality(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+void Intrinsifier::TwoByteString_equality(Assembler* assembler) { |
+ UNIMPLEMENTED(); |
+} |
+ |
+ |
+} // namespace dart |
+ |
+#endif // defined TARGET_ARCH_ARM64 |