Index: src/ic/s390/handler-compiler-s390.cc |
diff --git a/src/ic/s390/handler-compiler-s390.cc b/src/ic/s390/handler-compiler-s390.cc |
index d3a63eb48a03a4067839c2d25a5e2d33c73a22b8..72658ec1d1f56a6222d53eba2a00bfdfaa1b03a3 100644 |
--- a/src/ic/s390/handler-compiler-s390.cc |
+++ b/src/ic/s390/handler-compiler-s390.cc |
@@ -383,6 +383,31 @@ void NamedStoreHandlerCompiler::GenerateFieldTypeChecks(FieldType* field_type, |
} |
} |
+void PropertyHandlerCompiler::GenerateAccessCheck( |
+ Handle<WeakCell> native_context_cell, Register scratch1, Register scratch2, |
+ Label* miss, bool compare_native_contexts_only) { |
+ Label done; |
+ // Load current native context. |
+ __ LoadP(scratch1, NativeContextMemOperand()); |
+ // Load expected native context. |
+ __ LoadWeakValue(scratch2, native_context_cell, miss); |
+ __ CmpP(scratch1, scratch2); |
+ |
+ if (!compare_native_contexts_only) { |
+ __ beq(&done); |
+ |
+ // Compare security tokens of current and expected native contexts. |
+ __ LoadP(scratch1, |
+ ContextMemOperand(scratch1, Context::SECURITY_TOKEN_INDEX)); |
+ __ LoadP(scratch2, |
+ ContextMemOperand(scratch2, Context::SECURITY_TOKEN_INDEX)); |
+ __ CmpP(scratch1, scratch2); |
+ } |
+ __ bne(miss); |
+ |
+ __ bind(&done); |
+} |
+ |
Register PropertyHandlerCompiler::CheckPrototypes( |
Register object_reg, Register holder_reg, Register scratch1, |
Register scratch2, Handle<Name> name, Label* miss, |