// Generates the Math.pow method - currently just calls runtime.
-void CodeGenerator::GeneratePow(ZoneList<Expression*>* args) {
+void CodeGenerator::GenerateMathPow(ZoneList<Expression*>* args) {
ASSERT(args->length() == 2);
Load(args->at(0));
Load(args->at(1));
frame_->EmitPush(r0);
}
+
+// Generates the Math.sqrt method - currently just calls runtime.
+void CodeGenerator::GenerateMathSqrt(ZoneList<Expression*>* args) {
+ ASSERT(args->length() == 1);
+ Load(args->at(0));
+ frame_->CallRuntime(Runtime::kMath_sqrt, 1);
+ frame_->EmitPush(r0);
+}
+
+
// This should generate code that performs a charCodeAt() call or returns
// undefined in order to trigger the slow case, Runtime_StringCharCodeAt.
// It is not yet implemented on ARM, so it always goes to the slow case.
void GenerateNumberToString(ZoneList<Expression*>* args);
// Fast support for Math.pow().
- void GeneratePow(ZoneList<Expression*>* args);
+ void GenerateMathPow(ZoneList<Expression*>* args);
// Fast call to sine function.
void GenerateMathSin(ZoneList<Expression*>* args);
void GenerateMathCos(ZoneList<Expression*>* args);
+ // Fast support for Math.pow().
+ void GenerateMathSqrt(ZoneList<Expression*>* args);
+
// Simple condition analysis.
enum ConditionAnalysis {
ALWAYS_TRUE,
}
-void CodeGenerator::GeneratePow(ZoneList<Expression*>* args) {
+void CodeGenerator::GenerateMathPow(ZoneList<Expression*>* args) {
+ UNIMPLEMENTED_MIPS();
+}
+
+
+void CodeGenerator::GenerateMathSqrt(ZoneList<Expression*>* args) {
UNIMPLEMENTED_MIPS();
}
void GenerateNumberToString(ZoneList<Expression*>* args);
// Fast support for Math.pow().
- void GeneratePow(ZoneList<Expression*>* args);
+ void GenerateMathPow(ZoneList<Expression*>* args);
+ // Fast support for Math.sqrt().
+ void GenerateMathPow(ZoneList<Expression*>* args);
+
// Fast support for Math.sin and Math.cos.
inline void GenerateMathSin(ZoneList<Expression*>* args);
// Generates the Math.pow method - currently just calls runtime.
-void CodeGenerator::GeneratePow(ZoneList<Expression*>* args) {
+void CodeGenerator::GenerateMathPow(ZoneList<Expression*>* args) {
ASSERT(args->length() == 2);
Load(args->at(0));
Load(args->at(1));
}
+// Generates the Math.sqrt method - currently just calls runtime.
+void CodeGenerator::GenerateMathSqrt(ZoneList<Expression*>* args) {
+ ASSERT(args->length() == 1);
+ Load(args->at(0));
+ Result res = frame_->CallRuntime(Runtime::kMath_sqrt, 1);
+ frame_->Push(&res);
+}
+
+
void CodeGenerator::GenerateIsSmi(ZoneList<Expression*>* args) {
ASSERT(args->length() == 1);
Load(args->at(0));
void GenerateNumberToString(ZoneList<Expression*>* args);
// Fast support for Math.pow().
- void GeneratePow(ZoneList<Expression*>* args);
+ void GenerateMathPow(ZoneList<Expression*>* args);
// Fast call to math functions.
void GenerateMathSin(ZoneList<Expression*>* args);
void GenerateMathCos(ZoneList<Expression*>* args);
+ // Fast case for sqrt
+ void GenerateMathSqrt(ZoneList<Expression*>* args);
+
// Simple condition analysis.
enum ConditionAnalysis {
ALWAYS_TRUE,