Index: src/x64/full-codegen-x64.cc |
diff --git a/src/x64/full-codegen-x64.cc b/src/x64/full-codegen-x64.cc |
index 1bcbdfe59999528f1693f2395f0edec2906ea7b4..7e8ae79c9274c0a071b0abaff3243f0630012a34 100644 |
--- a/src/x64/full-codegen-x64.cc |
+++ b/src/x64/full-codegen-x64.cc |
@@ -2567,6 +2567,17 @@ void FullCodeGenerator::EmitClassDefineProperties(ClassLiteral* lit, |
// constructor |
__ CallRuntime(Runtime::kToFastProperties, 1); |
+ |
+ if (is_strong(language_mode())) { |
+ __ movp(scratch, |
+ FieldOperand(rax, JSFunction::kPrototypeOrInitialMapOffset)); |
+ __ Push(rax); |
+ __ Push(scratch); |
+ __ CallRuntime(Runtime::kObjectFreeze, 1); |
+ // TODO(conradw): It would be more efficient to define the properties with |
+ // the right attributes the first time round. |
+ __ CallRuntime(Runtime::kObjectFreeze, 1); |
+ } |
} |