Commit b4e0375e authored by ricow@chromium.org's avatar ricow@chromium.org

Added sqrt and pow for arm and x64 - to fix build failures.

Review URL: http://codereview.chromium.org/669272

git-svn-id: http://v8.googlecode.com/svn/branches/bleeding_edge@4055 ce2b1a6d-e550-0410-aec6-3dcde31c8c00
parent b60eba5f
......@@ -3324,7 +3324,7 @@ void CodeGenerator::GenerateIsNonNegativeSmi(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));
......@@ -3332,6 +3332,16 @@ void CodeGenerator::GeneratePow(ZoneList<Expression*>* args) {
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.
......
......@@ -397,12 +397,15 @@ class CodeGenerator: public AstVisitor {
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,
......
......@@ -292,7 +292,12 @@ void CodeGenerator::GenerateIsNonNegativeSmi(ZoneList<Expression*>* args) {
}
void CodeGenerator::GeneratePow(ZoneList<Expression*>* args) {
void CodeGenerator::GenerateMathPow(ZoneList<Expression*>* args) {
UNIMPLEMENTED_MIPS();
}
void CodeGenerator::GenerateMathSqrt(ZoneList<Expression*>* args) {
UNIMPLEMENTED_MIPS();
}
......
......@@ -247,7 +247,10 @@ class CodeGenerator: public AstVisitor {
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);
......
......@@ -3933,7 +3933,7 @@ void CodeGenerator::GenerateIsNonNegativeSmi(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));
......@@ -3942,6 +3942,15 @@ void CodeGenerator::GeneratePow(ZoneList<Expression*>* args) {
}
// 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));
......
......@@ -576,12 +576,15 @@ class CodeGenerator: public AstVisitor {
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,
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment